Files
getDomain/domainCheck/detect/sdk_leg_env.js
2026-04-16 13:33:06 +08:00

898 lines
28 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
process_ = process;
require_ = require;
delete Buffer;
// delete process;
delete require;
delete global;
delete module;
delete exports;
delete __filename;
delete __dirname;
delete SharedArrayBuffer;
AsObj = {
// print: console.log,
print: function () { },
// print_:console.log,
}
no_print = ['Boolean','String','parseFloat','Array','Object','prepareStackTrace_'];
function watch(object, WatchName) {
const handler = {
get(target, property, receiver) {
if (
property !== 'isNaN' &&
property !== 'encodeURI' &&
property !== "Uint8Array" &&
property !== 'undefined' &&
property !== 'JSON' &&
property !== 'Number' &&
!no_print.includes(property) &&
property !== Symbol.for('nodejs.util.inspect.custom') &&
typeof property !== 'symbol'
) {
if (property === 'global') {
return undefined;
}
if (property === 'Buffer') {
return undefined;
}
if (property === 'process') {
return undefined;
}
if (WatchName === 'config_data') {
debugger
}
if (WatchName.indexOf('.prototype') != -1 && target[property] != undefined) {
return Reflect.get(target, property, receiver);
}
AsObj.print(
"方法:", "get",
"对象:", WatchName,
"属性:", property,
"属性类型:", typeof property,
"属性值:", typeof target[property] == 'object' ? "object" : target[property],
"属性值类型:", typeof target[property]
);
}
if (WatchName === 'top') {
return window;
}
return Reflect.get(target, property, receiver);
},
set(target, property, value, receiver) {
if (WatchName.indexOf('.prototype') != -1 && value != undefined) {
return Reflect.set(target, property, value, receiver);
}
AsObj.print(
"方法:", "set",
"对象:", WatchName,
"属性:", property,
"属性类型:", typeof property,
"属性值:", typeof value == 'object' ? "object" : value,
"属性值类型:", typeof target[property]
);
return Reflect.set(target, property, value, receiver);
},
// in操作 检测
has(target, property) {
AsObj.print(
"代理对象:", WatchName,
"方法:", "has",
"检查属性:", property,
"结果:", typeof target[property] == 'object' ? "object" : target[property],
);
return Reflect.has(target, property);
},
// Object.key 检测
ownKeys(target) {
AsObj.print(
"方法:", "ownKeys",
"对象:", target+''
);
return Reflect.ownKeys(target);
}
};
return new Proxy(object, handler);
}
// function watch(object, WatchName) {
// return object
// }
// 保护函数toString检测
const safeFunction = function safeFunction(func) {
//处理安全函数
Function.prototype.$call = Function.prototype.call;
const $toString = Function.toString;
const myFunction_toString_symbol = Symbol('('.concat('', ')'));
const myToString = function myToString() {
return typeof this === 'function' && this[myFunction_toString_symbol] || $toString.$call(this);
}
const set_native = function set_native(func, key, value) {
Object.defineProperty(func, key, {
"enumerable": false,
"configurable": true,
"writable": true,
"value": value
});
}
delete Function.prototype['toString'];
set_native(Function.prototype, "toString", myToString);
set_native(Function.prototype.toString, myFunction_toString_symbol, "function toString() { [native code] }");
const safe_Function = function safe_Function(func) {
set_native(func, myFunction_toString_symbol, "function" + (func.name ? " " + func.name : "") + "() { [native code] }");
}
return safe_Function(func)
}
//创建函数,并代理上
const makeFunction = function makeFunction(name) {
v_log = AsObj.print;
// 使用 Function 保留函数名
func = new Function("v_log", `
return function ${name}() {
v_log('函数${name}传参-->', arguments);
};
`)(v_log); // 传递 v_log 到动态函数
safeFunction(func);
func = watch(func,`${name}`);
func.prototype = watch(func.prototype, `${name}.prototype`);
return func;
}
!(function () {
"use strict";
const $toString = Function.toString;
const myFunction_toString_symbol = Symbol('('.concat('', ')_', (Math.random() + '').toString(36)));
const mytoString = function () {
return typeof this == 'function' && this[myFunction_toString_symbol] || $toString.call(this);
};
function set_native(func, key, value) {
Object.defineProperty(func, key, {
"enumerable": false,
"configurable": true,
"writable": true,
"value": value
})
};
delete Function.prototype['toString'];
set_native(Function.prototype, "toString", mytoString);
set_native(Function.prototype.toString, myFunction_toString_symbol, "function toString() { [native code] }");
this.func_set_native = function (func) {
set_native(func, myFunction_toString_symbol, `function ${myFunction_toString_symbol, func.name || ''}() { [native code] }`)
}
}).call(globalThis);
// 重写全局对象原型链
function setTostringAndstringTag(obj) {
Object.defineProperties(obj.prototype, {
[Symbol.toStringTag]: {
configurable: true,
value: obj.name
}
});
safeFunction(obj);
};
// 创建标签原型
function createTagProto(propObj,portotypeObj) {
let res = propObj + ' = ' + 'function ' + propObj + '() { throw new TypeError("Illegal constructor"); };\n';
res += 'setTostringAndstringTag(' + propObj + ',null);\n';
if (portotypeObj) {
for (let key in portotypeObj) {
res += propObj + '.prototype.' + portotypeObj[key] + '= function ' + portotypeObj[key] + '() {AsObj.print("'+propObj+'.prototype.' + portotypeObj[key] + '原型方法(需在实例对象上补该方法)::",arguments)};\n';
res += 'globalThis.func_set_native(' + propObj + '.prototype.' + portotypeObj[key] + ');\n';
}
}
eval(res);
}
Object.defineProperties(globalThis, {
[Symbol.toStringTag]: {
configurable: true,
value: 'Window'
}
});
for (let key in globalThis) {
if (typeof globalThis[key] === 'function') {
safeFunction(globalThis[key])
}
}
for (let key in console) {
if (typeof console[key] === 'function') {
safeFunction(console[key])
}
}
createTagProto('EventTarget',['addEventListener']);
createTagProto('WindowProperties');
createTagProto('Window');
window = globalThis;
window.__proto__ = Window.prototype;
window.__proto__.__proto__ = WindowProperties.prototype;
window.__proto__.__proto__.__proto__ = EventTarget.prototype;
Window.__proto__ = EventTarget;
Object.defineProperty(window, 'WindowProperties', {
get: function () {
return undefined;
}
})
function randoms(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
function getRandomValues(buf) {
var min = 0,
max = 255;
if (buf instanceof Uint16Array) {
max = 65535;
} else if (buf instanceof Uint32Array) {
max = 4294967295;
}
for (var element in buf) {
buf[element] = randoms(min, max);
}
return buf;
}
self = window.self = window;
frames = window.frames = window;
top = window.top = window;
parent = window.parent = window;
global = window.global = window;
Object.defineProperty(window, "global", {
configurable:false,
enumerable: true,
set: undefined,
get: function global(){
return window
}
})
Object.defineProperty(window, "top", {
configurable:false,
enumerable: true,
set: undefined,
get: function top(){
return window
}
})
Object.defineProperty(window, "self", {
configurable:false,
enumerable: true,
set: undefined,
get: function self(){
return window
}
})
Object.defineProperty(window, "parent", {
configurable:false,
enumerable: true,
set: undefined,
get: function parent(){
return window
}
})
Object.defineProperty(window, "frames", {
configurable:false,
enumerable: true,
set: undefined,
get: function frames(){
return window
}
})
innerWidth = 1536
innerHeight = 715
outerWidth = 1536
outerHeight = 824
devicePixelRatio = 1.25;
screenLeft = 0;
screenX = 0;
screenTop = 0;
screenY = 0;
opener = null;
isSecureContext = true;
crypto = {
getRandomValues:getRandomValues
};
createTagProto('DOMStringMap')
createTagProto('HTMLHeadElement',['insertBefore','removeChild'])
createTagProto('HTMLBodyElement',['addEventListener','appendChild','removeChild'])
createTagProto('HTMLHtmlElement',['getAttribute'])
createTagProto('HTMLDocument')
createTagProto('Document',['browsingTopics','appendChild','querySelector','evaluate','querySelectorAll','removeChild','requestStorageAccess','requestStorageAccessFor','hasStorageAccess','getElementsByTagName','hasPrivateToken','createElement','hasRedemptionRecord','hasFocus'])
createTagProto('Node')
document = {};
document.__proto__ = HTMLDocument.prototype;
document.__proto__.__proto__ = Document.prototype;
document.__proto__.__proto__.__proto__ = Node.prototype;
document.__proto__.__proto__.__proto__.__proto__ = EventTarget.prototype;
HTMLDocument.__proto__ = Document;
HTMLDocument.__proto__.__proto__ = Node;
HTMLDocument.__proto__.__proto__.__proto__ = EventTarget;
Document.__proto__ = Node;
Document.__proto__.__proto__ = EventTarget;
Node.__proto__ = EventTarget;
createTagProto('Plugin');
createTagProto('PluginArray');
plugins0 = {
name: 'PDF Viewer',
filename: 'internal-pdf-viewer',
description:'Portable Document Format',
length: 2,
'0': {
type: 'application/pdf',
},
'1':{
type:'text/pdf'
}
}
plugins0['0'].enabledPlugin = plugins0;
plugins0['1'].enabledPlugin = plugins0;
plugins1 = {
name: 'Chrome PDF Viewer',
filename: 'internal-pdf-viewer',
description:'Portable Document Format',
length: 2,
'0': {
type:'application/pdf'
},
'1': {
type:'text/pdf'
}
}
plugins1['0'].enabledPlugin = plugins1;
plugins1['1'].enabledPlugin = plugins1;
plugins2 = {
name: 'Chromium PDF Viewer',
filename: 'internal-pdf-viewer',
description:'Portable Document Format',
length: 2,
'0': {
type:'application/pdf'
},
'1': {
type:'text/pdf'
}
}
plugins2['0'].enabledPlugin = plugins2;
plugins2['1'].enabledPlugin = plugins2;
plugins3 = {
name: 'Microsoft Edge PDF Viewer',
filename: 'internal-pdf-viewer',
description:'Portable Document Format',
length: 2,
'0':{
type:'application/pdf'
},
'1': {
type:'text/pdf'
}
}
plugins3['0'].enabledPlugin = plugins3;
plugins3['1'].enabledPlugin = plugins3;
plugins4 = {
name: 'WebKit built-in PDF',
filename: 'internal-pdf-viewer',
description:'Portable Document Format',
length: 2,
'0': {
type:'application/pdf'
},
'1':{
type:'text/pdf'
}
}
plugins4['0'].enabledPlugin = plugins4;
plugins4['1'].enabledPlugin = plugins4;
plugins = {
length: 5,
'0': plugins0,
'1': plugins1,
'2': plugins2,
'3': plugins3,
'4': plugins4,
namedItem : function (name) {
AsObj.print('Plugin-namedItem:', name)
},
item: function (index) {
AsObj.print('Plugin-item:', index)
return watch(plugins0,'item-'+index);
},
refresh: function () {
AsObj.print('Plugin-refresh:',arguments)
},
}
plugins.__proto__ = PluginArray.prototype;
MimeTypeArray = function MimeTypeArray() {
this.length = 2;
this['0'] = {
suffixes: 'pdf',
type: 'application/pdf',
description:"Portable Document Format",
enabledPlugin: plugins0
};
this['1'] = {
suffixes: 'pdf',
type: 'text/pdf',
description:"Portable Document Format",
enabledPlugin: plugins0
};
};
MimeTypeArray.prototype.toString = function () { return '[object MimeTypeArray]'; }
MimeTypeArray.toString = function () { return 'function MimeTypeArray() { [native code] }'; }
Object.defineProperties(MimeTypeArray.prototype, { [Symbol.toStringTag]: { value: 'MimeTypeArray' } })
MimeTypeArrayc = new MimeTypeArray();
MimeTypeArrayc[Symbol.iterator] = function* () {
for (let key in this) {
yield this[key];
}
}
// 创建电池管理器对象原型
const BatteryManager = {
level: 1,
charging: true,
chargingTime: 0,
dischargingTime: null,
onchargingchange: null,
onlevelchange: null,
toString: function toString() {
return `BatteryManager {
charging: ${this.charging},
level: ${this.level},
chargingTime: ${this.chargingTime},
dischargingTime: ${this.dischargingTime}
}`
}
}
window.BatteryManager = BatteryManager;
Promise2 = {
then: function () {
return this;
},
catch: function (){},
};
createTagProto('Bluetooth');
createTagProto('Navigator');
Navigator.prototype.hardwareConcurrency = 8;
Navigator.prototype.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36';
Navigator.prototype.appVersion = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'
Navigator.prototype.appName = 'Netscape';
Navigator.prototype.appCodeName = 'Mozilla';
Navigator.prototype.vendor = 'Google Inc.';
Navigator.prototype.maxTouchPoints = 10;
Navigator.prototype.platform = 'Win32';
Navigator.prototype.adAuctionComponents = function adAuctionComponents() {
AsObj.print('adAuctionComponents:::', arguments)
}
safeFunction(Navigator.prototype.adAuctionComponents)
Navigator.prototype.runAdAuction = function runAdAuction() {
AsObj.print('runAdAuction:::', arguments)
}
safeFunction(Navigator.prototype.runAdAuction)
Navigator.prototype.canLoadAdAuctionFencedFrame = makeFunction('canLoadAdAuctionFencedFrame')
Navigator.prototype.deprecatedReplaceInURN = makeFunction('deprecatedReplaceInURN')
Navigator.prototype.deprecatedURNToURL = makeFunction('deprecatedURNToURL')
Navigator.prototype.joinAdInterestGroup = makeFunction('joinAdInterestGroup')
Navigator.prototype.leaveAdInterestGroup = makeFunction('leaveAdInterestGroup')
Navigator.prototype.updateAdInterestGroups = makeFunction('updateAdInterestGroups')
Navigator.prototype.connection = watch({
downlink: 9.1,
effectiveType: '4g',
rtt: 0,
saveData: false,
},'connection')
Navigator.prototype.language = 'zh-CN';
Navigator.prototype.languages = ["zh-CN"];
Navigator.prototype.plugins = plugins;
Navigator.prototype.webdriver = false;
Navigator.prototype.cookieEnabled = true;
Navigator.prototype.onLine = true;
Navigator.prototype.doNotTrack = null;
Navigator.prototype.bluetooth = {};
Navigator.prototype.product = 'Gecko'
Navigator.prototype.deviceMemory = 8
Navigator.prototype.mediaDevices = watch({
enumerateDevices: function enumerateDevices() {
return new Promise((resolve, reject) => {
const offer = [
{deviceId: '', kind: 'audioinput', label: '', groupId: ''},
{deviceId: '', kind: 'videoinput', label: '', groupId: ''},
{deviceId: '', kind: 'audiooutput', label: '', groupId: ''},
]
resolve(offer);
});
},
getUserMedia: function getUserMedia() {
AsObj.print('getUserMedia:::', arguments)
}
},'mediaDevices')
Navigator.prototype.storage = {
estimate: function estimate() {
AsObj.print('estimate:::', arguments)
return new Promise((resolve, reject) => {
const offer = {
usage: 0, // 1GB
quota: 2147483648, // 1GB,
usageDetails: {caches: 512, indexedDB: 2855}
};
resolve(offer);
});
}
}
Navigator.prototype.webkitPersistentStorage = watch({},'webkitPersistentStorage')
Navigator.prototype.webkitTemporaryStorage = watch({
queryUsageAndQuota: function queryUsageAndQuota() {
AsObj.print('queryUsageAndQuota:::', arguments)
return new Promise((resolve, reject) => {
const offer = {
usage: 1024 * 1024 * 1024, // 1GB
quota: 1024 * 1024 * 1024, // 1GB
};
resolve(offer);
});
}
},'webkitTemporaryStorage')
Navigator.prototype.bluetooth.__proto__ = Bluetooth.prototype;
Navigator.prototype.javaEnabled = function javaEnabled() {
return false
};
safeFunction(Navigator.prototype.javaEnabled)
Navigator.prototype.getBattery = function getBattery() {
AsObj.print('getBattery:::', arguments)
return Promise.resolve({
__proto__: BatteryManager,
// 动态参数配置(示例值)
level: 1,
charging: true,
dischargingTime: null // 2小时放电时间
})
}
safeFunction(Navigator.prototype.getBattery)
Navigator.prototype.registerProtocolHandler = function registerProtocolHandler() {
AsObj.print('registerProtocolHandler:::',arguments)
}
safeFunction(Navigator.prototype.registerProtocolHandler)
Navigator.prototype.mimeTypes = watch(MimeTypeArrayc,'mimeTypes');
Navigator.prototype.geolocation = {
getCurrentPosition: function getCurrentPosition() {
return Promise2;
}
}
Navigator.prototype.pdfViewerEnabled = true;
Navigator.prototype.doNotTrack = null;
Navigator.prototype.keyboard = watch({
getLayoutMap: function getLayoutMap() {
AsObj.print('Navigator.prototype.keyboard:', arguments)
return {
then: function () {
// arguments[0](watch({
// size: 48,
// values: function () {
// return ['k', 'g', '2', '0', 'v', 'a', '`', 'l', '\\', "'", 'w', '8', 'm', 'h', '.', '7', '1', 'p', 'd', 'f', 'o', 'q', 'c', 'n', '[', 'z', 'y', '3', '6', '5', 'x', '/', '\\', ',', '-', '4', 'b', 't', '9', 's', 'i', 'u', '=', 'j', ';', 'r', ']', 'e']
// }
// }, 'navigator.keyboard.getLayoutMap.then'))
return {
catch: function () {
arguments[0]({
message:'getLayoutMap() must be called from a top-level browsing context or allowed by the permission policy.'
})
}
}
}
}
}
},'navigator.keyboard')
Navigator.prototype.permissions = watch({
query: function query() {
arg_obj = arguments[0];
if (arg_obj.name === 'audio_capture') {
return new Promise((resolve, reject) => {
const offer = {
state: 'prompt',
onchange: null,
name:arg_obj.name
};
resolve(offer);
});
}
if (arg_obj.name === 'microphone') {
return {
then: function () {
arguments[0](watch({
state: 'denied',
onchange: null,
name: 'audio_capture'
},'permissions.query.microphone'));
return {catch:function(){}}
},
catch:function(){}
}
}
if (arg_obj.name === 'camera') {
return {
then: function () {
arguments[0](watch({
state: 'prompt',
onchange: null,
name: 'video_capture'
},'permissions.query.camera'));
return {catch:function(){}}
},
catch:function(){}
}
}
AsObj.print('permissions.query:::', arguments)
}
},'permissions')
Navigator.prototype.productSub = '20030107'
Navigator.prototype.getGamepads = function getGamepads() {
AsObj.print('getGamepads:::', arguments)
return [null,null,null,null]
}
safeFunction(Navigator.prototype.getGamepads)
Navigator.prototype.sendBeacon = makeFunction('sendBeacon')
Navigator.prototype.deprecatedRunAdAuctionEnforcesKAnonymity = false
Navigator.prototype.gpu = watch({
getPreferredCanvasFormat: function getPreferredCanvasFormat() {
AsObj.print('gpu.getPreferredCanvasFormat:', arguments)
return 'bgra8unorm'
},
wgslLanguageFeatures: watch({
size: 7,
values: function values() {
debugger
AsObj.print('wgslLanguageFeatures.values')
return ['packed_4x8_integer_dot_product', 'unrestricted_pointer_parameters', 'subgroup_uniformity', 'subgroup_id', 'pointer_composite_access', 'readonly_and_readwrite_storage_textures', 'uniform_buffer_standard_layout']
},
}, 'gpu.wgslLanguageFeatures'),
requestAdapter: function requestAdapter() {
AsObj.print('gpu.requestAdapter:', arguments)
return {
then: function () {
arguments[0](watch({
features: watch({
size: 19,
values: function () {
return ['depth32float-stencil8', 'rg11b10ufloat-renderable', 'bgra8unorm-storage', 'texture-formats-tier1', 'texture-compression-bc', 'dual-source-blending', 'core-features-and-limits', 'float32-filterable', 'indirect-first-instance', 'float32-blendable', 'depth-clip-control', 'texture-compression-bc-sliced-3d', 'timestamp-query', 'texture-formats-tier2', 'clip-distances', 'shader-f16', 'primitive-index', 'texture-component-swizzle', 'subgroups']
}
}, 'gpu.requestAdapter.features'),
info: watch({ vendor: 'intel', architecture: 'gen-11', device: '', description: '', subgroupMinSize: 16 }, 'gpu.requestAdapter.info'),
limits: watch({
maxBufferSize: 2147483648,
maxStorageBufferBindingSize:2147483644
}, 'gpu.requestAdapter.limits'),
catch:function(){}
}, 'gpu.requestAdapter'));
return {
catch: function () {
return {
then: function () {
arguments[0]()
return {catch:function(){}}
}
}
}
};
},
catch: function () {
}
}
}
},'navigator.gpu')
Navigator.prototype.userAgentData = watch({
brands:[
{
"brand": "Google Chrome",
"version": "143"
},
{
"brand": "Chromium",
"version": "143"
},
{
"brand": "Not A(Brand",
"version": "24"
}
],
mobile: false,
platform: "Windows",
getHighEntropyValues: function getHighEntropyValues() {
if (arguments[0] + '' === 'architecture,bitness,model,platformVersion,uaFullVersion,wow64') {
return new Promise((resolve, reject) => {
const offer = {
"architecture": "x86",
"bitness": "64",
"brands": [
{
"brand": "Not:A-Brand",
"version": "99"
},
{
"brand": "Google Chrome",
"version": "145"
},
{
"brand": "Chromium",
"version": "145"
}
],
"mobile": false,
"model": "",
"platform": "Windows",
"platformVersion": "10.0.0",
"uaFullVersion": "145.0.7632.117",
"wow64": false
};
resolve(offer);
});
}
AsObj.print('getHighEntropyValues:::', arguments)
}
},'userAgentData')
navigator = {};
navigator.__proto__ = Navigator.prototype;
createTagProto('Location');
location = {
"ancestorOrigins": {},
"href": "https://www.neimanmarcus.com/",
"origin": "https://www.neimanmarcus.com",
"protocol": "https:",
"host": "www.neimanmarcus.com",
"hostname": "www.neimanmarcus.com",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
};
location.__proto__ = Location.prototype;
location.toString = function toString() {
return this.href;
}
createTagProto('Screen');
Screen.prototype = Object.assign(Screen.prototype, {
availHeight: 824,
availLeft: 0,
availTop: 0,
availWidth: 1536,
colorDepth: 32,
height: 864,
isExtended: true,
onchange: null,
pixelDepth: 24,
width: 1536,
orientation: {
angle: 0,
type: "landscape-primary",
onchange: null
}
})
screen = {};
screen.__proto__ = Screen.prototype;
createTagProto('History',['replaceState']);
history = {};
history.__proto__ = History.prototype;
chrome = {
loadTimes: function loadTimes() { },
csi: function csi() { },
app: {
InstallState: { DISABLED: 'disabled', INSTALLED: 'installed', NOT_INSTALLED: 'not_installed' },
RunningState: { CANNOT_RUN: 'cannot_run', READY_TO_RUN: 'ready_to_run', RUNNING: 'running' },
getDetails:function getDetails(){},
getIsInstalled:function getIsInstalled(){},
installState:function installState(){},
isInstalled: false,
runningState: function runningState(){}
},
}
createTagProto('Storage');
local = {
};
localStorage = {
getItem: function getItem(key) {
AsObj.print("localStorage.getItem::", arguments);
if (!local[key]) {
return null;
}
return local[key];
},
setItem: function setItem(key, value) {
AsObj.print("localStorage.setItem::", arguments);
local[key] = value;
},
clear: function clear() {
local = {};
},
removeItem: function removeItem(key) {
AsObj.print("localStorage.removeItem::", arguments);
delete local[key];
}
}
localStorage.__proto__ = Storage.prototype;
sessionStorage = {
getItem: function getItem(key) {
AsObj.print("sessionStorage.getItem::", arguments);
if (!local[key]) {
return null;
}
return local[key];
},
setItem: function setItem(key, value) {
AsObj.print("sessionStorage.setItem::", arguments);
local[key] = value;
},
clear: function clear() {
local = {};
},
removeItem: function removeItem(key) {
AsObj.print("sessionStorage.removeItem::", arguments);
delete local[key];
}
}
sessionStorage.__proto__ = Storage.prototype;
// window = watch(window, 'window');
// global = watch(global, 'global');
// globalThis = watch(globalThis, 'globalThis');
// self = watch(self, 'self');
// crypto = watch(crypto, 'crypto');
// performance = watch(performance, 'performance');
// document = watch(document, 'document');
// navigator = watch(navigator, 'navigator');
// location = watch(location, 'location');
// screen = watch(screen, 'screen');
// history = watch(history, 'history');
// localStorage = watch(localStorage, 'localStorage');
// sessionStorage = watch(sessionStorage, 'sessionStorage');
// chrome = watch(chrome, 'chrome');
require_('./sdk_leg.js');
let input = '';
// 收集数据
process.stdin.on('data', chunk => {
input += chunk;
});
process.stdin.on('end', async () => {
var config_data = JSON.parse(input);
var cryptoManager = await CaptchaSDKCorecc();
var encryptData = await buildEncryptedVerifyRequestcc(config_data, cryptoManager);
console.log(JSON.stringify(encryptData));
process.exit(0);
})