# 当前补环境草稿的遗漏点 这份文档不是重新讲补环境,而是专门检查当前 `H:\CodeSpace\AiReverse\Web\env\codex` 这套草稿资源还缺什么。 结论先说: - 现在已经有“原型链 / native / 描述符 / navigator / document / storage / 指纹 / Proxy”的主骨架 - 但如果目标是未来真的做成可复用 skill,仍然缺一批高频检测点、配套脚本和验证资源 - 这些遗漏里,最关键的不是再补几个字段,而是补“跨对象关系、异步对象、网络对象、时序与指纹一致性” ## 1. 当前草稿已经覆盖到的重点 现有文档和脚本已经比较明确地覆盖了: - 原型链分层 - native `toString` - getter / setter / 描述符保护 - `navigator` - `document` - `localStorage` / `sessionStorage` - `canvas` / `WebGL` - Proxy 吐环境 - `document.all` - 堆栈清洗的设计入口 这部分作为 future skill 的第一层基础已经够用了。 ## 2. 目前最重要的遗漏点 ### 2.1 `window` 图关系还不完整 当前草稿里虽然提到了 `window/globalThis/self/top`,但还没有把下面这些关系单独模块化: - `window.window === window` - `self === window` - `top / parent / frames` - `frameElement` - `opener` - `document.defaultView` 这类点一旦补错,经常不是直接报错,而是通过一致性检测暴露。 ### 2.2 事件系统还是空白区 现在还缺: - `EventTarget` - `Event` - `UIEvent` - `MouseEvent` - `KeyboardEvent` - `PointerEvent` - `TouchEvent` - `CustomEvent` - `MessageEvent` 更重要的是缺这些行为细节: - `isTrusted` - `timeStamp` - `target/currentTarget/srcElement` - `addEventListener/removeEventListener/dispatchEvent` 很多风控和验证码环境,不是直接查 `navigator`,而是顺着事件系统走。 ### 2.3 网络与通信对象几乎还没进草稿 当前最明显的遗漏之一就是: - `XMLHttpRequest` - `fetch` - `Headers` - `Request` - `Response` - `sendBeacon` - `WebSocket` - `EventSource` 你前面已经明确提过 `WebSocket`,但目前这套草稿里还没有把它真正升格成模块。 这会影响: - 某些 cookie / token 写入链 - 某些 socket 协议站点 - 某些通过 `fetch/xhr` 挂钩的风控 ### 2.4 Worker 只被提到了,但没形成模块 现在还缺完整设计: - `Worker` - `SharedWorker` - `ServiceWorker` - `postMessage` - `MessageChannel` - `BroadcastChannel` - `structuredClone` 尤其是国外盾和新型验证码,越来越喜欢把检测逻辑拆进 Worker。 ## 3. 指纹层面的明显遗漏 ### 3.1 音频指纹还没单列 当前草稿重点放在 `canvas/WebGL`,但缺: - `AudioContext` - `OfflineAudioContext` - `AudioBuffer` - 常见音频指纹链路 这点在新型验证码和国外风控里非常常见。 ### 3.2 字体指纹还没单列 当前文档里虽然提到“字体”,但还没有形成独立模块。 应该至少考虑: - 浏览器侧字体枚举导出 - 文本测量差异 - `canvas` 字体渲染一致性 ### 3.3 WebRTC 还没进入模块清单 目前还缺: - `RTCPeerConnection` - `RTCRtpSender` - `RTCRtpReceiver` - 相关候选、能力和属性检测 这类点不一定每个站都用,但一旦碰到就是高优先级。 ### 3.4 `Math` / 引擎精度差异没有单独建模 现在草稿里还没有明确: - 浏览器与 Node 的 `Math` 精度差异 - 不同引擎浮点实现差异 这点在高级风控和 wasm/验证码里会被拿来做环境分辨。 ## 4. 浏览器能力对象的遗漏 下面这批对象在当前草稿里还比较弱或者没展开: - `permissions.query` - `Notification.permission` - `mediaDevices` - `enumerateDevices` - `getUserMedia` - `clipboard` - `geolocation` - `Bluetooth` - `USB` - `HID` - `serial` - `xr` 原因不是它们每次都必须补,而是: - 很多站点会把它们当“是否为真浏览器”的探针 - 很多国外站点喜欢同时读多个能力对象做一致性判断 ## 5. 时间、地区、编码对象的遗漏 这一块目前也不够: - `Intl` - 时区 - `Date` - `performance` - `performance.now` - `performance.timeOrigin` - `navigation timing` - `TextEncoder` - `TextDecoder` - `atob` - `btoa` - `URL` - `URLSearchParams` - `crypto.getRandomValues` - `crypto.subtle` 如果 future skill 以后要更稳,这些不能长期缺位。 ## 6. DOM 结构与样式系统的遗漏 当前 `document` 方向有骨架,但还缺完整 DOM 系统设计: - `Node` - `Element` - `HTMLElement` - `HTMLDivElement` - `HTMLCanvasElement` - `DOMParser` - `XMLSerializer` - `MutationObserver` - `CSSStyleDeclaration` - `classList` - `dataset` - `style` - `getAttribute/setAttribute` 很多补环境失败并不是 BOM 对象缺,而是 DOM 返回值长得不像真浏览器。 ## 7. 现有脚本本身的遗漏 ### 7.1 `collect-browser-env.js` 采集面还不够 现在它能采集: - `navigator` - `document` - `screen` - `history` - `location` - `storage` - 基础 `canvas/webgl` 但还没采: - `plugins` - `mimeTypes` - `permissions` - `Notification.permission` - `mediaDevices` - `battery` - `AudioContext` - 字体样本 - `performance` - `Intl/timezone` - `document.all` 特征 ### 7.2 `observe-runtime.js` 还偏轻量 现在能做基础 Proxy 观察,但还不够: - 缺路径频次统计 - 缺按对象分类的聚合结果 - 缺“读取返回 undefined”与“调用抛错”联动分析 - 缺输出到 JSON 的稳定格式 - 缺针对 `apply/construct` 的细化报告 ### 7.3 `protect-native.js` 还只是底座雏形 现在能做: - `Function.prototype.toString` - getter / setter 基础保护 - `name` / `length` 修正 但还没做全: - `prototype` 描述符修正 - `Symbol.toStringTag` 联动 - 针对 Proxy 包裹后函数的处理 - 多层包装后的 native 串一致性 ## 8. blueprint 里提到但尚未补齐的资源 当前 blueprint 里已经提到,但实际文件还没有落地的有: ### 8.1 `references` - `03-special-cases.md` - `07-source-map.md` - `06-validation.md` ### 8.2 `scripts` - `build-plugin-graph.js` - `merge-storage-state.js` - `scaffold-module.js` ### 8.3 `assets` - `navigator-sample.example.json` - `plugin-graph.example.json` - `storage-state.example.json` 这说明现在的草稿已经到了“该从设计走向半成品”的阶段。 ## 9. 最该优先补的遗漏顺序 如果按未来 skill 的实用性排序,我建议优先级如下: 1. `window/self/top/parent/defaultView/opener` 一致性 2. `WebSocket` / `fetch` / `XMLHttpRequest` 3. `Worker` / `SharedWorker` / `postMessage` 4. `permissions` / `mediaDevices` / `Notification` 5. `AudioContext` / 字体指纹 / `WebRTC` 6. `Intl` / `performance` / `crypto` 7. 完整 DOM / Event 系统 ## 10. 当前最稳的判断 现在这套 `codex` 目录已经不再是“零散笔记”,而是一套成型中的 skill 设计草稿。 但如果要迈过“能跑 Demo”到“能抗检测”的门槛,后续最应该补的不是更多 `navigator.xxx = ...`,而是: - 跨对象关系 - 异步与通信对象 - 网络对象 - 时间与地区一致性 - 音频 / 字体 / WebRTC 等更深层指纹 - 验证与回归资源