specific-ai-cli 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.en.md +177 -0
- package/README.ja.md +177 -0
- package/README.ko.md +177 -0
- package/README.md +174 -2
- package/README.zh-TW.md +177 -0
- package/assets/banner.txt +3 -0
- package/dist/cli/argv.js +98 -0
- package/dist/cli/commands/auth.js +11 -0
- package/dist/cli/commands/config.js +23 -0
- package/dist/cli/commands/doctor.js +134 -0
- package/dist/cli/commands/platforms.js +24 -0
- package/dist/cli/commands/version.js +4 -0
- package/dist/cli/confirm.js +22 -0
- package/dist/cli/dispatch.js +440 -0
- package/dist/cli/help.js +223 -0
- package/dist/cli/hints.js +60 -0
- package/dist/cli/main.js +18 -0
- package/dist/cli/output.js +66 -0
- package/dist/core/auth-handlers.js +41 -0
- package/dist/core/auth-store.js +119 -0
- package/dist/core/capabilities.js +163 -0
- package/dist/core/config.js +121 -0
- package/dist/core/cookies.js +164 -0
- package/dist/core/errors.js +37 -0
- package/dist/core/files.js +89 -0
- package/dist/core/fsutil.js +52 -0
- package/dist/core/hash.js +4 -0
- package/dist/core/http.js +331 -0
- package/dist/core/image.js +280 -0
- package/dist/core/log.js +40 -0
- package/dist/core/login.js +191 -0
- package/dist/core/mp4.js +130 -0
- package/dist/core/normalize.js +207 -0
- package/dist/core/options.js +110 -0
- package/dist/core/paths.js +38 -0
- package/dist/core/pb.js +59 -0
- package/dist/core/py.js +181 -0
- package/dist/core/rand.js +131 -0
- package/dist/core/registry.js +129 -0
- package/dist/core/schemas.js +41 -0
- package/dist/core/stream.js +104 -0
- package/dist/core/toolkit.js +35 -0
- package/dist/core/vm.js +73 -0
- package/dist/core/vocab.js +157 -0
- package/dist/platforms/_shared/impaas.js +410 -0
- package/dist/platforms/bilibili/index.js +216 -0
- package/dist/platforms/bilibili/web/api.js +806 -0
- package/dist/platforms/bilibili/web/client.js +311 -0
- package/dist/platforms/bilibili/web/commands.js +783 -0
- package/dist/platforms/bilibili/web/ddddocr.js +342 -0
- package/dist/platforms/bilibili/web/gaia.js +130 -0
- package/dist/platforms/bilibili/web/geetest-manual.js +154 -0
- package/dist/platforms/bilibili/web/geetest-vision.js +232 -0
- package/dist/platforms/bilibili/web/geetest.js +450 -0
- package/dist/platforms/bilibili/web/normalize.js +234 -0
- package/dist/platforms/bilibili/web/profile.js +135 -0
- package/dist/platforms/bilibili/web/resolve.js +112 -0
- package/dist/platforms/bilibili/web/sign.js +223 -0
- package/dist/platforms/bilibili/web/upos.js +102 -0
- package/dist/platforms/douyin/index.js +142 -0
- package/dist/platforms/douyin/web/api.js +863 -0
- package/dist/platforms/douyin/web/client.js +413 -0
- package/dist/platforms/douyin/web/commands.js +712 -0
- package/dist/platforms/douyin/web/creator.js +601 -0
- package/dist/platforms/douyin/web/crypto.js +247 -0
- package/dist/platforms/douyin/web/dtrait.js +190 -0
- package/dist/platforms/douyin/web/im.js +502 -0
- package/dist/platforms/douyin/web/image.js +5 -0
- package/dist/platforms/douyin/web/live.js +225 -0
- package/dist/platforms/douyin/web/mssdk.js +148 -0
- package/dist/platforms/douyin/web/normalize.js +326 -0
- package/dist/platforms/douyin/web/passport.js +1247 -0
- package/dist/platforms/douyin/web/profile.js +221 -0
- package/dist/platforms/douyin/web/proto.js +26 -0
- package/dist/platforms/douyin/web/resolve.js +88 -0
- package/dist/platforms/douyin/web/sign.js +436 -0
- package/dist/platforms/douyin/web/tos.js +78 -0
- package/dist/platforms/index.js +17 -0
- package/dist/platforms/jd/index.js +67 -0
- package/dist/platforms/jd/web/aks.js +115 -0
- package/dist/platforms/jd/web/api.js +549 -0
- package/dist/platforms/jd/web/chat.js +132 -0
- package/dist/platforms/jd/web/client.js +470 -0
- package/dist/platforms/jd/web/commands.js +557 -0
- package/dist/platforms/jd/web/jcap/helper.js +90 -0
- package/dist/platforms/jd/web/jcap/host.js +107 -0
- package/dist/platforms/jd/web/jcap/lsd.js +300 -0
- package/dist/platforms/jd/web/jcap/solver.js +995 -0
- package/dist/platforms/jd/web/jcap.js +150 -0
- package/dist/platforms/jd/web/js.js +420 -0
- package/dist/platforms/jd/web/login.js +775 -0
- package/dist/platforms/jd/web/normalize.js +297 -0
- package/dist/platforms/jd/web/profile.js +256 -0
- package/dist/platforms/jd/web/util.js +175 -0
- package/dist/platforms/jd/web/webm.js +133 -0
- package/dist/platforms/kuaishou/index.js +98 -0
- package/dist/platforms/kuaishou/web/api.js +694 -0
- package/dist/platforms/kuaishou/web/captcha-crypto.js +134 -0
- package/dist/platforms/kuaishou/web/captcha-fp.js +180 -0
- package/dist/platforms/kuaishou/web/captcha.js +273 -0
- package/dist/platforms/kuaishou/web/client.js +487 -0
- package/dist/platforms/kuaishou/web/commands.js +863 -0
- package/dist/platforms/kuaishou/web/gap.js +144 -0
- package/dist/platforms/kuaishou/web/gdfp.js +376 -0
- package/dist/platforms/kuaishou/web/gql.js +11 -0
- package/dist/platforms/kuaishou/web/live.js +125 -0
- package/dist/platforms/kuaishou/web/normalize.js +241 -0
- package/dist/platforms/kuaishou/web/oracle.js +329 -0
- package/dist/platforms/kuaishou/web/profile.js +259 -0
- package/dist/platforms/kuaishou/web/resolve.js +84 -0
- package/dist/platforms/kuaishou/web/session.js +592 -0
- package/dist/platforms/kuaishou/web/sign.js +568 -0
- package/dist/platforms/taobao/index.js +56 -0
- package/dist/platforms/taobao/web/api.js +96 -0
- package/dist/platforms/taobao/web/client.js +102 -0
- package/dist/platforms/taobao/web/commands.js +172 -0
- package/dist/platforms/taobao/web/im.js +68 -0
- package/dist/platforms/taobao/web/normalize.js +103 -0
- package/dist/platforms/taobao/web/profile.js +85 -0
- package/dist/platforms/taobao/web/resolve.js +51 -0
- package/dist/platforms/taobao/web/sign.js +35 -0
- package/dist/platforms/tiktok/index.js +120 -0
- package/dist/platforms/tiktok/web/api.js +1234 -0
- package/dist/platforms/tiktok/web/client.js +362 -0
- package/dist/platforms/tiktok/web/commands.js +821 -0
- package/dist/platforms/tiktok/web/im.js +133 -0
- package/dist/platforms/tiktok/web/jsrun.js +126 -0
- package/dist/platforms/tiktok/web/normalize.js +286 -0
- package/dist/platforms/tiktok/web/profile.js +169 -0
- package/dist/platforms/tiktok/web/resolve.js +156 -0
- package/dist/platforms/tiktok/web/sign.js +585 -0
- package/dist/platforms/tiktok/web/upload.js +805 -0
- package/dist/platforms/tiktok/web/wire.js +490 -0
- package/dist/platforms/weibo/index.js +91 -0
- package/dist/platforms/weibo/web/api.js +206 -0
- package/dist/platforms/weibo/web/client.js +155 -0
- package/dist/platforms/weibo/web/commands.js +202 -0
- package/dist/platforms/weibo/web/normalize.js +137 -0
- package/dist/platforms/weibo/web/profile.js +246 -0
- package/dist/platforms/weibo/web/resolve.js +60 -0
- package/dist/platforms/weibo/web/sign.js +85 -0
- package/dist/platforms/x/index.js +107 -0
- package/dist/platforms/x/web/api.js +443 -0
- package/dist/platforms/x/web/article.js +212 -0
- package/dist/platforms/x/web/client.js +202 -0
- package/dist/platforms/x/web/commands.js +363 -0
- package/dist/platforms/x/web/graphql.js +108 -0
- package/dist/platforms/x/web/normalize.js +235 -0
- package/dist/platforms/x/web/profile.js +99 -0
- package/dist/platforms/x/web/resolve.js +44 -0
- package/dist/platforms/x/web/transaction.js +171 -0
- package/dist/platforms/xhs/index.js +101 -0
- package/dist/platforms/xhs/web/api.js +278 -0
- package/dist/platforms/xhs/web/client.js +540 -0
- package/dist/platforms/xhs/web/commands.js +1046 -0
- package/dist/platforms/xhs/web/creator-api.js +609 -0
- package/dist/platforms/xhs/web/creator.js +203 -0
- package/dist/platforms/xhs/web/js.js +194 -0
- package/dist/platforms/xhs/web/login.js +230 -0
- package/dist/platforms/xhs/web/normalize.js +166 -0
- package/dist/platforms/xhs/web/profile.js +127 -0
- package/dist/platforms/xhs/web/push.js +361 -0
- package/dist/platforms/xhs/web/resolve.js +69 -0
- package/dist/platforms/xhs/web/state.js +368 -0
- package/dist/platforms/xianyu/index.js +59 -0
- package/dist/platforms/xianyu/web/api.js +312 -0
- package/dist/platforms/xianyu/web/client.js +134 -0
- package/dist/platforms/xianyu/web/commands.js +305 -0
- package/dist/platforms/xianyu/web/im.js +73 -0
- package/dist/platforms/xianyu/web/normalize.js +123 -0
- package/dist/platforms/xianyu/web/profile.js +146 -0
- package/dist/platforms/xianyu/web/resolve.js +48 -0
- package/dist/platforms/xianyu/web/sign.js +79 -0
- package/package.json +77 -4
- package/static/douyin/Live.proto +194 -0
- package/static/douyin/Request.proto +89 -0
- package/static/douyin/Response.proto +46 -0
- package/static/douyin/acrawler_runtime/ac_vm.js +2 -0
- package/static/douyin/acrawler_runtime/browser_window_shape.json +1 -0
- package/static/douyin/acrawler_runtime/canvas_actual_exact.json +1 -0
- package/static/douyin/acrawler_runtime/run_ac_node.js +1005 -0
- package/static/douyin/acrawler_runtime/runner_window_keys_baseline.txt +240 -0
- package/static/douyin/challenge_profile.json +801 -0
- package/static/douyin/challenge_template_runner.js +217 -0
- package/static/douyin/dtrait_profile.json +66 -0
- package/static/douyin/mstoken_common_profile.json +1 -0
- package/static/douyin/mstoken_profile.json +214 -0
- package/static/jd/h5st5_env.js +750 -0
- package/static/jd/h5st5_lib.js +5 -0
- package/static/jd/h5st5_server.js +49 -0
- package/static/jd/jcap/env/env_core.js +512 -0
- package/static/jd/jcap/env/run.js +1307 -0
- package/static/jd/jcap/run/jcap_ujb96b.js +39 -0
- package/static/jd/package.json +4 -0
- package/static/jd/pc_tk_lib.js +1 -0
- package/static/jd/pc_tk_server.js +63 -0
- package/static/jd/summer_cryptico_runner.js +50 -0
- package/static/jd/webm/env/run.js +453 -0
- package/static/jd/webm/run/jdwebm-riskhandle.js +49 -0
- package/static/kuaishou/bundles/weapon/kwf-0.0.2.2cee19b4b7dec496.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-0-0.0.1-obfuscated.4b7f3de1ab0ddcc2.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-1-0.0.1-obfuscated.346ebdb1c78df316.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-10-0.0.1-obfuscated.a33db41897b983af.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-11-0.0.1-obfuscated.5e0a90af726d8a7e.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-12-0.0.1-obfuscated.20ea29345706ec8c.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-13-0.0.1-obfuscated.6b74e9640ff18648.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-14-0.0.1-obfuscated.551e4429d156bf66.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-15-0.0.1-obfuscated.8625b087aaba4a60.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-16-0.0.1-obfuscated.d5ffa4020f3be99a.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-17-0.0.1-obfuscated.6d13e19b22f50a80.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-18-0.0.1-obfuscated.6d31405044166289.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-19-0.0.1-obfuscated.a9a8d925942f19e4.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-2-0.0.1-obfuscated.b849a136ae4a6b3e.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-3-0.0.1-obfuscated.f9e77ebf6186e2ac.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-4-0.0.1-obfuscated.2c3c155aa52ceb0e.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-5-0.0.1-obfuscated.4e553d17691b3c5a.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-6-0.0.1-obfuscated.f73ddd3ff13e1217.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-7-0.0.1-obfuscated.1628b8729beaab7e.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-8-0.0.1-obfuscated.6da6baef7aa81fff.js +1 -0
- package/static/kuaishou/bundles/weapon/kws-9-0.0.1-obfuscated.8645d55e5323b743.js +1 -0
- package/static/kuaishou/fixtures/current_follow_script_813.network-response +2 -0
- package/static/kuaishou/fixtures/live_ws_maps.json +61 -0
- package/static/kuaishou/fixtures/live_ws_proto.json +1342 -0
- package/static/kuaishou/js/cp-kwf.js +1 -0
- package/static/kuaishou/tools/kwf_oracle.js +799 -0
- package/static/kuaishou/tools/kws_oracle.js +885 -0
- package/static/kuaishou/tools/like_token_oracle.js +70 -0
- package/static/taobao/taobao_js_20260407.js +570 -0
- package/static/tiktok/Tiktok_Request.json +597 -0
- package/static/tiktok/package.json +3 -0
- package/static/tiktok/shop_bsid/core.js +1 -0
- package/static/tiktok/shop_bsid/env_core.js +512 -0
- package/static/tiktok/shop_bsid/loader.js +1 -0
- package/static/tiktok/shop_bsid/run.js +753 -0
- package/static/tiktok/shop_bsid/sign.js +100 -0
- package/static/tiktok/shop_bsid/webmssdk.js +1 -0
- package/static/tiktok/shop_bsid/webmssdk_ex.js +1 -0
- package/static/tiktok/signing/env/env_core.js +512 -0
- package/static/tiktok/signing/env/sign.js +455 -0
- package/static/tiktok/signing/sdk_config.json +230 -0
- package/static/tiktok/signing/source/webmssdk.js +1 -0
- package/static/tiktok/signing/source/webmssdk_ex.js +1 -0
- package/static/tiktok/signing/source/webmssdk_legacy.js +1 -0
- package/static/x/graphql.json +7777 -0
- package/static/x/transaction_l1.json +12 -0
- package/static/xhs/package.json +3 -0
- package/static/xhs/xhs_core/js/b1.js +210 -0
- package/static/xhs/xhs_core/js/mns.js +340 -0
- package/static/xhs/xhs_core/js/mns_0101_keystream.json +5 -0
- package/static/xhs/xhs_core/js/mns_keystreams.json +1 -0
- package/static/xhs/xhs_core/js/sign.js +225 -0
- package/static/xhs/xhs_core/js/websectiga_cli.js +220 -0
- package/static/xhs/xhs_core/js/websectiga_env.js +512 -0
- package/static/xhs/xhs_core/js/xs_common.js +79 -0
- package/static/xhs/xhs_creator/js/profile.js +115 -0
- package/static/xhs/xhs_creator/js/rap_fingerprint_creator.json +6 -0
- package/static/xhs/xhs_creator/js/reference_profile.json +282 -0
- package/static/xhs/xhs_creator/js/xhs_creator_sign.js +29 -0
- package/static/xhs/xhs_creator/js/xhs_creator_signature.js +23 -0
- package/static/xhs/xhs_pc/js/aes_decrypt.js +22 -0
- package/static/xhs/xhs_pc/js/aes_encrypt.js +30 -0
- package/static/xhs/xhs_pc/js/b1.js +9 -0
- package/static/xhs/xhs_pc/js/deflate.js +320 -0
- package/static/xhs/xhs_pc/js/mns.js +4 -0
- package/static/xhs/xhs_pc/js/profile.js +141 -0
- package/static/xhs/xhs_pc/js/rap.js +173 -0
- package/static/xhs/xhs_pc/js/rap_cli.js +30 -0
- package/static/xhs/xhs_pc/js/rap_crypto.js +73 -0
- package/static/xhs/xhs_pc/js/rap_fingerprint_template.json +8 -0
- package/static/xhs/xhs_pc/js/reference_profile.json +262 -0
- package/static/xhs/xhs_pc/js/sign.js +6 -0
- package/static/xhs/xhs_pc/js/web_ssk.js +82 -0
- package/static/xhs/xhs_pc/js/xs_common.js +4 -0
- package/static/xianyu/et_f.js +2 -0
- package/static/xianyu/gen_tfstk.js +410 -0
- package/static/xianyu/goofish_js_version_2.js +568 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// challenge template 的 Node 补环境执行器。
|
|
2
|
+
//
|
|
3
|
+
// template 是服务端每次现下发的 77KB JS(UMD 模块 __p_ch),
|
|
4
|
+
// 浏览器执行它得到 {p_in, e_in},p_in 就是 cookie gulu_source_res 里那个字段
|
|
5
|
+
// —— 我们之前一直在用随机 hex 伪造它。
|
|
6
|
+
//
|
|
7
|
+
// 采集项 38 个(fonts/canvas/webgl/screen/navigator/matchMedia/math...),
|
|
8
|
+
// 是 FingerprintJS 那一套。这里按项目的设备档案补齐,
|
|
9
|
+
// 取值必须与 utils/fingerprint.py、dtrait 档案自洽 —— 否则几处指纹互相打架。
|
|
10
|
+
//
|
|
11
|
+
// 用法: node run_template.js <template.js> <profile.json>
|
|
12
|
+
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const crypto = require('crypto');
|
|
15
|
+
|
|
16
|
+
const templatePath = process.argv[2];
|
|
17
|
+
const profilePath = process.argv[3];
|
|
18
|
+
const P = JSON.parse(fs.readFileSync(profilePath, 'utf8'));
|
|
19
|
+
|
|
20
|
+
// ---------- 最小 DOM / BOM ----------
|
|
21
|
+
function makeCanvas() {
|
|
22
|
+
return {
|
|
23
|
+
width: 0, height: 0,
|
|
24
|
+
getContext(kind) {
|
|
25
|
+
if (kind === '2d') {
|
|
26
|
+
return {
|
|
27
|
+
canvas: this,
|
|
28
|
+
fillStyle: '', font: '', textBaseline: '',
|
|
29
|
+
rect() {}, fillRect() {}, fillText() {}, strokeText() {},
|
|
30
|
+
beginPath() {}, arc() {}, closePath() {}, fill() {}, stroke() {},
|
|
31
|
+
isPointInPath: () => true,
|
|
32
|
+
measureText: (s) => ({ width: (s || '').length * 7.5 }),
|
|
33
|
+
getImageData: (x, y, w, h) => ({ data: new Uint8ClampedArray(w * h * 4) }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// webgl
|
|
37
|
+
const GL = {
|
|
38
|
+
UNMASKED_VENDOR_WEBGL: 0x9245,
|
|
39
|
+
UNMASKED_RENDERER_WEBGL: 0x9246,
|
|
40
|
+
};
|
|
41
|
+
return {
|
|
42
|
+
canvas: this,
|
|
43
|
+
...GL,
|
|
44
|
+
getExtension: (n) => (n === 'WEBGL_debug_renderer_info' ? GL : null),
|
|
45
|
+
getParameter: (p) => {
|
|
46
|
+
if (p === GL.UNMASKED_VENDOR_WEBGL) return P.webgl_vendor;
|
|
47
|
+
if (p === GL.UNMASKED_RENDERER_WEBGL) return P.webgl_renderer;
|
|
48
|
+
return null;
|
|
49
|
+
},
|
|
50
|
+
getSupportedExtensions: () => P.webgl_extensions || [],
|
|
51
|
+
createBuffer: () => ({}), bindBuffer() {}, bufferData() {},
|
|
52
|
+
createProgram: () => ({}), createShader: () => ({}),
|
|
53
|
+
shaderSource() {}, compileShader() {}, attachShader() {},
|
|
54
|
+
linkProgram() {}, useProgram() {},
|
|
55
|
+
getAttribLocation: () => 0, getUniformLocation: () => ({}),
|
|
56
|
+
enableVertexAttribArray() {}, vertexAttribPointer() {},
|
|
57
|
+
uniform2f() {}, drawArrays() {}, viewport() {}, clearColor() {}, clear() {},
|
|
58
|
+
readPixels: (x, y, w, h, f, t, px) => { if (px) px.fill(0); },
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
toDataURL: () => P.canvas_data_url || 'data:image/png;base64,',
|
|
62
|
+
getBoundingClientRect: () => ({ x: 0, y: 0, width: 0, height: 0, top: 0, left: 0, right: 0, bottom: 0 }),
|
|
63
|
+
style: {},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const documentStub = {
|
|
68
|
+
createElement: (tag) => {
|
|
69
|
+
if (tag === 'canvas') return makeCanvas();
|
|
70
|
+
return {
|
|
71
|
+
style: {}, appendChild() {}, removeChild() {}, setAttribute() {},
|
|
72
|
+
getBoundingClientRect: () => ({ x: 0, y: 0, width: 0, height: 0, top: 0, left: 0, right: 0, bottom: 0 }),
|
|
73
|
+
offsetWidth: 0, offsetHeight: 0,
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
documentElement: { style: {}, appendChild() {}, removeChild() {} },
|
|
77
|
+
body: { appendChild() {}, removeChild() {}, style: {} },
|
|
78
|
+
head: { appendChild() {}, removeChild() {} },
|
|
79
|
+
cookie: '',
|
|
80
|
+
fonts: { check: () => true, ready: Promise.resolve(), load: () => Promise.resolve([]) },
|
|
81
|
+
write() {}, open() {}, close() {},
|
|
82
|
+
querySelector: () => null, querySelectorAll: () => [],
|
|
83
|
+
addEventListener() {}, removeEventListener() {},
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const navigatorStub = {
|
|
87
|
+
userAgent: P.ua,
|
|
88
|
+
platform: 'Win32',
|
|
89
|
+
vendor: 'Google Inc.',
|
|
90
|
+
vendorSub: '',
|
|
91
|
+
productSub: '20030107',
|
|
92
|
+
language: 'zh-CN',
|
|
93
|
+
languages: P.languages || ['zh-CN', 'zh', 'en', 'zh-TW', 'ja'],
|
|
94
|
+
hardwareConcurrency: P.cpu_core_num,
|
|
95
|
+
deviceMemory: P.device_memory,
|
|
96
|
+
maxTouchPoints: 0,
|
|
97
|
+
cookieEnabled: true,
|
|
98
|
+
webdriver: false,
|
|
99
|
+
pdfViewerEnabled: true,
|
|
100
|
+
doNotTrack: null,
|
|
101
|
+
plugins: { length: 5 },
|
|
102
|
+
mimeTypes: { length: 2 },
|
|
103
|
+
userAgentData: {
|
|
104
|
+
brands: [{ brand: 'Chromium', version: String(P.browser_major || 151) }],
|
|
105
|
+
mobile: false, platform: 'Windows',
|
|
106
|
+
getHighEntropyValues: () => Promise.resolve({ architecture: 'x86', bitness: '64' }),
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const screenStub = {
|
|
111
|
+
width: P.screen_width, height: P.screen_height,
|
|
112
|
+
availWidth: P.avail_width, availHeight: P.avail_height,
|
|
113
|
+
availTop: 0, availLeft: 0,
|
|
114
|
+
colorDepth: 24, pixelDepth: 24,
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// matchMedia:colorGamut / forcedColors / monochrome / contrast / hdr / reducedMotion
|
|
118
|
+
function matchMedia(q) {
|
|
119
|
+
const truthy = [
|
|
120
|
+
'(color-gamut: srgb)',
|
|
121
|
+
'(dynamic-range: standard)',
|
|
122
|
+
'(prefers-reduced-motion: no-preference)',
|
|
123
|
+
'(prefers-reduced-transparency: no-preference)',
|
|
124
|
+
'(prefers-contrast: no-preference)',
|
|
125
|
+
'(forced-colors: none)',
|
|
126
|
+
'(inverted-colors: none)',
|
|
127
|
+
'(min-monochrome: 0)',
|
|
128
|
+
];
|
|
129
|
+
return { matches: truthy.some((t) => q.replace(/\s+/g, ' ').includes(t.replace(/\s+/g, ' '))), media: q };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const windowStub = {
|
|
133
|
+
document: documentStub,
|
|
134
|
+
navigator: navigatorStub,
|
|
135
|
+
screen: screenStub,
|
|
136
|
+
matchMedia,
|
|
137
|
+
location: { href: 'https://www.douyin.com/', origin: 'https://www.douyin.com', protocol: 'https:', host: 'www.douyin.com' },
|
|
138
|
+
localStorage: { getItem: () => null, setItem() {}, removeItem() {}, clear() {}, length: 0 },
|
|
139
|
+
sessionStorage: { getItem: () => null, setItem() {}, removeItem() {}, clear() {}, length: 0 },
|
|
140
|
+
indexedDB: {},
|
|
141
|
+
openDatabase: undefined,
|
|
142
|
+
devicePixelRatio: 1,
|
|
143
|
+
innerWidth: P.inner_width, innerHeight: P.inner_height,
|
|
144
|
+
outerWidth: P.outer_width, outerHeight: P.outer_height,
|
|
145
|
+
performance: { now: () => Date.now() % 100000, timeOrigin: Date.now() },
|
|
146
|
+
crypto: { getRandomValues: (a) => crypto.randomFillSync(a), subtle: {} },
|
|
147
|
+
Intl,
|
|
148
|
+
addEventListener() {}, removeEventListener() {}, setTimeout, clearTimeout,
|
|
149
|
+
Promise, Date, Math, JSON, Array, Object, String, Number, Boolean, RegExp, Error, TypeError,
|
|
150
|
+
Uint8Array, Uint8ClampedArray, Int32Array, Float32Array, Float64Array, ArrayBuffer,
|
|
151
|
+
Map, Set, Symbol, parseInt, parseFloat, isNaN, encodeURIComponent, decodeURIComponent, btoa, atob,
|
|
152
|
+
};
|
|
153
|
+
windowStub.window = windowStub;
|
|
154
|
+
windowStub.self = windowStub;
|
|
155
|
+
windowStub.top = windowStub;
|
|
156
|
+
// 模块内部有 `window.console` / 裸 `console` 两种取法,两处都要有
|
|
157
|
+
windowStub.console = { log() {}, warn() {}, error() {}, info() {}, debug() {}, trace() {} };
|
|
158
|
+
|
|
159
|
+
// ---------- 装载 UMD 模块 ----------
|
|
160
|
+
const src = fs.readFileSync(templatePath, 'utf8');
|
|
161
|
+
const vm = require('vm');
|
|
162
|
+
// sandbox 用普通对象而不是 Object.create(null):模块内部会直接引用
|
|
163
|
+
// console / Date 这类全局,原型链断了会 ReferenceError。
|
|
164
|
+
const sandbox = Object.assign({}, windowStub, {
|
|
165
|
+
self: windowStub, window: windowStub, globalThis: windowStub,
|
|
166
|
+
console: { log() {}, warn() {}, error() {}, info() {}, debug() {}, trace() {} },
|
|
167
|
+
module: { exports: {} }, exports: {},
|
|
168
|
+
TextEncoder, TextDecoder, URL, URLSearchParams,
|
|
169
|
+
Function, Reflect, Proxy, WeakMap, WeakSet, BigInt,
|
|
170
|
+
Uint16Array, Int8Array, Int16Array, Uint32Array, DataView,
|
|
171
|
+
process: undefined, require: undefined, global: undefined, Buffer: undefined,
|
|
172
|
+
});
|
|
173
|
+
vm.createContext(sandbox);
|
|
174
|
+
|
|
175
|
+
try {
|
|
176
|
+
vm.runInContext(src, sandbox, { timeout: 20000 });
|
|
177
|
+
} catch (e) {
|
|
178
|
+
console.error(JSON.stringify({ ok: false, stage: 'load', error: String(e && e.stack || e) }));
|
|
179
|
+
process.exit(2);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const mod = sandbox.module.exports && Object.keys(sandbox.module.exports).length
|
|
183
|
+
? sandbox.module.exports
|
|
184
|
+
: (sandbox.__p_ch || windowStub.__p_ch);
|
|
185
|
+
|
|
186
|
+
if (!mod) {
|
|
187
|
+
console.error(JSON.stringify({ ok: false, stage: 'export', error: '拿不到 __p_ch 导出' }));
|
|
188
|
+
process.exit(3);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const entry = typeof mod === 'function' ? mod : (mod.default || mod.getData || mod.get || mod.rs);
|
|
192
|
+
if (typeof entry !== 'function') {
|
|
193
|
+
// 把导出的形状打出来,方便定位真正的入口
|
|
194
|
+
const shape = {};
|
|
195
|
+
for (const k of Object.keys(mod)) {
|
|
196
|
+
const v = mod[k];
|
|
197
|
+
shape[k] = typeof v === 'function'
|
|
198
|
+
? ('function/' + v.length + 'args')
|
|
199
|
+
: (v && typeof v === 'object' ? Object.keys(v).slice(0, 20) : typeof v);
|
|
200
|
+
}
|
|
201
|
+
console.error(JSON.stringify({
|
|
202
|
+
ok: false, stage: 'entry', error: '导出不是函数', shape,
|
|
203
|
+
}));
|
|
204
|
+
process.exit(4);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
Promise.resolve()
|
|
208
|
+
.then(() => entry())
|
|
209
|
+
.then((r) => {
|
|
210
|
+
console.log(JSON.stringify({ ok: true, result: r }));
|
|
211
|
+
// 模块内部还挂着定时器/未决 promise,不强制退出会打印无关的 rejection 噪音
|
|
212
|
+
process.exit(0);
|
|
213
|
+
})
|
|
214
|
+
.catch((e) => {
|
|
215
|
+
console.error(JSON.stringify({ ok: false, stage: 'run', error: String(e && e.stack || e) }));
|
|
216
|
+
process.exit(5);
|
|
217
|
+
});
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "Chrome 153 / douyin.com DevTools capture 2026-09-29",
|
|
3
|
+
"reserved": 0,
|
|
4
|
+
"dtrait_type": 1,
|
|
5
|
+
"version": 0,
|
|
6
|
+
"bools": {
|
|
7
|
+
"1": false,
|
|
8
|
+
"2": false,
|
|
9
|
+
"3": false,
|
|
10
|
+
"4": true,
|
|
11
|
+
"5": false,
|
|
12
|
+
"6": true,
|
|
13
|
+
"7": true,
|
|
14
|
+
"8": false,
|
|
15
|
+
"9": false,
|
|
16
|
+
"10": false
|
|
17
|
+
},
|
|
18
|
+
"render_hashes": {
|
|
19
|
+
"1": 755324578,
|
|
20
|
+
"2": 3795871487,
|
|
21
|
+
"3": 3493564185,
|
|
22
|
+
"4": 3297227221,
|
|
23
|
+
"5": 1383342405,
|
|
24
|
+
"6": 762554969,
|
|
25
|
+
"7": 2246935287,
|
|
26
|
+
"8": 2868190146,
|
|
27
|
+
"9": 2046748658,
|
|
28
|
+
"10": 500342467,
|
|
29
|
+
"13": 1189848898,
|
|
30
|
+
"20": 2347868216,
|
|
31
|
+
"21": 2719920782,
|
|
32
|
+
"22": 308954736,
|
|
33
|
+
"23": 2240922934,
|
|
34
|
+
"24": 466459917,
|
|
35
|
+
"25": 1482679892,
|
|
36
|
+
"26": 3117199483,
|
|
37
|
+
"33": 1555653270
|
|
38
|
+
},
|
|
39
|
+
"downlink": 10,
|
|
40
|
+
"effective_type": "4g",
|
|
41
|
+
"language": "zh-CN",
|
|
42
|
+
"languages": ["zh-CN", "zh", "en", "zh-TW", "ja"],
|
|
43
|
+
"str16_list": [],
|
|
44
|
+
"vendor": "Google Inc.",
|
|
45
|
+
"platform": "Win32",
|
|
46
|
+
"str17_tail": "undefined",
|
|
47
|
+
"str18_list": [],
|
|
48
|
+
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36",
|
|
49
|
+
"locale": "zh-CN",
|
|
50
|
+
"timezone": "Asia/Shanghai",
|
|
51
|
+
"notification_permission": "default",
|
|
52
|
+
"str29_head": "10",
|
|
53
|
+
"device_memory": 32,
|
|
54
|
+
"hardware_concurrency": 20,
|
|
55
|
+
"max_touch_points": 10,
|
|
56
|
+
"avail_height": 1392,
|
|
57
|
+
"avail_left": 0,
|
|
58
|
+
"avail_top": 0,
|
|
59
|
+
"avail_width": 2560,
|
|
60
|
+
"screen_height": 1440,
|
|
61
|
+
"screen_width": 2560,
|
|
62
|
+
"color_depth": 24,
|
|
63
|
+
"pixel_depth": 24,
|
|
64
|
+
"device_pixel_ratio": 1,
|
|
65
|
+
"hook_score": "1"
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"battery":{"charging":1,"chargingTime":"0","dischargingTime":"Infinity","level":100},"document":{"all":12,"characterSet":"UTF-8","compatMode":"CSS1Compat","documentMode":"undefined","images":99,"layers":4},"navigator":{"appCodeName":"Mozilla","appMinorVersion":"undefined","appName":"Netscape","appVersion":"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","bluetooth":99,"buildID":"undefined","cookieEnabled":1,"cpuClass":"undefined","credentials":99,"deviceMemory":"32","doNotTrack":"null","hardwareConcurrency":20,"language":"zh-CN","languages":"zh-CN,zh","maxTouchPoints":10,"msDoNotTrack":"undefined","oscpu":"undefined","platform":"Win32","product":"Gecko","productSub":"20030107","requestMediaKeySystemAccess":3,"storage":99,"systemLanguage":"undefined","touchEvent":2,"touchstart":2,"userLanguage":"undefined","vendor":"Google Inc.","vendorSub":"","vibrate":3,"webdriver":"false"},"plugins":{"plugin":["internal-pdf-viewer|application/pdf|pdf","internal-pdf-viewer|text/pdf|pdf","internal-pdf-viewer|application/pdf|pdf","internal-pdf-viewer|text/pdf|pdf","internal-pdf-viewer|application/pdf|pdf","internal-pdf-viewer|text/pdf|pdf","internal-pdf-viewer|application/pdf|pdf","internal-pdf-viewer|text/pdf|pdf","internal-pdf-viewer|application/pdf|pdf","internal-pdf-viewer|text/pdf|pdf"],"pv":"0"},"screen":{"innerWidth":1264,"innerHeight":905,"outerWidth":1280,"outerHeight":1000,"screenX":10,"screenY":10,"pageXOffset":0,"pageYOffset":0,"availWidth":2560,"availHeight":1392,"sizeWidth":2560,"sizeHeight":1440,"clientWidth":1264,"clientHeight":905,"colorDepth":24,"pixelDepth":24,"orientaionType":"landscape-primary","orientaionAngle":0},"webgl":{"antialias":1,"blueBits":8,"depthBits":24,"greenBits":8,"maxCombinedTextureImageUnits":32,"maxCubeMapTextureSize":16384,"maxFragmentUniformVectors":1024,"maxRenderbufferSize":16384,"maxTextureImageUnits":16,"maxTextureSize":16384,"maxVaryingVectors":30,"maxVertexAttribs":16,"maxVertexTextureImageUnits":16,"maxVertexUniformVectors":4095,"shadingLanguageVersion":"WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)","stencilBits":0,"version":"WebGL 1.0 (OpenGL ES 2.0 Chromium)","maxAnisotropy":16,"renderer":"ANGLE (NVIDIA, NVIDIA GeForce RTX 5060 Ti (0x00002D04) Direct3D11 vs_5_0 ps_5_0, D3D11)","vendor":"Google Inc. (NVIDIA)"},"window":{"ActiveXObject":4,"BluetoothUUID":3,"devicePixelRatio":1,"external":99,"Image":3,"indexDB":4,"isSecureContext":1,"localStorage":13,"location":"https://www.douyin.com/jingxuan","locationbar":99,"mozRTCPeerConnection":4,"netscape":4,"postMessage":3,"sessionStorage":13,"toolbar":99,"webkitRequestAnimationFrame":3},"envCode":1,"ubCode":14,"nWID":{"navigator":{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","vendor":"Google Inc.","navToString":["vendorSub:[object String]","productSub:[object String]","vendor:[object String]","maxTouchPoints:[object Number]","scheduling:[object Scheduling]","userActivation:[object UserActivation]","geolocation:[object Geolocation]","doNotTrack:[object Null]","webkitTemporaryStorage:[object DeprecatedStorageQuota]","webkitPersistentStorage:[object DeprecatedStorageQuota]","windowControlsOverlay:[object WindowControlsOverlay]","hardwareConcurrency:[object Number]","cookieEnabled:[object Boolean]","appCodeName:[object String]","appName:[object String]","appVersion:[object String]","platform:[object String]","product:[object String]","userAgent:[object String]","language:[object String]","languages:[object Array]","onLine:[object Boolean]","webdriver:[object Boolean]","plugins:[object PluginArray]","mimeTypes:[object MimeTypeArray]","pdfViewerEnabled:[object Boolean]","connection:[object NetworkInformation]","getGamepads:[object Function]","javaEnabled:[object Function]","sendBeacon:[object Function]","vibrate:[object Function]","constructor:[object Function]","deprecatedRunAdAuctionEnforcesKAnonymity:[object Boolean]","protectedAudience:[object ProtectedAudience]","bluetooth:[object Bluetooth]","clipboard:[object Clipboard]","credentials:[object CredentialsContainer]","keyboard:[object Keyboard]","managed:[object NavigatorManagedData]","mediaDevices:[object MediaDevices]","serviceWorker:[object ServiceWorkerContainer]","virtualKeyboard:[object VirtualKeyboard]","wakeLock:[object WakeLock]","deviceMemory:[object Number]","userAgentData:[object NavigatorUAData]","locks:[object LockManager]","storage:[object StorageManager]","gpu:[object GPU]","login:[object NavigatorLogin]","ink:[object Ink]","mediaCapabilities:[object MediaCapabilities]","permissions:[object Permissions]","devicePosture:[object DevicePosture]","hid:[object HID]","mediaSession:[object MediaSession]","presentation:[object Presentation]","serial:[object Serial]","usb:[object USB]","xr:[object XRSystem]","storageBuckets:[object StorageBucketManager]","adAuctionComponents:[object Function]","runAdAuction:[object Function]","canLoadAdAuctionFencedFrame:[object Function]","canShare:[object Function]","share:[object Function]","clearAppBadge:[object Function]","getBattery:[object Function]","getUserMedia:[object Function]","requestMIDIAccess:[object Function]","requestMediaKeySystemAccess:[object Function]","setAppBadge:[object Function]","webkitGetUserMedia:[object Function]","clearOriginJoinedAdInterestGroups:[object Function]","createAuctionNonce:[object Function]","joinAdInterestGroup:[object Function]","leaveAdInterestGroup:[object Function]","updateAdInterestGroups:[object Function]","deprecatedReplaceInURN:[object Function]","deprecatedURNToURL:[object Function]","getInstalledRelatedApps:[object Function]","getInterestGroupAdAuctionData:[object Function]","registerProtocolHandler:[object Function]","unregisterProtocolHandler:[object Function]","pemrissions:[object Object]","Symbol(Symbol.toStringTag):[object String]"],"cookieEnabled":1,"cpuClass":"undefined","oscpu":"undefined","plugins":"internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf","hardwareConcurrency":20},"canvas":{"isCanvasSupported":true,"canvasWinding":"yes","crc32":"FD2D1F57"},"screen":{"height":1440,"width":2560,"colorDepth":24,"pixelDepth":24,"availHeight":1392,"availWidth":2560,"availTop":0,"availLeft":0},"extra":{"timezone":8,"useOfSessionStorage":true,"useOfLocalStorage":true,"useOfIndexedDB":true,"forcedColors":false,"monochrome":0,"openDatabase":false,"reducedMotion":false,"architecture":255,"contrast":0,"colorGamut":"srgb"},"webgl":{"antialias":1,"blueBits":8,"depthBits":24,"greenBits":8,"maxCombinedTextureImageUnits":32,"maxCubeMapTextureSize":16384,"maxFragmentUniformVectors":1024,"maxRenderbufferSize":16384,"maxTextureImageUnits":16,"maxTextureSize":16384,"maxVaryingVectors":30,"maxVertexAttribs":16,"maxVertexTextureImageUnits":16,"maxVertexUniformVectors":4095,"shadingLanguageVersion":"WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)","stencilBits":0,"version":"WebGL 1.0 (OpenGL ES 2.0 Chromium)","maxAnisotropy":16,"renderer":"ANGLE (NVIDIA, NVIDIA GeForce RTX 5060 Ti (0x00002D04) Direct3D11 vs_5_0 ps_5_0, D3D11)","vendor":"Google Inc. (NVIDIA)"},"audio":{"audioFormats":"AAC:|HE-AAC:|video/x-ms-asf:|audio/mp4:maybe|application/vnd.ms-asf:|audio/x-matroska:maybe|audio/aacp:|audio/mpeg4-generic:|audio/MP4A-LATM:|video/quicktime:|video/x-flv:|audio/3gpp:|audio/3gpp2:|audio/AMR-NB:|audio/AMR-WB:|audio/GSM:|audio/aac:probably|audio/basic:|audio/flac:probably|audio/midi:|audio/mpeg:probably|audio/mp4; codecs=\"mp4a.40.2\":probably|audio/mp4; codecs=\"ac-3\":|audio/mp4; codecs=\"ec-3\":|audio/ogg; codecs=\"flac\":probably|audio/ogg; codecs=\"vorbis\":probably|audio/ogg; codecs=\"opus\":probably|audio/wav; codecs=\"1\":probably|audio/webm; codecs=\"vorbis\":probably|audio/webm; codecs=\"opus\":probably|audio/x-aiff:|audio/x-mpegurl:maybe|","audioContext":{"channelCount":2,"channelCountMode":"explicit","channelInterpretation":"speakers","maxChannelCount":2,"numberOfInputs":1,"numberOfOutputs":0,"sampleRate":48000,"state":"suspended"},"frequencyAnalyser":{"channelCount":2,"channelCountMode":"max","channelInterpretation":"speakers","fftSize":2048,"frequencyBinCount":1024,"maxDecibels":-30,"minDecibels":-100,"numberOfInputs":1,"numberOfOutputs":1,"smoothingTimeConstant":0.8},"audioFp":"124.04347527516074"},"video":{"videoFormats":"video/mp4; codecs=\"flac\":probably|video/mp4; codecs=\"H.264, mp3\":|video/mp4; codecs=\"H.264, aac\":|video/mpeg; codec=\"H.264\":|video/ogg; codecs=\"theora\":|video/ogg; codecs=\"opus\":probably|video/webm; codecs=\"vp9, opus\":probably|video/webm; codecs=\"vp8, vorbis\":probably|"},"math":{"acos":1.4473588658278522,"acosh":709.889355822726,"acoshPf":355.291251501643,"asin":0.12343746096704435,"asinh":0.881373587019543,"asinhPf":0.8813735870195429,"atanh":0.5493061443340549,"atanhPf":0.5493061443340549,"atan":0.4636476090008061,"sin":0.8178819121159085,"sinh":1.1752011936438014,"sinhPf":2.534342107873324,"cos":-0.8390715290095377,"cosh":1.5430806348152437,"coshPf":1.5430806348152437,"tan":-1.4214488238747245,"tanh":0.7615941559557649,"tanhPf":0.7615941559557649,"exp":2.718281828459045,"expm1":1.7182818284590453,"expm1Pf":1.718281828459045,"log1p":2.3978952727983707,"log1pPf":2.3978952727983707,"powPI":1.9275814160560206e-50},"envCode":1,"ubCode":14,"ms_accid":"","custom":"{\"version\":\"0.0.0.1\",\"fxgDid\":\"\",\"uuid\":\"5ef709c7-aae1-48ef-b664-739eebe51cea\",\"collectTime\":23}","ms_version":"0.0.0.1"},"custom":{"WebId":"{\"aa\":{\"code\":0,\"ab\":33,\"ba\":33,\"al\":34,\"alFunc\":34},\"bb\":{\"code\":0,\"me\":[],\"mept\":[\"totalJSHeapSize\",\"usedJSHeapSize\",\"jsHeapSizeLimit\"]},\"cc\":{\"code\":0,\"isT\":false,\"length\":1}}"},"wID":{"browserType":16,"jsFontsList":"1fffffff","jsv":"1.5","load":3,"magic":3,"msgType":1,"nap":"11311144241322244122","nativeLength":33,"privacyMode":0,"timestamp":"1787418668974","timezone":8,"aid":6383,"pageId":6241}}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_source": "2026-08-22 chrome-devtools 无痕上下文实录 mssdk /web/r/token",
|
|
3
|
+
"_note": "设备档案:canvas.crc32 / webgl / audio.audioFp / math 这些必须真实渲染才能得到,抓一次存下来复用。换设备要重抓。",
|
|
4
|
+
"nWID": {
|
|
5
|
+
"navigator": {
|
|
6
|
+
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36",
|
|
7
|
+
"vendor": "Google Inc.",
|
|
8
|
+
"navToString": [
|
|
9
|
+
"vendorSub:[object String]",
|
|
10
|
+
"productSub:[object String]",
|
|
11
|
+
"vendor:[object String]",
|
|
12
|
+
"maxTouchPoints:[object Number]",
|
|
13
|
+
"scheduling:[object Scheduling]",
|
|
14
|
+
"userActivation:[object UserActivation]",
|
|
15
|
+
"geolocation:[object Geolocation]",
|
|
16
|
+
"doNotTrack:[object Null]",
|
|
17
|
+
"webkitTemporaryStorage:[object DeprecatedStorageQuota]",
|
|
18
|
+
"webkitPersistentStorage:[object DeprecatedStorageQuota]",
|
|
19
|
+
"windowControlsOverlay:[object WindowControlsOverlay]",
|
|
20
|
+
"hardwareConcurrency:[object Number]",
|
|
21
|
+
"cookieEnabled:[object Boolean]",
|
|
22
|
+
"appCodeName:[object String]",
|
|
23
|
+
"appName:[object String]",
|
|
24
|
+
"appVersion:[object String]",
|
|
25
|
+
"platform:[object String]",
|
|
26
|
+
"product:[object String]",
|
|
27
|
+
"userAgent:[object String]",
|
|
28
|
+
"language:[object String]",
|
|
29
|
+
"languages:[object Array]",
|
|
30
|
+
"onLine:[object Boolean]",
|
|
31
|
+
"webdriver:[object Boolean]",
|
|
32
|
+
"plugins:[object PluginArray]",
|
|
33
|
+
"mimeTypes:[object MimeTypeArray]",
|
|
34
|
+
"pdfViewerEnabled:[object Boolean]",
|
|
35
|
+
"connection:[object NetworkInformation]",
|
|
36
|
+
"getGamepads:[object Function]",
|
|
37
|
+
"javaEnabled:[object Function]",
|
|
38
|
+
"sendBeacon:[object Function]",
|
|
39
|
+
"vibrate:[object Function]",
|
|
40
|
+
"constructor:[object Function]",
|
|
41
|
+
"deprecatedRunAdAuctionEnforcesKAnonymity:[object Boolean]",
|
|
42
|
+
"protectedAudience:[object ProtectedAudience]",
|
|
43
|
+
"bluetooth:[object Bluetooth]",
|
|
44
|
+
"clipboard:[object Clipboard]",
|
|
45
|
+
"credentials:[object CredentialsContainer]",
|
|
46
|
+
"keyboard:[object Keyboard]",
|
|
47
|
+
"managed:[object NavigatorManagedData]",
|
|
48
|
+
"mediaDevices:[object MediaDevices]",
|
|
49
|
+
"serviceWorker:[object ServiceWorkerContainer]",
|
|
50
|
+
"virtualKeyboard:[object VirtualKeyboard]",
|
|
51
|
+
"wakeLock:[object WakeLock]",
|
|
52
|
+
"deviceMemory:[object Number]",
|
|
53
|
+
"userAgentData:[object NavigatorUAData]",
|
|
54
|
+
"locks:[object LockManager]",
|
|
55
|
+
"storage:[object StorageManager]",
|
|
56
|
+
"gpu:[object GPU]",
|
|
57
|
+
"login:[object NavigatorLogin]",
|
|
58
|
+
"ink:[object Ink]",
|
|
59
|
+
"mediaCapabilities:[object MediaCapabilities]",
|
|
60
|
+
"permissions:[object Permissions]",
|
|
61
|
+
"devicePosture:[object DevicePosture]",
|
|
62
|
+
"hid:[object HID]",
|
|
63
|
+
"mediaSession:[object MediaSession]",
|
|
64
|
+
"presentation:[object Presentation]",
|
|
65
|
+
"serial:[object Serial]",
|
|
66
|
+
"usb:[object USB]",
|
|
67
|
+
"xr:[object XRSystem]",
|
|
68
|
+
"storageBuckets:[object StorageBucketManager]",
|
|
69
|
+
"adAuctionComponents:[object Function]",
|
|
70
|
+
"runAdAuction:[object Function]",
|
|
71
|
+
"canLoadAdAuctionFencedFrame:[object Function]",
|
|
72
|
+
"canShare:[object Function]",
|
|
73
|
+
"share:[object Function]",
|
|
74
|
+
"clearAppBadge:[object Function]",
|
|
75
|
+
"getBattery:[object Function]",
|
|
76
|
+
"getUserMedia:[object Function]",
|
|
77
|
+
"requestMIDIAccess:[object Function]",
|
|
78
|
+
"requestMediaKeySystemAccess:[object Function]",
|
|
79
|
+
"setAppBadge:[object Function]",
|
|
80
|
+
"webkitGetUserMedia:[object Function]",
|
|
81
|
+
"clearOriginJoinedAdInterestGroups:[object Function]",
|
|
82
|
+
"createAuctionNonce:[object Function]",
|
|
83
|
+
"joinAdInterestGroup:[object Function]",
|
|
84
|
+
"leaveAdInterestGroup:[object Function]",
|
|
85
|
+
"updateAdInterestGroups:[object Function]",
|
|
86
|
+
"deprecatedReplaceInURN:[object Function]",
|
|
87
|
+
"deprecatedURNToURL:[object Function]",
|
|
88
|
+
"getInstalledRelatedApps:[object Function]",
|
|
89
|
+
"getInterestGroupAdAuctionData:[object Function]",
|
|
90
|
+
"registerProtocolHandler:[object Function]",
|
|
91
|
+
"unregisterProtocolHandler:[object Function]",
|
|
92
|
+
"pemrissions:[object Object]",
|
|
93
|
+
"Symbol(Symbol.toStringTag):[object String]"
|
|
94
|
+
],
|
|
95
|
+
"cookieEnabled": 1,
|
|
96
|
+
"cpuClass": "undefined",
|
|
97
|
+
"oscpu": "undefined",
|
|
98
|
+
"plugins": "internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf,internal-pdf-viewer|application/pdf|pdf,internal-pdf-viewer|text/pdf|pdf",
|
|
99
|
+
"hardwareConcurrency": 20
|
|
100
|
+
},
|
|
101
|
+
"canvas": {
|
|
102
|
+
"isCanvasSupported": true,
|
|
103
|
+
"canvasWinding": "yes",
|
|
104
|
+
"crc32": "A7996F6A"
|
|
105
|
+
},
|
|
106
|
+
"screen": {
|
|
107
|
+
"height": 1440,
|
|
108
|
+
"width": 2560,
|
|
109
|
+
"colorDepth": 24,
|
|
110
|
+
"pixelDepth": 24,
|
|
111
|
+
"availHeight": 1392,
|
|
112
|
+
"availWidth": 2560,
|
|
113
|
+
"availTop": 0,
|
|
114
|
+
"availLeft": 0
|
|
115
|
+
},
|
|
116
|
+
"extra": {
|
|
117
|
+
"timezone": 8,
|
|
118
|
+
"useOfSessionStorage": true,
|
|
119
|
+
"useOfLocalStorage": true,
|
|
120
|
+
"useOfIndexedDB": true,
|
|
121
|
+
"forcedColors": false,
|
|
122
|
+
"monochrome": 0,
|
|
123
|
+
"openDatabase": false,
|
|
124
|
+
"reducedMotion": false,
|
|
125
|
+
"architecture": 255,
|
|
126
|
+
"contrast": 0,
|
|
127
|
+
"colorGamut": "srgb"
|
|
128
|
+
},
|
|
129
|
+
"webgl": {
|
|
130
|
+
"antialias": 1,
|
|
131
|
+
"blueBits": 8,
|
|
132
|
+
"depthBits": 24,
|
|
133
|
+
"greenBits": 8,
|
|
134
|
+
"maxCombinedTextureImageUnits": 32,
|
|
135
|
+
"maxCubeMapTextureSize": 16384,
|
|
136
|
+
"maxFragmentUniformVectors": 1024,
|
|
137
|
+
"maxRenderbufferSize": 16384,
|
|
138
|
+
"maxTextureImageUnits": 16,
|
|
139
|
+
"maxTextureSize": 16384,
|
|
140
|
+
"maxVaryingVectors": 30,
|
|
141
|
+
"maxVertexAttribs": 16,
|
|
142
|
+
"maxVertexTextureImageUnits": 16,
|
|
143
|
+
"maxVertexUniformVectors": 4095,
|
|
144
|
+
"shadingLanguageVersion": "WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)",
|
|
145
|
+
"stencilBits": 0,
|
|
146
|
+
"version": "WebGL 1.0 (OpenGL ES 2.0 Chromium)",
|
|
147
|
+
"maxAnisotropy": 16,
|
|
148
|
+
"renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 5060 Ti (0x00002D04) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
|
149
|
+
"vendor": "Google Inc. (NVIDIA)"
|
|
150
|
+
},
|
|
151
|
+
"audio": {
|
|
152
|
+
"audioFormats": "AAC:|HE-AAC:|video/x-ms-asf:|audio/mp4:maybe|application/vnd.ms-asf:|audio/x-matroska:maybe|audio/aacp:|audio/mpeg4-generic:|audio/MP4A-LATM:|video/quicktime:|video/x-flv:|audio/3gpp:|audio/3gpp2:|audio/AMR-NB:|audio/AMR-WB:|audio/GSM:|audio/aac:probably|audio/basic:|audio/flac:probably|audio/midi:|audio/mpeg:probably|audio/mp4; codecs=\"mp4a.40.2\":probably|audio/mp4; codecs=\"ac-3\":|audio/mp4; codecs=\"ec-3\":|audio/ogg; codecs=\"flac\":probably|audio/ogg; codecs=\"vorbis\":probably|audio/ogg; codecs=\"opus\":probably|audio/wav; codecs=\"1\":probably|audio/webm; codecs=\"vorbis\":probably|audio/webm; codecs=\"opus\":probably|audio/x-aiff:|audio/x-mpegurl:maybe|",
|
|
153
|
+
"audioContext": {
|
|
154
|
+
"channelCount": 2,
|
|
155
|
+
"channelCountMode": "explicit",
|
|
156
|
+
"channelInterpretation": "speakers",
|
|
157
|
+
"maxChannelCount": 2,
|
|
158
|
+
"numberOfInputs": 1,
|
|
159
|
+
"numberOfOutputs": 0,
|
|
160
|
+
"sampleRate": 48000,
|
|
161
|
+
"state": "running"
|
|
162
|
+
},
|
|
163
|
+
"frequencyAnalyser": {
|
|
164
|
+
"channelCount": 2,
|
|
165
|
+
"channelCountMode": "max",
|
|
166
|
+
"channelInterpretation": "speakers",
|
|
167
|
+
"fftSize": 2048,
|
|
168
|
+
"frequencyBinCount": 1024,
|
|
169
|
+
"maxDecibels": -30,
|
|
170
|
+
"minDecibels": -100,
|
|
171
|
+
"numberOfInputs": 1,
|
|
172
|
+
"numberOfOutputs": 1,
|
|
173
|
+
"smoothingTimeConstant": 0.8
|
|
174
|
+
},
|
|
175
|
+
"audioFp": "124.04347527516074"
|
|
176
|
+
},
|
|
177
|
+
"video": {
|
|
178
|
+
"videoFormats": "video/mp4; codecs=\"flac\":probably|video/mp4; codecs=\"H.264, mp3\":|video/mp4; codecs=\"H.264, aac\":|video/mpeg; codec=\"H.264\":|video/ogg; codecs=\"theora\":|video/ogg; codecs=\"opus\":probably|video/webm; codecs=\"vp9, opus\":probably|video/webm; codecs=\"vp8, vorbis\":probably|"
|
|
179
|
+
},
|
|
180
|
+
"math": {
|
|
181
|
+
"acos": 1.4473588658278522,
|
|
182
|
+
"acosh": 709.889355822726,
|
|
183
|
+
"acoshPf": 355.291251501643,
|
|
184
|
+
"asin": 0.12343746096704435,
|
|
185
|
+
"asinh": 0.881373587019543,
|
|
186
|
+
"asinhPf": 0.8813735870195429,
|
|
187
|
+
"atanh": 0.5493061443340549,
|
|
188
|
+
"atanhPf": 0.5493061443340549,
|
|
189
|
+
"atan": 0.4636476090008061,
|
|
190
|
+
"sin": 0.8178819121159085,
|
|
191
|
+
"sinh": 1.1752011936438014,
|
|
192
|
+
"sinhPf": 2.534342107873324,
|
|
193
|
+
"cos": -0.8390715290095377,
|
|
194
|
+
"cosh": 1.5430806348152437,
|
|
195
|
+
"coshPf": 1.5430806348152437,
|
|
196
|
+
"tan": -1.4214488238747245,
|
|
197
|
+
"tanh": 0.7615941559557649,
|
|
198
|
+
"tanhPf": 0.7615941559557649,
|
|
199
|
+
"exp": 2.718281828459045,
|
|
200
|
+
"expm1": 1.7182818284590453,
|
|
201
|
+
"expm1Pf": 1.718281828459045,
|
|
202
|
+
"log1p": 2.3978952727983707,
|
|
203
|
+
"log1pPf": 2.3978952727983707,
|
|
204
|
+
"powPI": 1.9275814160560206e-50
|
|
205
|
+
},
|
|
206
|
+
"envCode": 1,
|
|
207
|
+
"ubCode": 14,
|
|
208
|
+
"ms_accid": "",
|
|
209
|
+
"ms_version": "0.0.0.1"
|
|
210
|
+
},
|
|
211
|
+
"wID": {
|
|
212
|
+
"msgType": 3
|
|
213
|
+
}
|
|
214
|
+
}
|