mcpField
S
spider-king

spider-king

github.com/aoyunyang数据与数据库52153 次安装2 周前更新
代码仓库

关于 spider-king

Spider King 是用于还原 Web 协议并构建有限范围采集器的技能,面向调查 HTTP 行为、客户端签名或解码的从业者。它强调以证据驱动调查,并使用无浏览器的 Python 重放或采集;原生应用和小程序不在范围内。

主要功能

  1. 01以证据驱动协议调查
  2. 02分析 HTTP 请求与状态
  3. 03针对性签名和解码辅助程序
  4. 04无浏览器的 Python 重放与采集器
  5. 05证据及代码交付门槛

适用场景

  1. 01分析提供的 HAR 或请求数据
  2. 02还原 Web 端点的请求流程
  3. 03重建固定轨迹的签名器或解码器
  4. 04打包有限范围的 Python 采集器

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aoyunyang/spider-king-skill --skill spider-king

安装后在 Claude Code 中输入/spider-king确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
README.md
agents/
openai.yaml
references/
anti-debug-playbook.md
async-export-job-playbook.md
anti-bot-class-playbook.md
case-reuse-playbook.md
challenge-artifact-harvest-playbook.md
challenge-state-envelope-playbook.md
anti-patterns-playbook.md
crypto-patterns.md
device-trust-sidecar-playbook.md
delivery-gate-playbook.md
decoy-and-real-request-playbook.md
dual-writer-param-playbook.md
environment-patch-playbook.md
doctrine-index.md
embedded-browser-runtime-playbook.md
cookie-provenance-playbook.md
env-diff-playbook.md
evidence-corroboration-gate.md
experience-card-schema.md
references/examples/douyin-bdms-pure/
algorithm-notes.md
references/examples/douyin-bdms-pure/fixtures/
primitives-vectors.json
references/examples/douyin-bdms-pure/scripts/
verify_primitives.py
pure_abogus_template.py
references/experience-cards/
signer-egress-stub-must-match-callsite.json
server-clock-must-enter-observed-writer.json
standard-primitive-concat-before-custom-port.json
references/experience-fixtures/
page-local-exception-matrix.json

详细介绍

Spider King

使命

将对抗性 Web 客户端转变为稳定的协议采集器。

这是一项纯 Web 协议还原技能,不是浏览器自动化技能,也不是 APK/小程序逆向技能。只能使用浏览器工具收集 Web 证据。交付原始 HTTP,以及范围有限的本地签名、引导、解码或传输辅助工具。如果主要目标是 APK、原生应用或小程序,应说明不在范围内,而不是凭空设计一个 Web 双浏览器初步方案。

不可妥协的原则

  • 在全新任务中选择任何工具之前,先运行本文件中的 Auto Judge Card 和 references/mcp-routing-playbook.md:判断任务受理方式、是否需要浏览器、要使用哪个基准宿主,以及要使用哪些调试器跟踪手段(js-reverse 和/或 silent-value-capture)。不要先打开工具,再事后找理由。
  • 每个全新的网页目标若被归类为 live-target,在声称已了解页面/运行时之前,都必须依次取得两个角色的证据:先 fingerprint-baseline,再 debugger-trace。唯一范围更窄的说法是 references/startup-triage-playbook.md 中的 transport-only direct-endpoint exception:它可以在严格的负向对照和业务判定依据门槛通过后,接受针对某个确切端点的采集器,但不得声称已了解页面/运行时。
  • 默认手段是先用 chrome-devtools 建立基准,再用 js-reverse 进行调试器跟踪。如果已经需要处理 DP/发起方,js-reverse 可以在同一宿主上承担两个角色;不要再启动第二个 Chrome。记录使用的是 launch 还是 attach,绝不可把 launch 假称为 attach。只有证实存在指纹压力或干净基准失败时,才将基准宿主升级为 Camoufox 或其他托管配置;普通低风险任务不得默认使用 Camoufox,也不得仅因 CDP 的 navigator.webdriver 为 true 而使用 Camoufox。
  • 调试器跟踪须由以下证据满足:来自 js-reverse 且相互关联的发起方/变更证明、references/silent-value-capture-playbook.md 中相互关联的 silent-value-capture 卡片,或两者兼有。若可以 attach,优先使用 js-reverse。
  • 如果缺少 attach,记录 debugger_attach_gap;若有后端,则通过 silent-value-capture 继续调试器跟踪,不要放弃该角色。如果所需的静默后端也不可用,则记录 silent_value_capture_gap,并继续离线处理或降低交付形式。
  • silent-value-capture 绝不能替代基准,也绝不能承担 compact-replay 或 collector 交付。APK、原生应用和小程序的主要任务仍不在范围内,不得为了走形式而编造成对的浏览器证明。如果任何必需角色都无法通过现有手段满足,必须先报告阻碍,再声称已了解该实时目标。
  • 浏览器和引擎采集证据必须按目标串行收集:最多只能有一个浏览器或引擎采集系列处于 TARGET_ACTIVE 状态,且并行工具批次中绝不能有两个目标所有者。遵循 references/tool-playbook.md 中的交接门槛;授予静默值引擎采集权限之前,先暂停或保留基准;对于无法重放的独特状态,使用 RETAINED_EXCEPTION 保留,而不是为了清理而将其销毁。
  • 对于 compact-replay 和 collector,必须交付不依赖浏览器的 Python 运行路径。最终重放路径或回退方案绝不可使用浏览器自动化、Playwright、Selenium、CDP 页面驱动、页面上下文 fetch、浏览器配置、手动浏览器状态、silent-value-capture 后端或引擎检测。
  • HTTP、编排、解析、重试、持久化和输出优先使用纯 Python。只有在验证后的 Python 移植风险更高时,才将 JS/WASM 保留为微型本地辅助程序;本地引导程序可以模拟宿主语义,但在线 HTTP 由 Python 负责,报告必须如实说明不依赖浏览器/运行时。重放身份必须与已安装的 curl impersonate Chrome 主版本锁定;不要将较新的在线 Chrome 主版本复制到较低版本的 impersonate 上,也不要仅因版本漂移而重启风险控制逆向工作。
  • 在处理分页、并发、提交或运行时精简之前,先恢复一个稳定的业务请求。对于未知的风控逆向,先检查被拒请求;未证明有效的额外路由每轮最多尝试一个,而且只有在省略该路由会改变判定结果时才可尝试。
  • 当本地 JS/WASM/SDK 辅助程序在一个类浏览器工作流中被反复调用时,应将进程/VM/上下文身份及隐藏的可变状态视为动态因素;在精简或扩展辅助程序之前,先证明持久世界与全新世界的行为差异;不得将会自行失效的实例重复用作分页器。
  • 每项结论都必须有其声明的交付形式所要求的证据支撑。只有在声称当前在线接受时,才要求重复进行在线重放。敏感原始值仅保留在本地;聊天、报告和版本控制中须对凭据、令牌、个人数据和 Cookie 值进行脱敏。
  • 在证明轮换状态的写入方、槽位、作用范围、有效期和刷新路径之前,绝不可将其硬编码;对于依赖繁重引导的流程,在证明可跨会话复用之前,须保留同一条会话链。
  • 只有声明的交付形式通过其专属能力门槛,或已证实存在真实外部阻碍时,才能停止。不得将 evidence 或 local-proof 标记为采集器,也不得将不完整自动化伪装成临时采集器。
  • compact-replay 和 collector 交付须包含可通过 PyCharm 右键运行的 Python 入口点,通常为项目根目录下的 main.py 或 collector/main.py,且不得要求提供终端参数。除非所请求的产物是可执行代码,否则 evidence 和 local-proof 无须提供入口点。
  • 只路由到当前工具注册表/架构中已确认的 MCP 系列;磁盘上的源代码树不代表工具可用。被动线缆存储可以与 TARGET_ACTIVE 并存,但不能替代首次在线证据;compact-replay/collector 必须始终不依赖浏览器运行时、页面驱动、浏览器配置、采集后端和引擎检测。
  • 在固化某个 gate 家族标签、扩大运行时范围,或将工作交给已安装的专用工具前,先通过 references/evidence-corroboration-gate.md。单个状态码、Cookie 名称、令牌名称、旧备注或看似合理的辅助工具输出,都只能算作假设。
  • 在可信正样本通过而本地路径失败时,完成样本清理后,使用 references/positive-sample-ablation-playbook.md。使用 references/failure-surface-taxonomy.md 为尚未解决的在线故障命名,而不是暗示采集器已完成。遇到卡点时,从该文件中选择一项 Stuck 后续操作;不要批量添加未经验证的额外路由。

对于故障形态的反例,请阅读 references/anti-patterns-playbook.md。打包结果前,只应用相匹配的能力门控,参见 references/delivery-gate-playbook.md。分级降级:导入错误/NameError 是我们自身的错误(在 stderr 上发出警报);外部超时则回退。将关键响应输出到 stderr;stdout 保持为机器可读的 JSON。

轻量级调度

在内部使用这些标签,让第一步保持精简。正常回复用户时,不要强行套用僵化的机器格式标题。

形态交付物
evidence真实请求、发起方、状态来源、修改点或明确的阻碍
local-proof固定向量、解码后的样本、恢复的源码,或无需实时出站流量即可调用的辅助工具
compact-replay一次有界的右键可运行重放,用于已证实的请求
collector可重复、无需浏览器的 Python 采集器,并带有边界限制

默认选择能满足用户需求的最小形态。用户提供的 HAR、数据包捕获、请求文本、JS/WASM、Cookie/令牌样本、固定向量或现有项目产物,应从 evidence 或 local-proof 开始;不要仅为满足实时目标的形式要求而打开浏览器。evidence 和 local-proof 不得自动启动双角色浏览器流程。单独的 URL 本身并不授权浏览器导航、实时重放、写入、使用账户/会话、安装依赖或大范围采集。

路由名称描述的是当前能力归属方,而非门控所属家族:evidence-reuse、chromium-recon、browser-hook、static-ast、env-patch、iv8-local-runtime、verifier、transport、pure-python-rebuild 或 python-collector。沿一条路由执行,直至获得证据或明确命名的阻碍。如果两条路由看起来都可行,优先选择更精简的离线路由,并记录哪些证据足以支持升级。

在任何路由写入文件、发送实时出站流量、执行目标提供的代码、使用账户/会话状态、安装依赖或更改运行时状态之前,请应用 references/provider-work-order.md 中的精简契约。

快速路线与归属

目标已经明确时,请使用专门路线。对于这些情况,不要重新启动针对未知目标的完整发现流程。

当前目标路线
在已知边界处粘贴即用的浏览器观测 Hookreferences/profiles/browser-hook-snippets/index.md
对给定 JS 文件进行结构化 Babel AST 还原references/profiles/static-ast/index.md
在 Node/VM 中使用已知入口、调用和固定浏览器输出references/profiles/env-patch/index.md
JSVMP/SDK 已加载,但 XHR 或 fetch 签名保持静默或依赖路径references/profiles/env-patch/references/jsvmp-interceptor-contract.md;使用正向和负向路径对照证明已激活;如果 CDP navigator.webdriver 为 true,请在 Camoufox 之前于 initScript 中删除可配置的原型属性;没有列表 XHR 的 HTML 零值不是数据
固定轨迹的纯 Python 签名器/解码器重建或回归测试references/pure-python-rebuild-playbook.md
未知或多层端到端采集器继续执行下方的启动门禁 + 通用逆向循环
仅定位入口/调用链有专用逆向技能时使用该技能;否则使用 chrome-devtools / js-reverse 发起方证据
明确要求 Python + iv8 运行时有 iv8 技能时使用;若不可用,报告未满足的约束,且仅在用户接受此替代方案后使用 env-patch/本地辅助工具
窄范围已安装的专家工具与经佐证的阻塞因素匹配仅当能力快照列出该专家工具且双界面佐证通过时才移交;Spider 仍是次要运行时辅助工具。如果没有安装专家工具,请继续使用通用循环——不要臆造系列捷径
已有 HAR、Reqable 历史记录或请求文本,需要解释或起草重放内容evidence-reuse;打开浏览器前先阅读 references/mcp-routing-playbook.md
在收集证据前需要指纹或托管配置文件自动判定指纹压力高 -> Camoufox/托管主机基线,然后在调试端点可用时附加/移交至 js-reverse
HAR/请求/JS/cookie 样本充足,且不需要新的实时证明artifact-only / evidence-reuse;不要为了走流程而打开 Camoufox、Chrome 或 js-reverse

专用配置文件规则:

  • 仅当工作属于 artifact-only 或已证明的已知边界工作时,browser-hook、static-ast 和 env-patch 才可跳过未知目标流程;变更必须可逆,日志必须妥善保护秘密;纯结构 AST 检测可从给定源代码开始,但要提出行为方面的结论,仍需固定样本。如果需要新的交互,将其归类为 live-target 并要求提供按顺序排列的角色证据;缺少引导、会话、传输、解码或分页状态时,须退出该配置文件并进入通用逆向循环。
  • 进程产物应存放在正在执行的项目的 js_reverse_cache/tasks/<task-id>/ 下(task.json、network.jsonl、runtime-evidence.jsonl、使用时的 silent_value/、handoff.json、fixtures/、report.md)。交付证明仍保存在 analysis/proof_manifest.json 和相关分析文件中。切勿将任务秘密写入此技能目录。首次保存或晋级之前,请应用 references/project-artifact-contract.md。

自动路由卡

选择工具前先使用此卡。它不会放宽任何交付门禁。完整的信号表和主机升级规则见 references/mcp-routing-playbook.md 和 references/startup-triage-playbook.md。

自动判定卡(信号驱动)

按以下顺序判断,并在首次执行目标操作前记录分支:

  1. 输入评估:离线样本充足且无需实时验收 -> artifact-only;只有裸 URL,或需要新鲜的页面/会话证明 -> 网页 live-target;目标/环境/目标相同 -> continuation;APK/应用/小程序为主要目标 -> 超出范围。
  2. 是否需要浏览器/引擎?:纯离线解释/还原/固定向量工作 -> 不需要浏览器;需要当前请求/页面/线路证明 -> 基线主机;需要已知边界值或发起方工作 -> debugger-trace,即基线交接之后(js-reverse 和/或 silent-value-capture)。
  3. 基线主机:普通低风险侦察默认使用 chrome-devtools。如果已经需要 DP/发起方工作,则由 js-reverse 负责基线,并在同一主机上进行 debugger-trace;不要启动第二个 Chrome。只有在指纹压力或基线干净度失败时,才升级到 Camoufox/托管主机;普通低风险工作绝不默认使用 Camoufox。
  4. debugger-trace 的含义:候选业务请求出现后,在不放弃该角色的前提下选择手段:
    • 有可用的附加方式 -> 默认在顺序交接后,于当前主机上使用 js-reverse;记录 launch 模式,不要将其伪装成附加模式
    • 升级触发条件(会毒化观察结果的钩子、系统性漏检、需要固定输入向量、缺少 JSVM 公共边界值、页面自检不信任页面世界)-> 立即启用 silent-value-capture;不要先扩大页面世界钩子范围
    • 缺少附加方式 -> 记录 debugger_attach_gap;如果有可用的静默值后端,则通过 silent-value-capture 继续 debugger-trace;否则继续离线工作
    • 需要时却没有静默后端 -> 记录 silent_value_capture_gap,并继续离线工作或降低交付形式;只有在 references/startup-triage-playbook.md 中的每项入口条件都已独立证明时,精确的直接端点才可使用仅传输例外
  5. 满足以下任一条件时,debugger-trace 角色即完成:通过 js-reverse 获得相关的发起方/变更证明;获得一张或多张相关的 fixed_input_ready 静默值卡片;或两者都获得。优先选择公共边界 I/O,而非操作码/全程序跟踪;protobuf serializeBinary 和 wasm encode(i32,i32) 也符合要求。绝不要将捕获后端放入 compact-replay 或 collector。
  6. 尽早停止浏览器/引擎:证明真实请求、变更点和重建路径后,退出浏览器 MCP 和任何静默值后端,然后使用纯 Python 完成工作。
默认实时流程
capability snapshot (browser mode launch|attach|unavailable, curl impersonate max chrome, silent_backend)
  -> Auto Judge
  -> fingerprint-baseline (chrome-devtools default; js-reverse may own both roles when DP is already required; Camoufox/managed host only on pressure)
  -> sequential handoff (park/retain baseline)
  -> debugger-trace means (branch, not a linear tail):
       attach? yes -> js-reverse first
                 + silent-value-capture on upgrade triggers
       attach? no  -> debugger_attach_gap
                 + silent-value-capture if backend available
                 else offline continue
  -> offline rebuild + delivery gate

启动门槛

在深入分析前完成并报告此门槛。扩展清单见 references/startup-triage-playbook.md。

0. 输入模式

使用工具前声明一种模式:

  • live-target:当前网页/端点需要新鲜的浏览器和线路证据;按角色顺序依次使用
  • artifact-only:只有已保存的请求/源码/令牌/样本;标记实时验收尚未得到证明
  • continuation:目标/环境/目标相同;复用当前门槛,仅重新检查发生变化的部分
1. 环境和工具

记录已安装的 MCP 工具系列、浏览器模式(launch|attach|unavailable)、已知调试端点、scripts/check_reverse_env.py 检测到的 curl impersonate 最高 Chrome 版本、可选静默值后端的可用性(silent_backend=available|absent),以及可选的被动线路存储。仅路由到已确认的工具。缺少可选工具系列或后端属于缺口,不是走流程。若 silent_backend=absent,不要探测捕获后端;在附加/js-reverse 存在缺口后,继续离线工作或降低交付形式。

2. 工具系列分流

根据当前证据标记最小的主导门槛类别(signer-gated、transport-gated、verifier-gated、decode-gated、session-gated),然后只打开对应路径。

3. 交付意图

声明预定形式(evidence、local-proof、compact-replay、collector),并在该门槛处停止。不要把不完整的自动化包装成临时采集器。

最简信息收集

用户提供目标页面或 API URL、网站和采集目标、捕获的请求、JS 或 WASM 示例、Cookie 或令牌示例,或数据包捕获后,立即开始。在判断是否需要浏览器证据之前,先选择信息收集模式。

只询问会影响实现的缺失信息:目标字段、采集范围、输出格式、是否需要登录,以及是否需要去重、续传或增量同步。

对于只读证据或本地证明请求,只询问缺失的示例、向量、触发操作或源路径。只有在下一步将要写入、执行目标代码或联系目标时,才询问项目根目录、保留期限、实时重放和请求预算。

在实现 compact-replay 或 collector 之前,如果仍有多种可行的实现形式,或下一步将扩大当前已确定的运行时、依赖项、可写范围或实时授权边界,请使用 references/provider-work-order.md 中的条件式实现简报。不要将该简报变成 evidence、local-proof 或用户已选定实现方案时的强制审批流程。

通用逆向循环

使用 references/workflow-overview.md 作为简明执行路线图,使用 references/tool-playbook.md 选择工具。以下阶段编号是唯一的阶段编号体系;多阶段稳定检查和阶段字段集合是贯穿各阶段的检查清单,映射关系见该文件。

阶段 0:指纹识别
  • 如果存在观察者效应的可能,在启用广泛 Hook 之前先采集干净的基线;区分诱饵与真实端点、传输层与应用层门禁、可见参数与包装器重写、引导流程与数据 API、单个请求与有状态的请求记录、HTML 占位零值与列表 XHR 数据、无关的 HTTP 同级接口与 WebSocket 或文本通道、chrome-devtools HTTP 日志与 WebSocket 帧,以及非 JSON WebSocket 前缀帧与业务 JSON。
  • 尽早识别纯 JSON、GraphQL、WebSocket、protobuf、二进制封装、加密响应、字形映射、HTML 中的 CSS 精灵图或偏移字形、JSVMP,或与宿主绑定的运行时。优先使用 protobuf serializeBinary / wasm encode,而非操作码;二进制数据应捕获为十六进制,而非 UTF-8 转储。
  • 选择最小的下一项验证,而不是最大的捆绑包转储。
阶段 1:验证真实请求
  • 跟踪重定向和包装器/兼容页面,分别映射入口、引导、列表、详情、提交、验证器、预热、遥测、下载、风控以及异步导出/报告路由。
  • 捕获准确的 URL、方法、查询参数、请求体字节、标头、出站 Cookie 标头、响应形态和发起方。
  • 将分页切换点和受挑战文档的重放视为协议约定的一部分。
  • 如果相同的直接端点和业务输入仅因客户端传输方式而产生差异,请在此处、签名器或环境工作之前,运行 references/transport-pre-gate-playbook.md 中的相同输入矩阵和负向对照。如果符合 references/startup-triage-playbook.md 中 transport-only direct-endpoint exception 的所有条件,则仅针对该端点限定验收范围,并明确说明浏览器角色方面的缺口。

在真实业务路径上交付一个已确认的请求。

阶段 2:隔离变化状态

在认定变更模型已明确之前,先回答 references/minimal-verifiable-facts-playbook.md 中的六个静态分析问题。

对每个变化部分进行分类:时间戳、随机数、签名查询参数或请求体、轮换的标头或 Cookie、包装字段、操作名称、游标、引导产物、解码密钥、字形映射、会话密钥、配置基线、稀疏增量、计数器、心跳、对经过时间的依赖、媒体密钥、页面例外、账户状态或主机语义。 当同一个本地运行时服务于多个请求或步骤时,还要对辅助程序的生命周期、VM/上下文身份、模块实例、闭包、缓存、队列、惰性初始化和调用顺序标记进行分类;显式重放计数器/Cookie 并不能证明状态连续性。 如果涉及导出接口或签名开放平台风格的 API,还要在设计重新生成机制之前,将字段分为业务字段、静态应用字段、服务端签发字段和每请求动态字段。另行标注来源类别(fixed / plaintext / local-algorithm / server-issued / risk-interactive)和归属类别(python-owned / host-owned / server-owned);绝不要把来源等同于归属。

证明 Cookie 的来源,并区分服务端签发的产物与本地生成的填充内容。只有在网络行为证实之后,才将关于会话参与的页面文本视为假设。如果登录只是第一道门,则在导出之前,通过最终身份重新读取来验证租户、角色和数据范围;参见 references/multi-context-session-playbook.md。当存储的 Cookie jar 状态与权威的出站 Cookie 标头不一致时,将二者分开处理。当业务重放与浏览器成功数据包不匹配时,先使用 references/session-contract-playbook.md 还原请求契约,再深入研究签名逻辑。

阶段 3:定位规范的变更点

按以下顺序追踪:

  1. 传输包装器、拦截器、beforeSend、fetch、Ajax、XHR、worker 或消息边界;冻结网络数据:空的 beforeSend IIFE 并不是签名器
  2. 引导脚本和内联载荷
  3. 暴露的辅助程序和返回的子对象
  4. WASM 导出或内部序列化器、打包器、签名器或解码器原语
  5. 服务端返回的质询和响应端刷新字段
  6. 帧序列化器、protobuf 解析器、握手记录和密钥调度

规范的变更点是网络数据形态的载荷实际发生变化的位置,而不是业务代码创建占位符的位置。

当存在具名摘要或具名的 AES/GCM/WASM 导出时,应使用固定输入进行验证,并在信任标准库之前固定帧、打包密钥布局和内部字段伪随机数生成器。优先检查由环境选择的摘要常量和浏览器分支,而不是 UI 或函数名称;转至 references/crypto-patterns.md。当 ALU 跟踪显示 0x9E3779B9,或 VM 将 4 字符打包为小端字节块时,也转至同一文件。

阶段 4:离线重建
  • 多层面验证器在出现类似令牌的内容后拒绝请求:先消融形态/状态链,填充日卡并关闭 K1-K8 开关;将与黄金样本的相似度视为虚假进展(references/verifier-morph-and-state-chain-playbook.md)。
  • 已有同系列的已解决骨架:先迁移主机/路径/状态链(references/case-reuse-playbook.md);不要重新开启行为墙主线。
  • 每次只攀升一级:固定输入一致性、窄范围边界观测、纯本地复现、窄范围主机引导,然后是有证据支持的主机表面修补。当阶段数与浏览器路径不同时,在重写算法前遵循 references/workflow-overview.md 中的多阶段收敛规则。在每一级内,只修补 references/reproducible-evidence-playbook.md 中的 first_divergence 最小单元,并在继续时重新验证证据是否仍然有效。
  • 对于重复的辅助函数调用,在添加浏览器 API 前,先运行 references/runtime-state-continuity-playbook.md 中的最小连续性矩阵:一个持久环境、一个全新环境,以及一个显式状态消融测试,并尽可能保持其他输入不变。
  • 升级前,记录最后一个已证实的产物、确切的盲点、为何下一级是最小步骤,以及如何保持交付不依赖浏览器。
  • 在扩大运行时、修补范围或传输配置前,阅读 references/escalation-ladder-playbook.md。
  • 当传输证据表明,最接近的受维护后端无法表达已纳入范围的浏览器配置时,在构建路由专用的原生适配器前,阅读 references/native-transport-profile-playbook.md。
  • 当不透明的分阶段产物仍依赖捕获的运行时输入时,阅读 references/opaque-runtime-profile-playbook.md;保留一次原子运行,逐阶段移植,并区分算法生成、快照驱动生成或池回放。非确定性输入源(Math.random / Date.now / canvas / audio)与会话绑定;绝不要用新会话脚本处理旧输入源。
  • 保留精确的序列化方式、字段槽位、封装、JSONP 回调、分隔符、压缩、加密及解码顺序。
  • 将 JS 摘要算法移植到 Python 时,先在冻结的前像上验证 uint32 截断、ROTL 边界情况以及逐字节打包掩码,再进行实时回放。
  • 对于字符串表密集型捆绑包,先使用非执行型 references/profiles/static-ast/index.md 检测器和保守重写,然后通过两遍重写离线还原解码器,再深入美化代码;参见 references/obfuscation-guide.md 和 references/offline-inline-deob-playbook.md。
  • 如果页面、关键词、正文、referer、时间戳或会话状态可能改变请求形态的产物,则在请求循环内重新生成这些产物。
  • 如果持久环境与全新环境的行为不同,则针对已证实的序列保留窄范围的本地辅助函数,并记录初始化、生命周期、重置、超时、清理和运行时版本;如果持久环境在首次加密后自行失效,则隔离或移植该加密步骤,而不是继续使用已失效的实例发送请求;不要把每次调用都启动子进程视为中性的实现细节。
阶段 5:验证可重复性并扩展规模

references/workflow-overview.md 将此阶段归纳为 阶段 5:交付(验证可重复性 + 交付打包)。阶段编号相同;并非第二套系统。

  • 使用固定输入或固定负载向量验证辅助工具和解码器。
  • 在扩展规模或缩减运行时之前,先在一条会话链上验证一次全新的单页重放。
  • 至少重复进行两到三次实时重放(声明硬门槛指标稳定时,验证器门槛为 10-20 次);辅助工具加载成功或外形类似铸造令牌的令牌都不能作为验收依据。
  • 对带有指纹/设备配套组件的验证器门控流程,请阅读 references/device-trust-sidecar-playbook.md 并标明交付级别 L0-L3;本地 SDK 运行时修补请参阅 references/local-sdk-env-patch-playbook.md。
  • 对验证器门控流程,请在一个完整轮次中验证必需的配套组件、同一环境中的共享状态、单一协议配置、实际请求时机、最终验证器语义,以及首个下游使用方。严格遵循上述顺序;在扩展重试之前,记录消融矩阵和本地错误语义映射。
  • 对验证器门控流程,验证正样本的质量:干净的成功样本优先于受污染的自动化失败样本。环境风险(出口 IP、自动化标记、连续失败)是独立于轨迹质量的失败面;若本地重放与干净成功样本不一致,请参照 references/failure-surface-taxonomy.md 分类,并使用 references/positive-sample-ablation-playbook.md 隔离各层。
  • 验证下一页或游标、路由切换、刷新行为、字段完整性以及相关权限边界。
  • 对异步导出,使用创建前的任务 ID 快照和条件匹配来验证创建,隔离轮询中的任务,并在下载列少于请求字段时阻止持久化;请参阅 references/async-export-job-playbook.md。
  • 尽早保存原始样本;响应形态意外时明确报错。

实施约定

  • 按职责拆分客户端、设置、引导、标头和 Cookie、签名、信封、解码、提取、重试、存储和测试。
  • 编写代码前绑定一个任务项目,并将动态证据保存在 js_reverse_cache/tasks/<task-id>/ 下;不要将操作系统临时目录、桌面投放文件夹、技能目录或隐藏浏览器配置文件用作主要存储位置。
  • 将稳定的脚手架与易变的捕获数据和生成的运行时数据块分开。
  • 分别编目服务器签发状态和本地计算状态。
  • 在确认可以复用之前,让需要大量引导的获取和重放保持在同一会话链上。
  • 在 UA/Client-Hints、Cookie/存储、指纹表面和传输/出口方面保持一个纯基线;参见 references/env-diff-playbook.md。区分 Chrome 页面世界复刻与本地 DOM 宿主。按 L0-L4 对宿主保真度评分(原生计数 / 序列 LCS / 值馈送 / 协议参数集 / eval sha256;不要与设备信任 L0-L3 或冒烟测试 L1-L4 混淆);无法通过画布或 navigator JS 补丁统计探测次数。不要将外部指纹缓存送入运行路径(references/environment-patch-playbook.md)。
  • 当线上出口数据与中间 getter、回调或 Cookie 存储区不一致时,以线上出口数据为准。
  • 如果流量在到达应用语义之前就中断,应单独测试传输准入。
  • 将确定性证明模式与实时生成模式分开。
  • 确保每个最终辅助工具都可独立运行,不依赖有运行时支持的前置导入。
  • 如果最终辅助工具具有状态,应明确其生命周期,并测试连续性和有意重置;实时 HTTP 仍由 Python 负责,辅助工具不得取代浏览器。
  • 仅通过 references/case-reuse-playbook.md 复用已有的已解决辅助工具:按精确范围或多个独立信号匹配,先运行固定向量,绝不要将复制的密钥或历史笔记提升为当前证明。

对于以 Python 为主的项目,使用 scripts/scaffold_reverse_project.py;使用 scripts/protocol_diff.py 比较请求或响应差异,使用 scripts/transport_profile_diff.py 比较结构化 TLS 和 H2 配置差异,使用 scripts/transform_trace_diff.py 比较分阶段运行时的一致性,并使用 scripts/crypto_fingerprint.py 获取初步编码或摘要提示。

对于可复用证据,请阅读 references/reproducible-evidence-playbook.md;使用 scripts/evidence_normalizer.py 创建经过脱敏、保留顺序的软件包,使用 scripts/transcript_diff.py 定位链路首次出现差异的位置,并使用 scripts/practice_lab.py 离线练习协议的正向和负向控制。

技能自带的回环练习实验室用于确定性固定测试数据评估,并非新的实时目标。仅使用直接 HTTP 对其进行探测;请勿在此自测中启用实时顺序启动门(fingerprint-baseline / debugger-trace)。

验证与报告

在与声明的形态相关的每个关卡都通过之前,不要标记为完成:

  • Startup Gate 为最新状态。
  • 对于实时声明,已证明真实端点、规范突变点和变化中的状态。
  • 对于全新的 Web live-target,已记录首轮的两个角色(fingerprint-baseline 和 debugger-trace)及其选定手段或明确缺口。缺口会阻止页面/运行时理解类声明;只有严格限定为仅传输的直接端点例外,仍可接受一项限定于单个端点、可运行的交付物。artifact-only Web 工作须说明这些表面尚未得到证明;非 Web 主目标则不在范围内,不得臆造 Web 浏览器证明。
  • 在相关情况下,已处理干净基线和观察者效应风险。
  • 固定输入的辅助工具或解码器检查已通过。
  • 非空或类似铸造的迹象、合理的长度、辅助工具加载、单次 HTTP 200、当前 Cookie、稳定的拒绝 JSON、与黄金样本的相似度或铸造变体计数都不构成验收标准;无需强制要求在单个黄金样本上锁定形态。
  • 在适用时,已记录 Cookie 来源、槽位放置、会话链完整性、传输、信封、解码、流、分页和权限规则。
  • 对于 compact-replay 和 collector,除非接受的结果是明确限定范围的离线重放,且已标明实时验收尚未得到证明,否则重复实时重放必须成功。
  • 任何最终重放或采集均不得使用浏览器自动化或浏览器配置文件。
  • 输出已按要求的格式保存。
  • 敏感产物已在任务专用的密钥存储区之外脱敏。持久化的规范化证据包使用 references/project-artifact-contract.md 中针对证据的清单架构;可运行的重放或采集清单还需记录能力、会话范围、辅助工具和重放证据,不得复制机密。无需写入文件的对话式证据结果不需要清单文件。

每个重要阶段完成后,使用 references/report-templates.md 中简明的阶段差异格式,并填写 browser_mode、curl impersonate、capsule major、business_request、unproven_routes 和 next_action;仅在重大决策和最终交付时使用完整模板。对于 compact-replay 和 collector,请以其简明协议交接摘要收尾,不要创建冗余的项目文档。始终报告所选家族、每个可用证据表面证明的内容、真实端点、变化部分、误导性信号、固定输入证明、最终协议路径、采集器/辅助工具的职责划分、保存路径、无浏览器状态和剩余不稳定性。仅在相关时补充 Cookie、观察者效应、同级路由、信封家族、解码、会话、分页或最小可验证事实的详情。

当出现可复用的家族时,使用 references/minimal-verifiable-facts-playbook.md 保留 5 至 15 条结构性事实。单次任务的经验应仅保留在任务范围内;在两次独立复现后,使用 references/experience-card-schema.md 只提升不变量、夹具、正反向判定依据和适用边界。

参考资料路由

仅加载与当前证据相符的参考资料,但要确保此处可直接找到每条路由。

核心工作流与维护
  • 专注于 Hook / env-patch / 纯 Python 路径:参见 Fast Routes and Ownership
  • references/profiles/browser-hook-snippets/index.md
  • references/profiles/static-ast/index.md
  • references/profiles/env-patch/index.md
  • references/runtime-state-continuity-playbook.md
  • references/pure-python-rebuild-playbook.md
  • references/startup-triage-playbook.md
  • references/workflow-overview.md(Phase 0-5 映射、多阶段稳定、阶段字段)
  • references/tool-playbook.md
  • 低观察者边界值捕获升级:references/silent-value-capture-playbook.md
  • MCP 家族选择与信号驱动的自动判定:在 artifact-only、Camoufox/managed host、chrome-devtools、js-reverse、silent-value-capture、passive wire stores、wire visibility 或 environment providers 之间做选择时,请阅读 references/mcp-routing-playbook.md
  • 本地附加端口或调试配置文件路径问题:references/local-mcp-environment.md
  • references/escalation-ladder-playbook.md
  • references/delivery-gate-playbook.md
  • references/anti-patterns-playbook.md
  • references/report-templates.md
  • references/doctrine-index.md
  • references/symptom-heuristics.md
  • references/pattern-atlas.md
  • references/minimal-verifiable-facts-playbook.md
  • references/provider-work-order.md
  • references/specialist-handoff-contract.md
  • 声明升级 / 双表面确认:references/evidence-corroboration-gate.md
  • 本地与成功的因果隔离:references/positive-sample-ablation-playbook.md
  • 多表面形态 / 状态链验证器:references/verifier-morph-and-state-chain-playbook.md
  • 主要故障表面标签与卡住时的下一步操作:references/failure-surface-taxonomy.md
  • 反机器人类别(签名绑定 / 拦截器 / 纯混淆):references/anti-bot-class-playbook.md
  • references/project-artifact-contract.md
  • references/case-reuse-playbook.md
  • references/experience-card-schema.md
  • 已推广的无密钥卡片:references/experience-cards/page-local-exception-needs-negative-control.json、references/experience-cards/standard-primitive-concat-before-custom-port.json、references/experience-cards/signer-egress-stub-must-match-callsite.json、references/experience-cards/server-clock-must-enter-observed-writer.json
请求路径、签名器与混淆
  • 签名器阶段对齐与有序回放失败阶梯:references/signer-parity-chain-playbook.md
  • 先检查 VM/拦截器的退出路径、嵌套标准 ISA 内存映像、操作码前的 protobuf serializeBinary / wasm encode(i32,i32)、反向跟踪、ALU 重叠 ID;参数替换后的编译函数体快照是密钥材料,而非调用跟踪;fromCharCode 热度(百万 vs 0)可诊断 VM 入口:references/jsvmp-analysis-playbook.md
  • 移植常量前,先检查修改过的标准摘要、原生存在性 IV/Tj/每轮 K/打包/压缩分支选择(Node 对提取出的摘要执行 eval 并非浏览器基准);自定义移植前先拼接常量池;在语句拆分下,具名 JSEncrypt/JSBN/RSA 仍需拼接 + PKCS#1(在金标 Token 策略确定前,先固定填充字符串;由于随机填充,结果不相等是预期的);缺少分组雪崩时保留打包的助手;具名 AES/GCM 若会产生雪崩,仍需检查打包密钥 / GCM 帧 / 金标对 XOR / 内层字段 PRNG;区分诱饵时间戳/PRNG 包装器与内层哈希器,或必须进入观测到的写入器的服务端时钟(签名器参数、查询时钟或 ajax success;而非冻结内层 Date);两阶段混合(占位符 vs 主机;无填充 vs 有填充十六进制;长度遵循第一阶段混合的十六进制);按尺寸指纹识别 DES/3DES/AES/RC4(具名 AES 下的短向量 8 字节 CT 实际是 DES/3DES;主机对象捕获路径可能重排密码键);TEA/XTEA 系列常量、字节码中的密钥恢复、uint32 移植、具名 MD5 时间戳双重未命中时保留打包的助手;哈希器内部对恢复出的 R 执行 eval/setInterval 是桩代码,并非原像;固定样本加密:references/crypto-patterns.md
  • 字符串表或混淆器风格的恢复、解码器完整性循环、每次获取时轮换的写入槽、庞大的图表/绘制器包装器与精简的列表 URL 模块:references/obfuscation-guide.md、references/offline-inline-deob-playbook.md
  • HTML 占位零值但没有列表 XHR;虚假的 HTTP 填充不会让 WebSocket 列表失效;chrome-devtools HTTP 日志会省略 WebSocket;跳过非 JSON 的 WS 前缀帧:references/decoy-and-real-request-playbook.md、references/structured-transport-playbook.md
  • 空的 beforeSend IIFE 不是签名器;冻结线上请求体:references/transport-wrapper-playbook.md
  • references/patched-helper-playbook.md
  • 不透明阶段、先收集再修补、嵌套内存映像、后端对比、同一会话的非确定性输入:references/opaque-runtime-profile-playbook.md
Cookie、引导状态与会话
  • 登录后的多层业务身份:references/multi-context-session-playbook.md
  • Cookie 写入器/刷新与 impersonate-jar 主机名绑定(空 domain 与仅主机 Cookie 的区分):references/cookie-provenance-playbook.md
  • references/session-contract-playbook.md
  • references/public-bootstrap-envelope-playbook.md
  • 挑战主键 / 同轮惩罚 HTML / 轮换的 document Token / 200 填充 JSON 惩罚 / 答案接受与完成锁存:references/challenge-state-envelope-playbook.md
  • 同一参数名的双写入器,Cookie 与查询参数或内存全局变量:references/dual-writer-param-playbook.md
  • 本地挑战执行器、init/observe/interact/sign、标记生命周期、正式后端选择;助手身份取决于参数数量和输入输出,而非 URL;视觉基准拖动起点是框的 x1,而非中心;OCR/验证码平台仅用于诊断,绝不用于采集器运行时:references/local-challenge-executor-playbook.md
  • 文档完成时创建加载锁存、Cookie 与查询参数的 WAF 槽位、轮换的 202 JS、Cookie 与 window 槽位、200 填充值惩罚:references/server-js-cookie-bootstrap-playbook.md
  • references/side-asset-bootstrap-playbook.md
绑定宿主的运行时与观测
  • 热读与因果宿主读取、页面世界副本与本地 DOM 宿主、WebIDL FTS、window.eval 构造器、易受 Proxy 影响的实时集合;暴露 webpack __wpRequire 并跳过 UI $mount;setTimeout 绝不能同步运行回调(通过 __drainTimers__ 驱动);一旦 impersonate 已返回业务 200,伪造 canvas/audio 对 cookie 铸造辅助程序就可能足够;在 Camoufox 前可配置删除 CDP webdriver:references/environment-patch-playbook.md
  • 本地供应商指纹 SDK 运行时:references/local-sdk-env-patch-playbook.md
  • references/embedded-browser-runtime-playbook.md
  • 混合脚本字符集、未命名 meta 内容、page.load baseURL、ThreadPool 隔离、Node 诱饵铸造与原生宿主:references/iv8-runtime-cheatsheet.md
  • 重建加密链前,先使用公开的多元数导出预言机;cookie/重定向仍然优先:references/challenge-artifact-harvest-playbook.md
  • 在 Number.prototype.toString、TextEncoder.encode 上添加包装,以及对 TypedArray / 实时集合使用 Proxy,都会毒化观察;参数替换后通过 Function 构造器/eval 编译函数体是关键材料;绝不包装全局 Function.prototype.apply/call;Array.join 可能暴露明文:references/hook-techniques.md
  • Function("debugger") / Function("while (true) {}") 会卡住,包括 live js-reverse 重新调用;仅精确剥除函数体;某个构造器外的一处无效 !== 不会清除 attach;解码器完整性循环、debugger 操作码、哈希器内部对已恢复 R 的 eval/setInterval(替换宿主,保留摘要);MCP select_page 超时表示 debugger_attach_gap,之后应离线提取;JSVMP 的 XHR 因 webdriver 静默并不表示 attach 卡住:references/anti-debug-playbook.md
传输、解码与结构化协议
  • 异步导出、报告下载、任务隔离:references/async-export-job-playbook.md
  • 同级路由返回 200,而此路由的标准库请求返回 403:在重启签名器或逆向 canvas 前,先对同一组获准的令牌字节移除已安装的 curl impersonate:references/transport-pre-gate-playbook.md
  • references/native-transport-profile-playbook.md
  • HTML 中 CSS 精灵图的隐藏类 / 流内偏移 / 图像字节标识、字体或字形映射、JSON 数值中的 CR/LF 去除:references/response-decode-playbook.md
  • UTF-8 MCP 转储会损坏 protobuf;在序列化器处捕获十六进制;过期时钟桶令牌会返回 403;跳过非 JSON WebSocket 前缀/确认帧:references/structured-transport-playbook.md
  • references/stateful-stream-e2ee-playbook.md
验证器、分页、异常与恢复
  • 设备信任伴随门控 / L0-L3:references/device-trust-sidecar-playbook.md
  • 本地指纹 SDK 环境补丁:references/local-sdk-env-patch-playbook.md
  • 网关/授权/业务接受、同一世界、配置身份、重试/冒烟测试阶梯;源类别与所有权类别正交:references/verifier-replay-playbook.md、references/parameter-ownership-playbook.md
  • 已签发的挑战图片/令牌必须被消耗;未使用的提取可能会毒化会话通过率;接受率和拒绝率可能是不同的指标:references/challenge-state-envelope-playbook.md
  • references/verifier-error-localization-playbook.md
  • 多表面形变/状态链门控:references/verifier-morph-and-state-chain-playbook.md
  • 正样本卫生处理与卫生处理后的行为校准:references/positive-sample-hygiene-playbook.md
  • references/pagination-route-pivot-playbook.md
  • references/page-specific-exception-playbook.md
  • 下一步操作卡住时的症状处理方案:references/troubleshooting-playbook.md
技能验证
  • 维护、官方套件与独立行为审查:references/skill-maintenance.md、references/official-self-test-task-suite.md、references/forward-testing-playbook.md

维护此技能

编辑前,请阅读 references/skill-maintenance.md。根据 references/official-self-test-task-suite.md 进行验证,并在存在 scripts/validate_skill.py 时运行它。默认验证是静态的;仅针对可信的当前技能根目录运行 scripts/validate_skill.py --run-trusted-self-tests。需要机器可读的 JSON 套件时,请使用 scripts/validate_skill.py --export-tests <path-outside-skill>;将 Markdown 套件保留为唯一事实来源。静态 PASS 并不能证明行为正确。若要声称行为未发生回归,请遵循 references/forward-testing-playbook.md,并使用 scripts/forward_test_report.py 验证由外部新运行器和独立审核者提供的报告;报告和响应产物应保存在此技能目录树之外。

将可复用的详细内容放在最具体的参考文档中。保留此条目作为协议优先的执行路径和直接路由器。保留通用事实和固定向量,绝不保留实时密钥、复制的 Cookie、账户令牌或特定网站的传闻。

归根结底

当网站看起来只能通过浏览器操作时,先弄清楚真正的请求是什么、哪些状态确实发生了变化,以及能否在本地重建这些状态。

有了网络传输证据和可重复回放,这些目标大多都能迎刃而解。

评论

支持 Markdown