本篇是"高强度档"目标的技术核心。所有结论基于 2026 年一手基准与工具现状(见 09)。 定位:让代表用户行事的合法 Agent 不被反自动化系统误判封锁——一致性优先于欺骗,硬挑战升级人工(责任使用见 00 §6)。
flowchart TB
subgraph L_APP["① JS 指纹层(页面加载后)"]
A1["navigator.webdriver / UA-CH"]
A2["canvas / WebGL / audio 指纹"]
A3["screen / 字体 / 时区 / 语言"]
end
subgraph L_NET["② TLS / 网络层(连接建立时)"]
B1["TLS ClientHello / JA3 / JA4"]
B2["HTTP/2 SETTINGS 帧序"]
B3["源 IP 的 ASN(住宅 vs 机房)"]
end
subgraph L_PROTO["③ 自动化协议层(浏览器怎样被驱动)★"]
C1["Runtime.enable / Target.setAutoAttach 握手形状"]
C2["CDP 连接方式(TCP 端口 vs pipe)"]
C3["WebDriver / ChromeDriver 标记"]
end
NOTE["★ 第三层是‘悬崖’:<br/>Playwright/Puppeteer 及其补丁(patchright/rebrowser)<br/>仍在此层泄漏,被 Cloudflare/DataDome 最硬目标拦截"]
L_PROTO --- NOTE
基准实证(Ian Paterson 2026,31 目标 × 7 工具 × 3 轮 = 651 判定):
- 唯一 0 拦截 的是 nodriver(裸 CDP 直连系统 Chrome,控制面无 Playwright)。
- vanilla Playwright 与 rebrowser 拦截集完全相同——CDP-leak 补丁在最硬目标上"等于没打"。
- patchright 仅比 vanilla 多过 1 个,靠的更多是
channel=chrome(真实 Chrome 版本+TLS),而非补丁本身。 - 代理不救命:代理只改第②层的 IP;TLS/HTTP2/JS 指纹全部源自真实宿主。Linux VPS + 住宅代理反而制造"矛盾",比未代理的 Mac 更容易被拦。
对设计的三条硬约束(本次重估的依据):
- 高强度档必须放弃 Playwright 控制面,改用裸 CDP。
- 形状一致性(同宿主的 IP/TLS/JS/HTTP2 自洽)比任何单点技巧更重要。
- 本地跑真实 Chrome、headful 是最优隐身宿主——与你选的 local-first 天然契合。
不追求"一个万能隐身浏览器",而是按目标站点选择最小够用档(基准第一条建议:"先判断目标 gate 在哪一层")。
flowchart LR
T0["T0 · 无浏览器<br/>TLS 一致 HTTP"]:::t --> T1["T1 · 均衡<br/>Patchright + channel=chrome"]:::t --> T2["T2 · 高强度<br/>裸 CDP pipe 直驱系统 Chrome"]:::t --> T3["T3 · 极限<br/>T2 + 身份/代理轮换 + patched 二进制"]:::t
classDef t fill:#0b3,stroke:#093,color:#fff
| 档 | 何时用 | 传输/手段 | 过哪层 | 成本 | 参考实现 |
|---|---|---|---|---|---|
| T0 | 页面无需执行 JS(静态/已知 XHR) | curl_cffi / bogdanfinn tls-client:Chrome 形状 TLS+H2 | ②TLS | 极低(无浏览器进程) | curl_cffi(impersonate=chrome) |
| T1 | 主流电商/内容站,仅 JS 指纹 gate | Patchright(channel=chrome 真实 Chrome)+ 行为合成 |
①JS +部分② | 中 | patchright + humanization-playwright |
| T2 | Cloudflare/DataDome/Akamai 等自动化协议层 gate | 裸 CDP over pipe(--remote-debugging-pipe,无 TCP、无 Runtime.enable)直驱系统 Chrome,headful,(profile,seed) 一致性指纹,OS 级输入 |
①②③ | 高 | nodriver / mochi(pipe,MIT) / veil |
| T3 | 单 IP 会累积风控、需长跑高频 | T2 + 住宅身份/代理轮换池 + 必要时 patched 二进制(camoufox 的 Firefox TLS 白名单效应)+ CAPTCHA 升级人工 | ①②③ + 声誉 | 最高 | T2 + 代理编排 + camoufox/Cloak(按需) |
为什么这样切档而不是"永远用最强档":
- T2/T3 更贵、更重(如 Patchright 峰值内存 13GB 级 vs curl 58MB),且 Firefox 系(camoufox)在个别 CDN 上因 TLS 怪癖反而被拦(如 dev.to)——没有免费的最强。
- 站点差异极大:同一批工具在 25/31 目标上判定一致,信号只集中在 6 个目标。按站点选档 + 记忆才是最优。
flowchart TD
REQ["会话请求(目标域, 站点策略)"] --> MEM{"该域有历史档位?"}
MEM -->|有| USE["用记忆档位启动"]
MEM -->|无| PROBE["闸门探针:<br/>轻量请求判定 gate 层(JS/TLS/协议)"]
PROBE --> PICK["选最小够用档"]
PICK --> USE
USE --> RUN["执行"]
RUN -->|被拦/挑战| ESCUP["升一档 + 记忆"]
ESCUP --> USE
RUN -->|命中硬挑战(图形/风控人机)| HUMAN["升级人工(onEscalation)"]
RUN -->|成功| SAVE["记忆该域最优档位 + 成功身份画像"]
- 闸门探针(gate probe):首次访问用低成本探测判断目标 gate 在哪层,避免无脑上最强档。
- 升级记忆:被拦即升档并把"域→最优档位/身份"写入策略库,后续直接命中。
- 硬挑战边界:图形/音频验证码、风控人机 → 不盲目对抗,触发
onEscalation交人(N3/责任使用)。这是明确的已知边界,对应 SC4。
原则(借鉴 mochi 的 48 规则关系型 DAG):所有指纹面从单一 (profile, seed) 派生、跨面自洽,绝不逐面随机(I-3)。一次跨面对比(如 Mac UA 却配 Linux WebGL)就会破功。
flowchart TD
SEED["(profile, seed)<br/>profile=mac-m4-chrome-stable, seed=identity-A"] --> DAG["关系型派生 DAG"]
DAG --> UA["UA / UA-CH"]
DAG --> GPU["WebGL/ANGLE renderer"]
DAG --> CANVAS["canvas/audio 指纹"]
DAG --> SCREEN["screen/DPR/字体"]
DAG --> TZ["时区/语言/地理"]
DAG --> BEH["行为参数(hand/tremor/wpm)"]
subgraph COHERE["强制自洽"]
UA -.同一OS家族.-> GPU
TZ -.对齐IP地理.-> SCREEN
end
设计要点:
- 一身份一
(profile, seed):同一逻辑身份复用同一画像,字节级稳定(长期可信、可累积正常声誉)。 - 宿主 OS 匹配优先:darwin/arm64 →
mac-m4-chrome-stable。在本地 Mac 上就用 Mac 画像——与真实宿主一致(mochi 的核心论点:真实即最优)。 - 地理一致性:时区/语言/
navigator与出口 IP 地理对齐;代理时同步校正,冲突则GeoMismatch拒启(避免制造矛盾)。 - 真实网络走浏览器自身:
session.fetch也经 Chromium 发出,使 JA4/JA3/H2 天然是真 Chrome,杜绝"旁路 HTTP 层"泄漏(mochi 的 no-parallel-HTTP 思路)。 - 持久化真实 Profile:cookies/localStorage 持久化,让身份"有历史",比全新会话更像真人。
反机器人已进入行为生物特征层(BioCatch/NuData 等)。仅有静态指纹不够,动作动力学也要像人。
flowchart LR
subgraph MODEL["生物力学模型(按身份画像参数化)"]
MOUSE["鼠标:三次 Bezier 路径 + overshoot/correction<br/>+ Fitts 定律运动时长 + Gaussian 抖动"]
TYPE["键入:lognormal digraph 延迟<br/>+ 偶发错字/回删 + 空格后停顿"]
SCROLL["滚动:惯性减速 + 阅读停顿估计"]
HES["重要性缩放:submit/pay/confirm 前迟疑更久"]
end
MODEL --> INPUT["OS 级输入注入(CDP-Patches)<br/>避开 CDP 输入指令泄漏"]
关键设计点:
- 参数按身份画像绑定:
hand(左右手)、tremor(抖动)、wpm(打字速度)、scrollStyle从 seed 派生——同一身份行为风格稳定,不同身份有别。 - OS 级输入优先:高强度档用 OS 级/CDP-Patches 注入输入,而非
dispatchMouseEvent,避免可被检测的 CDP 输入痕迹。 - 回放期重采样(核心,I-2):确定性回放不复刻探索时的轨迹/时序,而是每次从模型重新采样。理由:逐帧复刻的固定节奏本身就是"这是回放机器人"的强签名。记录做什么,重合成怎么做。
- 重要性缩放停顿:在"下单/支付/确认"等高风险控件前加更长的人类式犹豫,符合真人心理节奏。
对应传统 RPA 的 Object Repository,但多模态、可自愈。它既服务回放稳定性,也减少"因定位失败而触发的高成本重探索"。
flowchart TD
EL["目标元素"] --> ML["多模态定位器束(按韧性排序)"]
ML --> R1["① 语义/AX:role+accessible name(抗样式漂移)"]
ML --> R2["② 稳定属性:data-testid / aria / name"]
ML --> R3["③ CSS / XPath(快路径,脆)"]
ML --> R4["④ 视觉锚点:相对布局/图标/OCR 文本(兜底)"]
R1 --> RANK["回放命中率反馈 → 动态重排(自学习)"]
R2 --> RANK
R3 --> RANK
R4 --> RANK
- 每步 ≥2 种定位器(探索期强制生成,见 02)。
- 韧性排序自学习:L1 自愈命中哪种,就把它提前(与 02 §5 回写呼应)。
- AX-tree ref 优先(借鉴 Stagehand/veil):给 Agent 稳定整型
ref,"Agent 永不手写选择器"。
flowchart LR
subgraph GOOD["✅ 形状一致(本地 Mac)"]
G1["住宅 IP(本机)"] --- G2["macOS Chrome TLS"] --- G3["macOS Chrome JS 指纹"] --- G4["macOS H2 帧序"]
end
subgraph BAD["❌ 制造矛盾(Linux VPS+住宅代理)"]
B1["住宅 IP(代理)"] -.冲突.- B2["Linux TLS/JS 指纹"]
end
- 本地优先=隐身最优:不额外引入代理时,本机的 IP/TLS/JS/H2 天然自洽——这是最难被抓的形态。
- 何时才上代理/轮换(T3):单 IP 长跑高频会累积站点声誉风险时。此时代理出口地理必须与画像地理一致,且优先住宅。轮换用于"防止声誉累积",不是用于"伪装地理"。
- 一致性校验器:启动前校验 IP 地理 vs 时区/语言/画像;不一致则拒启或自动校正,绝不带矛盾上场。
| 边界 | 现状 | Agent-RPA 策略 |
|---|---|---|
| 反调试陷阱(incolumitas / are_you_a_bot) | 所有 CDP 驱动工具同样触发(需 C++ 级修改) | 标记为已知限制,必要时 T0 旁路或人工 |
| 图形/音频验证码、风控人机 | 自动对抗越界且不稳定 | 升级人工(onEscalation),不盲解 |
| 机房 IP 冷会话被 IP-class 评分 | 服务端行为 | 走本地住宅 IP / T3 住宅代理 |
| Firefox 系 TLS 怪癖(camoufox 在个别 CDN 被拦) | 工具固有 | 按站点选档,不默认最强 |
| 目标临时换风控厂商 | 快照非永久事实 | 升级记忆 + 定期重探针 |
诚实原则:蓝图明确"哪些做不到、遇到就升级人工",而不是承诺"万能绕过"。这既是工程务实,也是责任使用底线。
- Site Policy:每域可配 速率上限 / 禁行区 / 是否允许高风险动作(下单支付)。
- 机密隔离:凭据只在 Vault,注入仅驻内存;日志/回放默认脱敏(I-5)。
- 审计留痕:每次运行留截图/动作/网络摘要,支持事后审计。
- 许可提示:nodriver 为 AGPL-3.0——本地个人使用无碍,若未来做联网服务分发需评估开源义务(见 08 选型)。
- 高强度档采用裸 CDP、无 Playwright 控制面、直驱真实 Chrome(对应 SC3,第③层)。
- 隐身阶梯 T0–T3 + 自动选档 + 升级记忆(对应 SC3/SC4)。
- 指纹从单一
(profile,seed)派生、跨面自洽(I-3)。 - 行为合成 Bezier/Fitts/lognormal + OS 级输入 + 回放重采样(I-2)。
- 形状一致性校验(IP/TLS/JS/地理),本地优先。
- 硬挑战升级人工、已知边界清单、机密隔离与审计(SC4/SC8)。