# 最终项目总结模板 项目完成后或准备最终交付时必须读取本文件并默认生成 `case/result/最终项目总结.md`。最终总结 / 项目复盘 / 任务报告不是按用户要求才生成,而是规范性硬性产物;只有用户明确要求不生成最终总结时才可跳过,并需在阶段输出中记录原因。总结报告必须使用 UTF-8 写入,避免 Windows PowerShell / cmd 默认编码把中文写成 “连续问号”。 ## 编码硬规则 - 不要使用 `cmd > report.md` 或未指定编码的 PowerShell 重定向写中文 Markdown。 - 推荐使用本 Skill 提供的写入脚本: ```bash node scripts/write_markdown_utf8.js --out case/result/最终项目总结.md --require-chinese-name --markdown < case/tmp/最终项目总结草稿.md node scripts/write_markdown_utf8.js --input case/tmp/最终项目总结草稿.md --out case/result/最终项目总结.md --require-chinese-name --markdown ``` - 如果草稿内容已经出现大量 “连续问号” 且没有中文字符,先回到原始结论重新生成,不要覆盖最终报告。 - 报告中不得明文写入 Cookie、Authorization、localStorage、账号标识等敏感内容。 ## 章节生成规则 - 必须保留“阶段报告索引”“native addon / NativeProtect 使用情况”“指纹基线一致性”“环境与指纹 API 调用回放明细”“Trace-runtime 可执行闭环”“XHR/fetch Session Bridge”“XHR/fetch 请求语义审计”“对象形状审计矩阵与私有状态泄露”“WebAPI 环境检测矩阵”“高强度环境检测覆盖矩阵”章节。 - 必须保留“动态资源保鲜与运行时刷新”“补环境框架选择与 Trace 复杂度评估”“最终请求 Session 请求链”“加密参数生成与样本复用检查”“代码质量与中文注释”“最终交付结构”“测试结果”“清理结果”章节。 - 必须写入 `case/result/最终项目总结.md`;除非用户明确要求不生成,否则 `check_final_artifact.js` 会默认检查该中文命名文件。 - 只有用户选择 ruyiPage + RuyiTrace、或用户提供 RuyiTrace NDJSON 日志时,才保留 RuyiTrace 章节;否则删除整章。 - 如果用户选择“不发真实请求,只输出本地参数”,TLS 请求验证和 Session 请求链章节需写明该选择和原因。 - 不要把临时 hook、trace、HAR、浏览器 Profile、截图路径写成最终交付物。 - 最终总结必须引用本 case 已生成的 `case/阶段报告/` 中文阶段报告,例如 `01-需求信息确认.md`、`03-请求样本与可疑参数确认.md`,并说明关键决策来自哪个阶段。 - “环境与指纹 API 调用回放明细”必须按类别分组,例如 `window / global`、`navigator`、`document / DOM`、`canvas`、`webgl` 等;每条记录必须精确到访问的属性、调用的方法、构造函数或 getter / setter,不得只写“补了 navigator / canvas”。 - “指纹值回放”必须记录值来源优先级执行情况:是否优先查看 Trace、Trace 是否未截断可用、Trace 缺失 / 未覆盖 / 4000 或 4096 长字段疑似截断时使用了哪个已确认取证工具补采、是否绑定同一 `baselineId`、是否存在 AI 猜值 / 默认值 / 静态推断进入最终 fixture;长指纹值必须记录完整 `valueLength`、完整 `sha256`、分片信息和 `truncated: false`。 - “WebAPI 环境检测矩阵”用于记录 Trace 命中后仍可能导致分支错误的浏览器行为 diff,包括 iframe / Window realm、Worker / MessagePort task queue、PerformanceObserver / PerformanceTimeline、DOM / CSSOM、EventTarget / DataCloneError、clock / timer 和 writer branch;必须写明浏览器 baseline、Node audit、矩阵状态和阻断项。 - “XHR/fetch Session Bridge”用于记录 JS 侧 `XMLHttpRequest` / `fetch` / `sendBeacon` 是 `offline-fixture` 诊断模式还是 `live-session-bridge` 真实请求模式;真实请求时必须写明是否复用同一 TLS Session、Python `curl_cffi` 是否由 `final.py` 持有 session 并服务 Node IPC bridge、Cookie / Set-Cookie / resource timing 是否同步。 - “Trace-runtime 可执行闭环”用于记录原始 Trace 是否已转换为机器契约,当前 runtime 是否在 no-send audit-only 模式逐项通过,必须包含 `traceSourceHash`、`contractHash`、`runtimeSourceHash`、baselineId、probeVersion 和 P0/P1 mismatch 数。 - “XHR/fetch 请求语义审计”用于记录浏览器与 Node network transcript 的逐条 diff,包括请求 actor、realm、navigation epoch、Header 顺序、body byte hash、status/responseURL、事件顺序、reload realm 清理和多余 Node 请求数。 - “对象形状审计矩阵与私有状态泄露”用于记录 `Object.keys`、`Object.getOwnPropertyNames`、`Reflect.ownKeys`、descriptor、`in`、prototype walk 等对象形状 baseline / audit,以及是否存在 `_` / `__` 自有属性泄露;发现泄露时不得交付。 - “高强度环境检测覆盖矩阵”用于记录异常模式、toString 多通道、DataCloneError、Error stack、属性枚举、原型链、MutationObserver、userAgentData、window.chrome、媒体能力、网络 Header / Client Hints 一致性、动态 JS 多版本回归等是否涉及、是否采样、是否已修复和遗留风险。高强度通用排查文档 `high-strength-browser-detection.md` 的入口页优先、指纹随机化风险、自动化痕迹、TLS / Header / Session 一致性和失败排查顺序也必须体现在本矩阵中。 ## 模板 ```markdown # Web JS Node.js 补环境项目总结 生成时间: 任务范围:网页端 JS Node.js 补环境 ## 1. 目标与边界 - 目标网站 URL: - 目标页面: - 目标 API: - 请求方法: - 目标加密参数: - 参数位置:Query / Header / Body / Cookie - 是否需要登录: - 取证模式:ruyiPage + RuyiTrace / 仅 ruyiPage / Camoufox + camoufox-reverse-mcp / 仅 Camoufox / CloakBrowser / 用户手动取证 / AI 自行决定 - 最终请求 TLS 指纹兼容客户端:Node.js CycleTLS / Node.js impers / Node.js curl-cffi / curl-cffi-node / Python curl_cffi / Python cffi_curl / Python cyCronet / 不发真实请求 - 最终请求 Session 模式:启用 / 不发真实请求 - 补环境框架选择:不使用补环境框架(默认) / isolated-vm(随包魔改 xbs isolated-vm) / Node.js 内置 vm / jsEnv - 明确排除:App / 移动端 / Windows / Native / 批量爬虫 / 绕过登录或验证码 ## 2. 用户提供材料 - 成功请求样本: - 响应样本: - 已知 JS 文件: - HAR / cURL: - 浏览器真实输出 fixture: - RuyiTrace NDJSON:有 / 无 / 未使用 - 其他说明: ## 3. 阶段报告索引 - `阶段报告/01-需求信息确认.md`:已生成 / 未生成 - `阶段报告/02-取证方案确认.md`:已生成 / 未生成 / 未涉及 - `阶段报告/03-请求样本与可疑参数确认.md`:已生成 / 未生成 / 未涉及 - `阶段报告/04-JS文件与入口定位.md`:已生成 / 未生成 / 未涉及 - `阶段报告/05-补环境前置分析.md`:已生成 / 未生成 / 未涉及 - `阶段报告/06-补环境实现记录.md`:已生成 / 未生成 / 未涉及 - `阶段报告/07-验证与清理记录.md`:已生成 / 未生成 / 未涉及 - 阶段报告缺失原因或用户豁免: ## 4. 前置校验结果 - 请求样本完整性: - 加密参数是否存在: - JS 文件可获取性: - 是否需要用户手动登录: - Cookie / token 状态: - 临时文件清理状态: ## 5. 取证流程与证据来源 - 使用的取证工具: - 工具安装 / 可用性检查: - 抓包 / Hook / 断点策略: - JS 文件收集来源: - 关键调用栈来源: - 可信度说明: ## 6. RuyiTrace 日志使用情况 - NDJSON 路径或来源: - 导入脚本: - 命中的 WebAPI: - 关键证据:`api` / `stack.file` / `line` / `col` - 由日志推导出的环境依赖: - 后续环境异常排查是否继续参考 NDJSON: ## 7. 动态资源保鲜与运行时刷新 - 是否存在动态 HTML / JS / challenge:有 / 无 - resource manifest:`case/notes/resource-manifest.json` / 未涉及 - 动态资源类型:入口 HTML / JS bundle / 动态 chunk / challenge JS / 403 风控页面 / 内联脚本 / 其他 - 动态性证据:Cache-Control / 短 TTL / 随机 query / hash 变化 / seed / nonce / Set-Cookie / 会话绑定 / 其他 - 是否影响最终参数生成:是 / 否 - 运行时刷新模块:`result/src/resources/fetch-runtime-resources.js` / 未涉及 - 最终入口刷新顺序:刷新当前资源 → 更新 Cookie / Storage / runtime context → 运行 signer → 发送请求 - 动态快照是否进入 result:否 - `check_dynamic_resources.js` 检查结果:通过 / 未执行,原因 ## 8. 加密参数定位结论 - source: - entry: - builder: - writer: - 参数写入位置: - 关键 JS 文件: - 关键函数 / 类 / SDK: - 未确认项: ## 9. Cookie / Storage / Token 分析 - 类型:登录态 / 设备 Cookie / 风控 Cookie / JS 生成 Cookie / 其他 - 生成或刷新链路: - 是否纳入最终入口: - 敏感字段脱敏说明: ## 10. 补环境框架选择与 Trace 复杂度评估 - 补环境框架选择:不使用补环境框架(默认) / isolated-vm(随包魔改 xbs isolated-vm) / Node.js 内置 vm / jsEnv - 选择来源:用户明确选择 / 用户未选择,按默认不使用 - 是否发生二次提醒或切换: - Trace 是否存在:有 / 无 - Trace 复杂度等级:低 / 中 / 高 / 未知 - 复杂度依据:WebAPI 类别 / 真实性检测 / 指纹 / 异步 / 状态依赖 / 调用栈分散度 - 重要说明:复杂度评估只用于补环境范围、风险点和优先级,不自动决定补环境框架 - 最终项目 runtime 文件: - xbs isolated-vm 状态(仅选择 isolated-vm 时填写):未选择 / 已加载 / ABI 不兼容 / 平台缺失 / API 自检失败 - xbs isolated-vm 二进制来源:随 Skill 资产 / 用户提供替换产物 / 不适用 - Node 版本 / ABI / 平台: - `window.xbs` API 自检:通过 / 未通过 / 不适用;缺失 API: - 未选择框架时是否确认无 isolated-vm / vm / jsEnv runtime、`xbs-isolated-vm/` 或 `isolated_vm.node`:是 / 否 / 不适用 ## 11. 补环境实现概览 - 运行隔离方式:不使用框架 / xbs isolated-vm / vm / jsEnv / 独立 Node 进程 / 显式隔离 global - Level 1 基础环境: - Level 2 指纹真实性: - Level 3 目标 SDK 专用环境: - Node 泄露阻断: - 属性描述符 / 原型链 / 访问器处理: - 函数、访问器、实例对象 toString 保护: ## 12. native addon / NativeProtect 使用情况 - native 能力检测结果:addon.node 可用 / xbs isolated-vm 可用 / 不可用 / 用户明确豁免(不得写“未使用”而不说明原因) - native 加载路径:仅写相对路径或“随 Skill 资产加载”;选择 xbs isolated-vm 时写 `xbs-isolated-vm/-/isolated_vm.node`,不要写本机绝对路径 - native 导出 API:addon.node 导出 API 或 `window.xbs` 17 个 API: - 实际使用的 native API:`createNativeFunction` / `createGetter` / `createSetter` / `createNativeObject` / `createProtoChains` / `createNativeCollection` / `createInterceptor` / `getMimeTypesAndPlugins` / `createUndetectable` / `setPrivate` / `getPrivate` / `hasPrivate` / `deletePrivate` / 注册表管理 / 其他;选择 xbs isolated-vm 时注明调用来源为 `window.xbs` - NativeProtect fallback:未发生 / 已发生;选择 xbs isolated-vm 时如发生 fallback,需说明为什么没有使用 `window.xbs` - fallback 原因:用户明确要求不使用 native 能力 / addon 或 xbs 缺失 / ABI 不兼容 / native API 调用失败 / 当前 API 不支持 / 其他 - `document.all` 处理:addon `createUndetectable` / xbs `createUndetectable` / JS 近似 fallback / 未涉及 - `navigator.plugins` / `navigator.mimeTypes` 处理:addon `getMimeTypesAndPlugins(config)` / xbs `getMimeTypesAndPlugins(config)` / JS fallback / 未涉及 - 集合对象处理:addon `createNativeCollection` / xbs `createNativeCollection` / JS fallback / 未涉及 - toString 保护覆盖:函数 / 构造函数 / getter / setter / 实例对象 - 阶段输出或 notes 中的补环境初始化加载记录、用户豁免或降级记录: ## 12.1 native 能力缺口闭环 - 是否发生 native 能力缺口:未发生 / 已发生 - 阻塞 API / 行为: - 触发位置与证据:RuyiTrace / Hook / Node trace / 目标源码位置 / fixture - 真实浏览器基线摘要: - 纯 JS fallback 当前结果与差异: - addon.node 当前结果与差异: - xbs isolated-vm 当前结果与差异:未选择 isolated-vm / 已测试 / 不适用 - 建议新增或增强 native API: - 最小行为测试用例位置:`case/notes/native-capability-gap-test.js` / `case/native-capability-gap/.js` / 不适用 - 测试通过状态:已通过 / 未通过 / 等待用户更新 native 能力 / 用户接受临时 workaround / case 阻塞 - 用户选择与原因:扩展 addon.node / 扩展 xbs isolated-vm / 临时 workaround / 暂停 case / 其他 - 临时 workaround 风险说明:仅当前样本路径临时兼容 / 不涉及 ## 13. 指纹基线一致性 - baseline 文件:`case/notes/fingerprint-baseline.json` / 未生成,原因: - baselineId: - 取证工具与 profile / seed: - 是否复用同一 profile / seed / 代理 / 语言 / 时区 / UA / Client Hints / screen / WebGL:是 / 否 - 是否发生 baseline diff:否 / 是,diff 文件:`case/notes/fingerprint-baseline-diff.md` - 冲突字段与处理方式: - `fingerprint.fixture.json` 是否绑定同一 baselineId:是 / 否 / 不涉及 - 未涉及指纹采样时说明:未涉及 / 仅记录取证基线 ## 14. 环境与指纹 API 调用回放明细 - 明细文件:`case/notes/webapi-call-replay-details.md` / `case/notes/webapi-call-replay-details.json` / 未生成,原因: - 数据来源:RuyiTrace NDJSON / Node trace / Proxy trace / Hook / fixture / 静态分析 / 手动确认 - 值来源优先级:Trace 未截断值优先 / Trace 缺失或未覆盖已补采 / Trace 疑似截断已补采 / 未涉及具体值 - 禁止猜值检查:是否存在 AI 猜值、默认值、随机值、Node.js 模拟库结果进入最终回放:否 / 是,处理方式: - 记录规则:按 API 类别分组;每条精确到属性访问、属性写入、getter、setter、方法调用、构造函数调用或静态方法调用 - 敏感值处理:Cookie / Authorization / token / localStorage 等不写明文,只写脱敏摘要 - 长字段处理:超过采集上限或 4000 / 4096 疑似截断的字段只写可见长度、最小长度、hash 和 `真实长度 unknown`;不得作为最终回放值,必须记录补采工具、完整 `valueLength`、完整 `sha256`、分片信息和 `truncated: false`,否则写明阻塞 - API 总数: - 属性读取数量: - 属性写入数量: - getter / setter 数量: - 方法调用数量: - 构造函数调用数量: - 指纹 API 数量: - 未补齐 API 数量: - fallback API 数量: ### 14.1 分类汇总 | 分类 | 是否涉及 | 典型 API | 属性读取 | 方法调用 | 构造调用 | 指纹 API | 主要证据来源 | 补齐状态 | 备注 | |---|---|---|---:|---:|---:|---:|---|---|---| | window / global | 未涉及 / 已涉及 | `window.innerWidth`、`globalThis` | | | | | | | | | navigator | 未涉及 / 已涉及 | `navigator.userAgent`、`Navigator.prototype.webdriver` | | | | | | | | | document / DOM | 未涉及 / 已涉及 | `document.createElement`、`document.cookie` | | | | | | | | | location / history | 未涉及 / 已涉及 | `location.href`、`history.pushState` | | | | | | | | | screen | 未涉及 / 已涉及 | `screen.width`、`screen.colorDepth` | | | | | | | | | storage / cookie | 未涉及 / 已涉及 | `localStorage.getItem`、`document.cookie` | | | | | | | | | crypto / random | 未涉及 / 已涉及 | `crypto.getRandomValues`、`Math.random` | | | | | | | | | performance / timing | 未涉及 / 已涉及 | `performance.now`、`Date.now` | | | | | | | | | network | 未涉及 / 已涉及 | `fetch`、`XMLHttpRequest.prototype.open` | | | | | | | | | canvas | 未涉及 / 已涉及 | `HTMLCanvasElement.prototype.getContext`、`toDataURL` | | | | | | | | | webgl | 未涉及 / 已涉及 | `WebGLRenderingContext.prototype.getParameter` | | | | | | | | | webgpu | 未涉及 / 已涉及 | `navigator.gpu`、`GPUAdapter` | | | | | | | | | audio | 未涉及 / 已涉及 | `AudioContext`、`AnalyserNode.prototype.getFloatFrequencyData` | | | | | | | | | font / CSS / DOM geometry | 未涉及 / 已涉及 | `getComputedStyle`、`getBoundingClientRect` | | | | | | | | | events / trusted input | 未涉及 / 已涉及 | `Event.prototype.isTrusted`、`MouseEvent` | | | | | | | | | worker / wasm / postMessage | 未涉及 / 已涉及 | `Worker`、`WebAssembly.instantiate`、`postMessage` | | | | | | | | | 其他 | 未涉及 / 已涉及 | | | | | | | | | ### 14.2 分类明细 > 未涉及的分类写“未涉及”;涉及的分类必须列出明细。来源为推断时必须标记“静态推断 / 未验证”,不得写成事实。 #### window / global | API 路径 | 类型 | 所属对象 / 原型 | 来源证据 | 调用参数摘要 | 返回值 / 回放值摘要 | 补环境实现 | 真实性保护 | 验证结果 | 备注 | |---|---|---|---|---|---|---|---|---|---| | 未涉及 | | | | | | | | | | #### navigator | API 路径 | 类型 | 所属对象 / 原型 | 来源证据 | 调用参数摘要 | 返回值 / 回放值摘要 | 补环境实现 | 真实性保护 | 验证结果 | 备注 | |---|---|---|---|---|---|---|---|---|---| | `navigator.userAgent` | getter / 属性读取 | `Navigator.prototype` | RuyiTrace / fixture / Hook | 无 | UA 脱敏摘要 | addon / xbs getter / fallback | descriptor + getter toString | 通过 / 未验证 | 示例行,真实报告中按 case 填写 | #### document / DOM | API 路径 | 类型 | 所属对象 / 原型 | 来源证据 | 调用参数摘要 | 返回值 / 回放值摘要 | 补环境实现 | 真实性保护 | 验证结果 | 备注 | |---|---|---|---|---|---|---|---|---|---| | `Document.prototype.createElement` | 方法调用 | `Document.prototype` | RuyiTrace / Hook | `"canvas"` | `HTMLCanvasElement` 实例摘要 | addon / xbs native function | 原型链 + function toString | 通过 / 未验证 | 示例行,真实报告中按 case 填写 | #### canvas | API 路径 | 类型 | 所属对象 / 原型 | 来源证据 | 调用参数摘要 | 返回值 / 回放值摘要 | 补环境实现 | 真实性保护 | 验证结果 | 备注 | |---|---|---|---|---|---|---|---|---|---| | `HTMLCanvasElement.prototype.getContext` | 方法调用 | `HTMLCanvasElement.prototype` | RuyiTrace / Hook / fixture | `"2d"` | `CanvasRenderingContext2D` 摘要 | addon / xbs native function + fixture replay | native-like + 原型链 | 通过 / 未验证 | 示例行,真实报告中按 case 填写 | #### webgl | API 路径 | 类型 | 所属对象 / 原型 | 来源证据 | 调用参数摘要 | 返回值 / 回放值摘要 | 补环境实现 | 真实性保护 | 验证结果 | 备注 | |---|---|---|---|---|---|---|---|---|---| | `WebGLRenderingContext.prototype.getParameter` | 方法调用 | `WebGLRenderingContext.prototype` | RuyiTrace / Hook / fixture | 参数枚举值摘要 | 真实浏览器回放值摘要 | addon / xbs native function + fixture replay | native-like + 原型链 | 通过 / 未验证 | 示例行,真实报告中按 case 填写 | #### 其他分类 按实际涉及的 `location / history`、`screen`、`storage / cookie`、`crypto / random`、`performance / timing`、`network`、`webgpu`、`audio`、`font / CSS / DOM geometry`、`events / trusted input`、`worker / wasm / postMessage` 或其他 WebAPI 分类补充同样表格。 ## 14a. Trace-runtime 可执行闭环 - Trace contract:`case/notes/trace-runtime-contract.json` / 未生成,原因: - Node runtime audit:`case/tmp/node-trace-runtime-audit.json` / 未生成,原因: - diff:`case/notes/trace-runtime-diff.md` / 未生成,原因: - baselineId: - traceSourceHash: - contractHash: - runtimeSourceHash: - probeVersion: - audit-only 网络模式:no-send / 未执行 - audit-only 真实网络尝试数: - P0/P1 contract 数 / matched / mismatch: - `check_trace_runtime_conformance.js` 结果: - `check_trace_api_coverage.js --require-runtime-closure` 结果: ## 15. XHR/fetch Session Bridge - 是否涉及 XHR/fetch/sendBeacon:是 / 否,原因: - 网络模式:offline-fixture / live-session-bridge / 未涉及 - 如果为 offline-fixture:是否已明确只用于诊断,且未宣称真实请求 / TLS 指纹已解决:是 / 否 - 如果为 live-session-bridge:是否复用最终请求同一 Session:是 / 否 - Session 持有者:final.js / final.py / 不适用 - TLS 客户端:CycleTLS / impers / curl-cffi-node / curl_cffi / cffi_curl / cyCronet / 不发真实请求 - Python curl_cffi 场景:final.py 是否持有唯一 session 并服务 Node IPC bridge:是 / 否 / 不适用 - JS 网络模块:`result/src/env/network/xhr.js` / `result/src/env/network/fetch.js` / 其他 / 未涉及 - 请求客户端模块:`result/src/request/client.js` / `result/src/request/session_client.py` / 其他 / 未涉及 - Cookie / Set-Cookie / document.cookie 同步: - `getResponseHeader("set-cookie")` / `Response.headers.get("set-cookie")` 语义: - readyState / Promise / event 顺序验证: - resource timing 是否涉及: - `check_xhr_fetch_session_bridge.js` 结果:通过 / 未通过 / 未运行,原因: ## 15a. XHR/fetch 请求语义审计 - 浏览器 transcript:`case/fixtures/browser-network-transcript.ndjson` / 未生成,原因: - Node no-send transcript:`case/tmp/node-network-transcript.ndjson` / 未生成,原因: - 语义 audit:`case/tmp/xhr-fetch-semantics-audit.json` / 未生成,原因: - baselineId: - runtimeSourceHash: - 请求 actor / realm / navigation epoch: - Header 顺序与重复字段 diff: - body byte length / SHA256 diff: - status=0 / responseURL 语义: - readyState / event / Promise 顺序: - reload/navigation 后旧 realm timer/XHR/task 清理: - Node 多余 XHR/fetch/navigation/resource 事件数: - `check_xhr_fetch_semantics.js` 结果: - `check_environment_closure.js --before-real-request` 结果: ## 16. 对象形状审计矩阵与私有状态泄露 - 是否触发对象形状审计:是 / 否,原因: - 矩阵文件:`case/notes/object-shape-audit.md` / 未生成,原因: - 浏览器对象形状 baseline:`case/fixtures/browser-object-shape-baseline.json` / 未生成,原因: - Node 对象形状 audit:`case/tmp/node-object-shape-audit.json` / 未生成,原因: - baselineId 一致性:一致 / 不一致 / 未涉及 - 私有状态实现:addon/xbs private API / WeakMap / native / 未涉及 - `_` / `__` 自有属性泄露:无 / 有,具体项: - `Object.keys` / `Object.getOwnPropertyNames` / `Reflect.ownKeys` / descriptor / `in` / prototype walk 结果: - `check_object_shape_audit.js` 结果:通过 / 未通过 / 未运行,原因: | 对象 | 是否涉及 | 浏览器 baseline | Node audit | 状态 | 私有状态策略 | 遗留风险 | |---|---|---|---|---|---|---| | XMLHttpRequest instance | 未涉及 / 已涉及 | 已采样 / 未采样 | 已审计 / 未审计 | matched / mismatch / unknown | WeakMap / private API | | | Headers / Response / Request | 未涉及 / 已涉及 | 已采样 / 未采样 | 已审计 / 未审计 | matched / mismatch / unknown | WeakMap / private API | | | DOM / EventTarget / Storage / Performance | 未涉及 / 已涉及 | 已采样 / 未采样 | 已审计 / 未审计 | matched / mismatch / unknown | WeakMap / private API | | ## 17. WebAPI 环境检测矩阵 - 是否触发 WebAPI 环境检测矩阵:是 / 否,原因: - 矩阵文件:`case/notes/webapi-env-detection-matrix.md` / 未生成,原因: - 浏览器行为基线:`case/fixtures/browser-env-detection-baseline.json` / 未生成,原因: - Node 行为审计:`case/tmp/node-env-detection-audit.json` / 未生成,原因: - `check_webapi_env_detection_matrix.js` 结果:通过 / 未通过 / 未运行,原因: - baselineId 一致性:一致 / 不一致 / 未涉及,说明: - writer 分支差异:未涉及 / 真实浏览器 = continuation / reload writer / form writer / final writer;Node = continuation / reload writer / form writer / final writer;差异说明: | 类别 | 是否触发 | 浏览器 baseline | Node audit | 状态 | 证据位置 | 处理结论 | |---|---|---|---|---|---|---| | iframe-realm | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | worker-task | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | performance-timeline | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | dom-cssom | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | event-clone-error | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | xhr-fetch-session-bridge | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | object-shape | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | private-state-leakage | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | clock-timer | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | | writer-branch | 否 / 是 | 已采样 / 未采样 | 已审计 / 未审计 | matched / accepted-diff / not-involved / needs-browser-baseline / needs-node-audit / mismatch / native-capability-gap / unknown | | | - 阻断状态:无 / 有,具体项: - 后续新增 WebAPI 是否属于矩阵遗漏:否 / 是,若是必须记录 `missed-from-webapi-env-matrix` 流程缺陷和修复动作: ## 18. 高强度环境检测覆盖矩阵 - 是否启用高强度环境行为 diff:是 / 否,原因: - 浏览器基线文件:`case/fixtures/browser-env-baseline.json` / 未生成,原因: - Node 补环境审计文件:`case/tmp/node-env-audit.json` / 未生成,原因: - diff 记录:`case/notes/high-intensity-env-diff.md` / 未生成,原因: - 是否涉及 JSVMP:否 / 是;处理方式:不主动分析源码,仅围绕环境调用、writer 和行为 diff 推进 - 动态风控 JS 多版本回归:未涉及 / 已执行;样本数量: | 检测类别 | 是否涉及 | 浏览器基线 | Node 对比 | 修复状态 | 遗留风险 / 说明 | |---|---|---|---|---|---| | 异常模式指纹 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | Node 泄露与本机路径 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | toString 多通道 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | addon 优先;NativeProtect fallback 需覆盖多通道 | | structuredClone / postMessage DataCloneError | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | NativeProtect fallback 需改写 clone error 泄露 | | Error stack / eval stack | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | 属性描述符与枚举顺序 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | 原型链 walk 与 brand check | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | MutationObserver / Observer 行为 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | navigator.userAgentData / Client Hints | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | window.chrome | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | canPlayType / mediaSession | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | 网络 Header / Client Hints 一致性 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | 动态 JS 多版本回归 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | | | TLS / JA3 / JA4 / Header 顺序 / Session 链 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | 最终请求与取证 baseline 一致 | | 自动化 / CDP / Headless / isTrusted 风险 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | 取证阶段从一开始使用已确认高保真工具 | | Permissions / Plugins / MimeTypes | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | addon-first,禁止普通数组 / 空对象主路径 | | Canvas / WebGL / Audio / Speech / Fonts / DOM 几何随机化风险 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | 禁止 AI 猜值、默认值和每次随机化 | | 入口 HTML / 前置 JS / 状态链 | 未涉及 / 已涉及 | 已采样 / 未采样 | 已对比 / 未对比 | 通过 / 部分通过 / 未修复 | 不得只围绕单 API cURL 判断 | ## 19. 指纹值回放 - 是否涉及指纹 API: - 值来源优先级执行情况:已优先检查 Trace / 未选择 Trace / Trace 缺失 / Trace 未覆盖 / Trace 4000 或 4096 长字段疑似截断 / Trace baseline 冲突 / 不涉及 - Trace 未截断可用值:API、字段路径、证据文件、长度、hash: - Trace 不可用或疑似截断时的补采工具:ruyiPage / Camoufox / CloakBrowser / 用户手动浏览器 / 其他;采样是否复用同一 `baselineId`: - 长指纹值完整性:涉及的 Canvas / WebGL / WebGPU / Audio / 字体 / DOM 几何 API、trace 可见长度、真实长度是否 unknown、是否已补采完整值、`valueLength`、`sha256`、分片数量、`truncated: false`: - 真实浏览器采样来源: - 禁止猜值检查:AI 猜值 / 默认值 / 随机值 / Node.js 模拟库结果是否进入最终 fixture:否 / 是,处理方式: - 覆盖范围:Canvas / WebGL / WebGPU / Audio / 字体 / DOM 几何 / navigator / screen / window / document / 其他 - fixture 文件: - 回放匹配规则: - 缺失样本处理: ## 20. 加密参数生成与样本复用检查 - cURL / HAR / fixture 中的样本加密值是否只作为 expected: - 最终入口如何生成参数:目标 JS 入口 / signer / 其他 - 是否发现硬编码样本值:否 - `check_final_artifact.js` 复用检查结果: ## 21. 代码质量与中文注释 - 是否已运行 `check_code_quality.js`: - 模块拆分情况: - isolated-vm 文件化模块情况:未选择 isolated-vm / 已按真实文件拆分 / 仍存在字符串脚本,原因: - isolated-vm 环境模块清单:`src/env/browser-objects/navigator.js` / `document.js` / `window.js` / `src/env/fingerprint/canvas.js` / `webgl.js` / 其他 - 单文件 / 单函数复杂度: - 中文注释覆盖:文件头 / WebAPI / getter / setter / addon-first / fallback / 指纹回放 / 加密入口 - 中文注释编码:UTF-8 正常 / 存在问题 - 中文注释是否包含问号、连续问号或乱码:否 - 修复过的可读性问题: ## 22. TLS 请求验证与 Session 请求链 - 是否发送真实请求:是 / 否 - 客户端:Node.js CycleTLS / Node.js impers / Node.js curl-cffi / curl-cffi-node / Python curl_cffi / Python cffi_curl / Python cyCronet / 不发真实请求 - Session 模式:已启用 / 不发真实请求 - Session client 文件:`result/src/request/client.js` / `result/src/request_client.py` / 不适用 - 请求链是否共用同一 session:是 / 否;包含:动态资源刷新 / Cookie 生成 / challenge / 目标 API - Cookie jar 来源与更新点: - 是否复用同一 UA / Client Hints / Accept-Language / Referer / Origin / proxy / fingerprint baseline: - Session 销毁方式:close / exit / dispose / Cookie jar 清理 / 不适用 - TLS / JA3 / HTTP2 / Header 顺序策略: - 请求次数与授权范围: - 响应状态: - 业务成功判断: - 失败原因或限制: ## 23. 最终交付结构 - result 目录: - 唯一入口:`final.js` / `final.py` - 必要模块: - 配置模板: - 是否包含浏览器自动化代码:否 - 是否包含临时测试文件:否 - isolated-vm 是否包含大段 `String.raw` / `*_SCRIPT` 补环境源码:否 / 不适用 - 最终请求实现:Node.js / Python TLS 指纹兼容 Session 客户端 / 不发真实请求 ## 24. 测试结果 - 信息完整性测试: - addon-first 默认硬性测试: - 代码质量与中文注释测试: - UTF-8 Markdown / 默认最终总结生成测试: - 补环境真实性检查: - XHR/fetch Session Bridge 检查: - 对象形状审计与私有状态泄露检查: - WebAPI 环境检测矩阵检查: - 高强度环境检测覆盖矩阵检查: - 指纹基线一致性检查: - Session 请求链检查: - 最终产物检查: - 清理 dry-run: ## 25. 清理结果 - 已删除的临时文件: - 保留的必要文件: - 敏感材料处理: - 仍需用户确认处理的文件: ## 26. 风险与后续建议 - 未确认风险: - 需要补充样本: - 可优化点: - 后续复测建议: ```