# 第二轮补环境阅读笔记 这份文档记录本轮继续扩读后,新补进来的信息点。 这一轮的目标不是重复收集 Proxy 入门文,而是专门补当前草稿缺的方向: - `window` / 原型链关系 - `window.crypto` / `performance` - `WebRTC` - `AudioContext` / `OfflineAudioContext` - `Worker` - 更复杂的国外风控 / 验证码环境检测 ## 1. 本轮阅读后最明显的变化 如果把这批文章和前面的 GitHub 框架一起看,会发现一个很重要的分层: ### 第一层:基础补环境 - `window = globalThis` - `document = {}` - `navigator = {}` - `location = {}` - `history = {}` - `screen = {}` - `Proxy` 吐环境 这类内容很多,足够入门,但对 future skill 的增量已经有限。 ### 第二层:工程化补环境 - 原型链 - `Symbol.toStringTag` - native `toString` - getter / setter / 描述符 - `plugins/mimeTypes` - `document.all` 这类内容是现有 `codex` 草稿的核心骨架。 ### 第三层:高强度检测 - `window.crypto.getRandomValues` - `performance.timing` - `RTCPeerConnection` - `RTCRtpSender` / `RTCRtpReceiver` - `OfflineAudioContext` - `Worker` / `SharedWorker` - 字体指纹 - `Math` 精度差异 - wasm + Promise 异步链 这一层才是后续最值得重点扩读和沉淀的方向。 ## 2. 本轮最有价值的文章与新增信息 ### 2.1 博客园:JS逆向之浏览器补环境详解 链接: [https://www.cnblogs.com/spiderman6/p/16969391.html](https://www.cnblogs.com/spiderman6/p/16969391.html) 这篇文章的最大价值不是某个单独代码片段,而是把补环境明确拆成两条路线: - 递归 Proxy 监控路线 - 纯 JS 原型链框架路线 对 future skill 最有价值的新增点: - 明确提出“工程化项目结构”比单脚本更重要 - 明确提到事件处理是框架必须考虑的点 - 强调每个 BOM / DOM 对象应单文件组织 - 强调补环境框架要按原型链顺序拼接 这对我们前面已经写出的 `future-skill-blueprint` 是很强的佐证。 ### 2.2 博客园:js补环境代码 链接: [https://www.cnblogs.com/c-x-a/p/18702240](https://www.cnblogs.com/c-x-a/p/18702240) 这篇文章虽然代码不复杂,但有一个很实用的点: - 它把 `performance`、`top`、`self`、`document` 一起纳入了 Proxy 监控清单 它提醒我们: - `performance` 不应该只放在指纹模块里,也应该纳入 Proxy 观察默认目标 - `top/self` 这类 `window` 关系也应该是默认监控项 ### 2.3 博客园:window.crypto.getRandomValues 模拟 链接: [https://www.cnblogs.com/hotdog418/articles/14005518.html](https://www.cnblogs.com/hotdog418/articles/14005518.html) 这篇文章的价值在于给了一个很具体的 `getRandomValues` 模拟思路,并且点到了真实行为细节: - 需要处理 `Uint8Array` - 需要处理 `Uint16Array` - 需要处理 `Uint32Array` - 需要处理长度超过阈值时的异常 这对 future skill 的意义是: - `crypto.getRandomValues` 不能只返回随机数 - 还要尽量模拟参数类型和错误行为 也就是说,`crypto-module` 已经值得单独立项。 ### 2.4 验证码细节总结:补环境中可能用到的方法 链接: [https://www.cnblogs.com/ocr12/p/18664716](https://www.cnblogs.com/ocr12/p/18664716) 这篇文章虽然主题更偏验证码,但里面有两个对补环境很重要的点: - `window.crypto.getRandomValues` - `window.performance.timing` 尤其是 `performance.timing`,说明我们前面的遗漏判断是对的: - performance 不能只补 `performance.now` - 很多场景会直接读 timing 结构 所以 future skill 至少应单独补: - `performance.now` - `performance.timeOrigin` - `performance.timing` - 时间序列一致性 ### 2.5 博客园:修改浏览器指纹之 webrtc 指纹修改 链接: [https://www.cnblogs.com/68xi/p/13344520.html](https://www.cnblogs.com/68xi/p/13344520.html) 这篇文章不是逆向框架文,但对 `WebRTC` 的价值很高: - 明确给出了 `RTCPeerConnection` 探测本机 IP 的典型流程 - 涉及 `createDataChannel` - 涉及 `createOffer` - 涉及 `onicecandidate` 这说明 future skill 中的 `webrtc-module` 至少要考虑: - 构造函数存在性 - `createDataChannel` - `createOffer` - ICE candidate 行为 - IP 泄漏与候选收集路径 ### 2.6 CN-SEC:hCaptcha 无感逆向分析-补环境 链接: [https://cn-sec.com/archives/4909845.html](https://cn-sec.com/archives/4909845.html) 这是这一轮最关键的文章。 它几乎直接把我们草稿里“高强度检测层”的缺口点出来了: - `RTCPeerConnection` - `RTCRtpSender` - `RTCRtpReceiver` - `OfflineAudioContext` - `WebGL2RenderingContext` - 描述符检测 - `AudioBuffer.prototype.getChannelData` - `Math` 精度差异 - 字体指纹 - canvas 指纹 - `Worker` - `SharedWorker` - Promise / wasm 异步调用链 这篇文章对 future skill 的最大推动有三点: 1. 说明补环境已经不能只看 BOM / DOM 2. 说明“异步链 + wasm 交互 + 指纹一致性”是高阶核心 3. 说明验证模块必须能和浏览器日志对照 ## 3. 本轮阅读后,future skill 应新增的模块 结合这一轮资料,最应该补进 blueprint 的新增模块有: ### 3.1 `crypto-module` 至少包含: - `window.crypto` - `window.msCrypto` - `getRandomValues` - `subtle` ### 3.2 `performance-module` 至少包含: - `performance.now` - `performance.timeOrigin` - `performance.timing` - 时间一致性 ### 3.3 `webrtc-module` 至少包含: - `RTCPeerConnection` - `RTCRtpSender` - `RTCRtpReceiver` - ICE candidate 行为 ### 3.4 `audio-fingerprint-module` 至少包含: - `AudioContext` - `OfflineAudioContext` - `AudioBuffer` - `getChannelData` ### 3.5 `worker-module` 至少包含: - `Worker` - `SharedWorker` - `postMessage` - `MessageEvent` ### 3.6 `math-precision-module` 至少包含: - 精度差异检查 - 高风险数学函数差异记录 - 浏览器 / Node 结果对照能力 ## 4. 对当前 codex 草稿最直接的修正建议 这一轮阅读后,我认为前面的遗漏优先级需要进一步收敛成: 1. `crypto-module` 2. `performance-module` 3. `webrtc-module` 4. `audio-fingerprint-module` 5. `worker-module` 6. `window` 关系一致性 7. 完整 Event / DOM 系统 原因很简单: - 这些模块在高强度风控里更容易真正卡死流程 - 而且它们比基础 BOM/DOM 更难靠“临时补值”解决 ## 5. 当前最稳的结论 这第二轮阅读已经说明: - 我们现在不是资料不够多 - 而是资料分布不均 真正该继续扩读的,不是更多重复的 Proxy 入门文,而是: - `crypto` - `performance` - `WebRTC` - `AudioContext` - `Worker` - `Math` 精度 - wasm 交互与异步调用链 这会直接决定 future skill 后续有没有能力从“常规补环境”走向“国外高强度盾补环境”。