Files

7.3 KiB
Raw Permalink Blame History

当前补环境草稿的遗漏点

这份文档不是重新讲补环境,而是专门检查当前 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 等更深层指纹
  • 验证与回归资源