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.
Files changed (277) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +177 -0
  3. package/README.ja.md +177 -0
  4. package/README.ko.md +177 -0
  5. package/README.md +174 -2
  6. package/README.zh-TW.md +177 -0
  7. package/assets/banner.txt +3 -0
  8. package/dist/cli/argv.js +98 -0
  9. package/dist/cli/commands/auth.js +11 -0
  10. package/dist/cli/commands/config.js +23 -0
  11. package/dist/cli/commands/doctor.js +134 -0
  12. package/dist/cli/commands/platforms.js +24 -0
  13. package/dist/cli/commands/version.js +4 -0
  14. package/dist/cli/confirm.js +22 -0
  15. package/dist/cli/dispatch.js +440 -0
  16. package/dist/cli/help.js +223 -0
  17. package/dist/cli/hints.js +60 -0
  18. package/dist/cli/main.js +18 -0
  19. package/dist/cli/output.js +66 -0
  20. package/dist/core/auth-handlers.js +41 -0
  21. package/dist/core/auth-store.js +119 -0
  22. package/dist/core/capabilities.js +163 -0
  23. package/dist/core/config.js +121 -0
  24. package/dist/core/cookies.js +164 -0
  25. package/dist/core/errors.js +37 -0
  26. package/dist/core/files.js +89 -0
  27. package/dist/core/fsutil.js +52 -0
  28. package/dist/core/hash.js +4 -0
  29. package/dist/core/http.js +331 -0
  30. package/dist/core/image.js +280 -0
  31. package/dist/core/log.js +40 -0
  32. package/dist/core/login.js +191 -0
  33. package/dist/core/mp4.js +130 -0
  34. package/dist/core/normalize.js +207 -0
  35. package/dist/core/options.js +110 -0
  36. package/dist/core/paths.js +38 -0
  37. package/dist/core/pb.js +59 -0
  38. package/dist/core/py.js +181 -0
  39. package/dist/core/rand.js +131 -0
  40. package/dist/core/registry.js +129 -0
  41. package/dist/core/schemas.js +41 -0
  42. package/dist/core/stream.js +104 -0
  43. package/dist/core/toolkit.js +35 -0
  44. package/dist/core/vm.js +73 -0
  45. package/dist/core/vocab.js +157 -0
  46. package/dist/platforms/_shared/impaas.js +410 -0
  47. package/dist/platforms/bilibili/index.js +216 -0
  48. package/dist/platforms/bilibili/web/api.js +806 -0
  49. package/dist/platforms/bilibili/web/client.js +311 -0
  50. package/dist/platforms/bilibili/web/commands.js +783 -0
  51. package/dist/platforms/bilibili/web/ddddocr.js +342 -0
  52. package/dist/platforms/bilibili/web/gaia.js +130 -0
  53. package/dist/platforms/bilibili/web/geetest-manual.js +154 -0
  54. package/dist/platforms/bilibili/web/geetest-vision.js +232 -0
  55. package/dist/platforms/bilibili/web/geetest.js +450 -0
  56. package/dist/platforms/bilibili/web/normalize.js +234 -0
  57. package/dist/platforms/bilibili/web/profile.js +135 -0
  58. package/dist/platforms/bilibili/web/resolve.js +112 -0
  59. package/dist/platforms/bilibili/web/sign.js +223 -0
  60. package/dist/platforms/bilibili/web/upos.js +102 -0
  61. package/dist/platforms/douyin/index.js +142 -0
  62. package/dist/platforms/douyin/web/api.js +863 -0
  63. package/dist/platforms/douyin/web/client.js +413 -0
  64. package/dist/platforms/douyin/web/commands.js +712 -0
  65. package/dist/platforms/douyin/web/creator.js +601 -0
  66. package/dist/platforms/douyin/web/crypto.js +247 -0
  67. package/dist/platforms/douyin/web/dtrait.js +190 -0
  68. package/dist/platforms/douyin/web/im.js +502 -0
  69. package/dist/platforms/douyin/web/image.js +5 -0
  70. package/dist/platforms/douyin/web/live.js +225 -0
  71. package/dist/platforms/douyin/web/mssdk.js +148 -0
  72. package/dist/platforms/douyin/web/normalize.js +326 -0
  73. package/dist/platforms/douyin/web/passport.js +1247 -0
  74. package/dist/platforms/douyin/web/profile.js +221 -0
  75. package/dist/platforms/douyin/web/proto.js +26 -0
  76. package/dist/platforms/douyin/web/resolve.js +88 -0
  77. package/dist/platforms/douyin/web/sign.js +436 -0
  78. package/dist/platforms/douyin/web/tos.js +78 -0
  79. package/dist/platforms/index.js +17 -0
  80. package/dist/platforms/jd/index.js +67 -0
  81. package/dist/platforms/jd/web/aks.js +115 -0
  82. package/dist/platforms/jd/web/api.js +549 -0
  83. package/dist/platforms/jd/web/chat.js +132 -0
  84. package/dist/platforms/jd/web/client.js +470 -0
  85. package/dist/platforms/jd/web/commands.js +557 -0
  86. package/dist/platforms/jd/web/jcap/helper.js +90 -0
  87. package/dist/platforms/jd/web/jcap/host.js +107 -0
  88. package/dist/platforms/jd/web/jcap/lsd.js +300 -0
  89. package/dist/platforms/jd/web/jcap/solver.js +995 -0
  90. package/dist/platforms/jd/web/jcap.js +150 -0
  91. package/dist/platforms/jd/web/js.js +420 -0
  92. package/dist/platforms/jd/web/login.js +775 -0
  93. package/dist/platforms/jd/web/normalize.js +297 -0
  94. package/dist/platforms/jd/web/profile.js +256 -0
  95. package/dist/platforms/jd/web/util.js +175 -0
  96. package/dist/platforms/jd/web/webm.js +133 -0
  97. package/dist/platforms/kuaishou/index.js +98 -0
  98. package/dist/platforms/kuaishou/web/api.js +694 -0
  99. package/dist/platforms/kuaishou/web/captcha-crypto.js +134 -0
  100. package/dist/platforms/kuaishou/web/captcha-fp.js +180 -0
  101. package/dist/platforms/kuaishou/web/captcha.js +273 -0
  102. package/dist/platforms/kuaishou/web/client.js +487 -0
  103. package/dist/platforms/kuaishou/web/commands.js +863 -0
  104. package/dist/platforms/kuaishou/web/gap.js +144 -0
  105. package/dist/platforms/kuaishou/web/gdfp.js +376 -0
  106. package/dist/platforms/kuaishou/web/gql.js +11 -0
  107. package/dist/platforms/kuaishou/web/live.js +125 -0
  108. package/dist/platforms/kuaishou/web/normalize.js +241 -0
  109. package/dist/platforms/kuaishou/web/oracle.js +329 -0
  110. package/dist/platforms/kuaishou/web/profile.js +259 -0
  111. package/dist/platforms/kuaishou/web/resolve.js +84 -0
  112. package/dist/platforms/kuaishou/web/session.js +592 -0
  113. package/dist/platforms/kuaishou/web/sign.js +568 -0
  114. package/dist/platforms/taobao/index.js +56 -0
  115. package/dist/platforms/taobao/web/api.js +96 -0
  116. package/dist/platforms/taobao/web/client.js +102 -0
  117. package/dist/platforms/taobao/web/commands.js +172 -0
  118. package/dist/platforms/taobao/web/im.js +68 -0
  119. package/dist/platforms/taobao/web/normalize.js +103 -0
  120. package/dist/platforms/taobao/web/profile.js +85 -0
  121. package/dist/platforms/taobao/web/resolve.js +51 -0
  122. package/dist/platforms/taobao/web/sign.js +35 -0
  123. package/dist/platforms/tiktok/index.js +120 -0
  124. package/dist/platforms/tiktok/web/api.js +1234 -0
  125. package/dist/platforms/tiktok/web/client.js +362 -0
  126. package/dist/platforms/tiktok/web/commands.js +821 -0
  127. package/dist/platforms/tiktok/web/im.js +133 -0
  128. package/dist/platforms/tiktok/web/jsrun.js +126 -0
  129. package/dist/platforms/tiktok/web/normalize.js +286 -0
  130. package/dist/platforms/tiktok/web/profile.js +169 -0
  131. package/dist/platforms/tiktok/web/resolve.js +156 -0
  132. package/dist/platforms/tiktok/web/sign.js +585 -0
  133. package/dist/platforms/tiktok/web/upload.js +805 -0
  134. package/dist/platforms/tiktok/web/wire.js +490 -0
  135. package/dist/platforms/weibo/index.js +91 -0
  136. package/dist/platforms/weibo/web/api.js +206 -0
  137. package/dist/platforms/weibo/web/client.js +155 -0
  138. package/dist/platforms/weibo/web/commands.js +202 -0
  139. package/dist/platforms/weibo/web/normalize.js +137 -0
  140. package/dist/platforms/weibo/web/profile.js +246 -0
  141. package/dist/platforms/weibo/web/resolve.js +60 -0
  142. package/dist/platforms/weibo/web/sign.js +85 -0
  143. package/dist/platforms/x/index.js +107 -0
  144. package/dist/platforms/x/web/api.js +443 -0
  145. package/dist/platforms/x/web/article.js +212 -0
  146. package/dist/platforms/x/web/client.js +202 -0
  147. package/dist/platforms/x/web/commands.js +363 -0
  148. package/dist/platforms/x/web/graphql.js +108 -0
  149. package/dist/platforms/x/web/normalize.js +235 -0
  150. package/dist/platforms/x/web/profile.js +99 -0
  151. package/dist/platforms/x/web/resolve.js +44 -0
  152. package/dist/platforms/x/web/transaction.js +171 -0
  153. package/dist/platforms/xhs/index.js +101 -0
  154. package/dist/platforms/xhs/web/api.js +278 -0
  155. package/dist/platforms/xhs/web/client.js +540 -0
  156. package/dist/platforms/xhs/web/commands.js +1046 -0
  157. package/dist/platforms/xhs/web/creator-api.js +609 -0
  158. package/dist/platforms/xhs/web/creator.js +203 -0
  159. package/dist/platforms/xhs/web/js.js +194 -0
  160. package/dist/platforms/xhs/web/login.js +230 -0
  161. package/dist/platforms/xhs/web/normalize.js +166 -0
  162. package/dist/platforms/xhs/web/profile.js +127 -0
  163. package/dist/platforms/xhs/web/push.js +361 -0
  164. package/dist/platforms/xhs/web/resolve.js +69 -0
  165. package/dist/platforms/xhs/web/state.js +368 -0
  166. package/dist/platforms/xianyu/index.js +59 -0
  167. package/dist/platforms/xianyu/web/api.js +312 -0
  168. package/dist/platforms/xianyu/web/client.js +134 -0
  169. package/dist/platforms/xianyu/web/commands.js +305 -0
  170. package/dist/platforms/xianyu/web/im.js +73 -0
  171. package/dist/platforms/xianyu/web/normalize.js +123 -0
  172. package/dist/platforms/xianyu/web/profile.js +146 -0
  173. package/dist/platforms/xianyu/web/resolve.js +48 -0
  174. package/dist/platforms/xianyu/web/sign.js +79 -0
  175. package/package.json +77 -4
  176. package/static/douyin/Live.proto +194 -0
  177. package/static/douyin/Request.proto +89 -0
  178. package/static/douyin/Response.proto +46 -0
  179. package/static/douyin/acrawler_runtime/ac_vm.js +2 -0
  180. package/static/douyin/acrawler_runtime/browser_window_shape.json +1 -0
  181. package/static/douyin/acrawler_runtime/canvas_actual_exact.json +1 -0
  182. package/static/douyin/acrawler_runtime/run_ac_node.js +1005 -0
  183. package/static/douyin/acrawler_runtime/runner_window_keys_baseline.txt +240 -0
  184. package/static/douyin/challenge_profile.json +801 -0
  185. package/static/douyin/challenge_template_runner.js +217 -0
  186. package/static/douyin/dtrait_profile.json +66 -0
  187. package/static/douyin/mstoken_common_profile.json +1 -0
  188. package/static/douyin/mstoken_profile.json +214 -0
  189. package/static/jd/h5st5_env.js +750 -0
  190. package/static/jd/h5st5_lib.js +5 -0
  191. package/static/jd/h5st5_server.js +49 -0
  192. package/static/jd/jcap/env/env_core.js +512 -0
  193. package/static/jd/jcap/env/run.js +1307 -0
  194. package/static/jd/jcap/run/jcap_ujb96b.js +39 -0
  195. package/static/jd/package.json +4 -0
  196. package/static/jd/pc_tk_lib.js +1 -0
  197. package/static/jd/pc_tk_server.js +63 -0
  198. package/static/jd/summer_cryptico_runner.js +50 -0
  199. package/static/jd/webm/env/run.js +453 -0
  200. package/static/jd/webm/run/jdwebm-riskhandle.js +49 -0
  201. package/static/kuaishou/bundles/weapon/kwf-0.0.2.2cee19b4b7dec496.js +1 -0
  202. package/static/kuaishou/bundles/weapon/kws-0-0.0.1-obfuscated.4b7f3de1ab0ddcc2.js +1 -0
  203. package/static/kuaishou/bundles/weapon/kws-1-0.0.1-obfuscated.346ebdb1c78df316.js +1 -0
  204. package/static/kuaishou/bundles/weapon/kws-10-0.0.1-obfuscated.a33db41897b983af.js +1 -0
  205. package/static/kuaishou/bundles/weapon/kws-11-0.0.1-obfuscated.5e0a90af726d8a7e.js +1 -0
  206. package/static/kuaishou/bundles/weapon/kws-12-0.0.1-obfuscated.20ea29345706ec8c.js +1 -0
  207. package/static/kuaishou/bundles/weapon/kws-13-0.0.1-obfuscated.6b74e9640ff18648.js +1 -0
  208. package/static/kuaishou/bundles/weapon/kws-14-0.0.1-obfuscated.551e4429d156bf66.js +1 -0
  209. package/static/kuaishou/bundles/weapon/kws-15-0.0.1-obfuscated.8625b087aaba4a60.js +1 -0
  210. package/static/kuaishou/bundles/weapon/kws-16-0.0.1-obfuscated.d5ffa4020f3be99a.js +1 -0
  211. package/static/kuaishou/bundles/weapon/kws-17-0.0.1-obfuscated.6d13e19b22f50a80.js +1 -0
  212. package/static/kuaishou/bundles/weapon/kws-18-0.0.1-obfuscated.6d31405044166289.js +1 -0
  213. package/static/kuaishou/bundles/weapon/kws-19-0.0.1-obfuscated.a9a8d925942f19e4.js +1 -0
  214. package/static/kuaishou/bundles/weapon/kws-2-0.0.1-obfuscated.b849a136ae4a6b3e.js +1 -0
  215. package/static/kuaishou/bundles/weapon/kws-3-0.0.1-obfuscated.f9e77ebf6186e2ac.js +1 -0
  216. package/static/kuaishou/bundles/weapon/kws-4-0.0.1-obfuscated.2c3c155aa52ceb0e.js +1 -0
  217. package/static/kuaishou/bundles/weapon/kws-5-0.0.1-obfuscated.4e553d17691b3c5a.js +1 -0
  218. package/static/kuaishou/bundles/weapon/kws-6-0.0.1-obfuscated.f73ddd3ff13e1217.js +1 -0
  219. package/static/kuaishou/bundles/weapon/kws-7-0.0.1-obfuscated.1628b8729beaab7e.js +1 -0
  220. package/static/kuaishou/bundles/weapon/kws-8-0.0.1-obfuscated.6da6baef7aa81fff.js +1 -0
  221. package/static/kuaishou/bundles/weapon/kws-9-0.0.1-obfuscated.8645d55e5323b743.js +1 -0
  222. package/static/kuaishou/fixtures/current_follow_script_813.network-response +2 -0
  223. package/static/kuaishou/fixtures/live_ws_maps.json +61 -0
  224. package/static/kuaishou/fixtures/live_ws_proto.json +1342 -0
  225. package/static/kuaishou/js/cp-kwf.js +1 -0
  226. package/static/kuaishou/tools/kwf_oracle.js +799 -0
  227. package/static/kuaishou/tools/kws_oracle.js +885 -0
  228. package/static/kuaishou/tools/like_token_oracle.js +70 -0
  229. package/static/taobao/taobao_js_20260407.js +570 -0
  230. package/static/tiktok/Tiktok_Request.json +597 -0
  231. package/static/tiktok/package.json +3 -0
  232. package/static/tiktok/shop_bsid/core.js +1 -0
  233. package/static/tiktok/shop_bsid/env_core.js +512 -0
  234. package/static/tiktok/shop_bsid/loader.js +1 -0
  235. package/static/tiktok/shop_bsid/run.js +753 -0
  236. package/static/tiktok/shop_bsid/sign.js +100 -0
  237. package/static/tiktok/shop_bsid/webmssdk.js +1 -0
  238. package/static/tiktok/shop_bsid/webmssdk_ex.js +1 -0
  239. package/static/tiktok/signing/env/env_core.js +512 -0
  240. package/static/tiktok/signing/env/sign.js +455 -0
  241. package/static/tiktok/signing/sdk_config.json +230 -0
  242. package/static/tiktok/signing/source/webmssdk.js +1 -0
  243. package/static/tiktok/signing/source/webmssdk_ex.js +1 -0
  244. package/static/tiktok/signing/source/webmssdk_legacy.js +1 -0
  245. package/static/x/graphql.json +7777 -0
  246. package/static/x/transaction_l1.json +12 -0
  247. package/static/xhs/package.json +3 -0
  248. package/static/xhs/xhs_core/js/b1.js +210 -0
  249. package/static/xhs/xhs_core/js/mns.js +340 -0
  250. package/static/xhs/xhs_core/js/mns_0101_keystream.json +5 -0
  251. package/static/xhs/xhs_core/js/mns_keystreams.json +1 -0
  252. package/static/xhs/xhs_core/js/sign.js +225 -0
  253. package/static/xhs/xhs_core/js/websectiga_cli.js +220 -0
  254. package/static/xhs/xhs_core/js/websectiga_env.js +512 -0
  255. package/static/xhs/xhs_core/js/xs_common.js +79 -0
  256. package/static/xhs/xhs_creator/js/profile.js +115 -0
  257. package/static/xhs/xhs_creator/js/rap_fingerprint_creator.json +6 -0
  258. package/static/xhs/xhs_creator/js/reference_profile.json +282 -0
  259. package/static/xhs/xhs_creator/js/xhs_creator_sign.js +29 -0
  260. package/static/xhs/xhs_creator/js/xhs_creator_signature.js +23 -0
  261. package/static/xhs/xhs_pc/js/aes_decrypt.js +22 -0
  262. package/static/xhs/xhs_pc/js/aes_encrypt.js +30 -0
  263. package/static/xhs/xhs_pc/js/b1.js +9 -0
  264. package/static/xhs/xhs_pc/js/deflate.js +320 -0
  265. package/static/xhs/xhs_pc/js/mns.js +4 -0
  266. package/static/xhs/xhs_pc/js/profile.js +141 -0
  267. package/static/xhs/xhs_pc/js/rap.js +173 -0
  268. package/static/xhs/xhs_pc/js/rap_cli.js +30 -0
  269. package/static/xhs/xhs_pc/js/rap_crypto.js +73 -0
  270. package/static/xhs/xhs_pc/js/rap_fingerprint_template.json +8 -0
  271. package/static/xhs/xhs_pc/js/reference_profile.json +262 -0
  272. package/static/xhs/xhs_pc/js/sign.js +6 -0
  273. package/static/xhs/xhs_pc/js/web_ssk.js +82 -0
  274. package/static/xhs/xhs_pc/js/xs_common.js +4 -0
  275. package/static/xianyu/et_f.js +2 -0
  276. package/static/xianyu/gen_tfstk.js +410 -0
  277. 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
+ }