第 110 章 反检测工具链全景(undetected / Camoufox / patchright)
第 106-109 章讲方法与案例;本章是工具选型手册:当前主流的反检测浏览器工具,各自消除哪些特征、适用场景、维护状态。工具选对 = 事半功倍;选错 = 浪费时间在无效配置上。
📍 知识点地图 | 主题:反检测工具链 | 前置:第106-107章 | 后续:— | 核心概念:patchright、Camoufox、Botasaurus、指纹稳定性
110.1 反检测工具分类(先选类)
按实现方式:
1. 自动化库补丁(消除自动化特征): undetected-chromedriver / patchright
2. 定制浏览器(自带反指纹): Camoufox / Antidetect 浏览器
3. 指纹管理框架(会话级指纹): Botasaurus / 自建指纹库
4. 网络层工具(TLS 指纹): curl-impersonate / curl_cffi(第 107.4)
选型原则:
弱防护(Cloudflare 基础)→ 补丁库够用
强防护(Kasada/Akamai)→ 定制浏览器或真实浏览器(第 106 路线 A)
网络层(API 调用)→ TLS 工具
110.2 undetected-chromedriver(经典补丁库)
原理: 修改 chromedriver,隐藏 automation 特征(webdriver/cdc 标记)
语言: Python
状态: 老牌,更新放缓(Chrome 版本跟进较慢)
优点:
□ 使用简单(替换 webdriver)
□ 对弱-中防护有效
缺点:
□ 大版本 Chrome 更新后失效风险
□ 只消除"已知特征"(新检测点覆盖不全)
使用:
import undetected_chromedriver as uc
driver = uc.Chrome(headless=False)
driver.get("https://target.com")
110.3 patchright(Playwright 补丁,现代推荐)
原理: 给 Playwright 打补丁(消除 webdriver/cdp 等特征)
语言: Python/JS
状态: 活跃维护,跟随 Playwright/Chromium 更新
优点:
□ API 就是 Playwright(第 93 章技能直接复用)
□ 更新快(对新检测跟进好)
□ 有头/无头都可用
使用(Python):
from patchright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://target.com")
110.4 Camoufox(定制 Firefox,强反指纹)
原理: 基于 Firefox 的定制浏览器(自带反检测补丁)
□ 消除 webdriver 特征
□ 伪造 canvas/WebGL/字体(保持内部一致)
□ 随机化指纹(每会话不同但一致)
语言: Python(Playwright API)
状态: 活跃,社区维护
优点:
□ 指纹一致性处理好(自动)
□ 对 Akamai 类指纹平台有效
缺点:
□ Firefox 内核(部分站点对 Firefox 有差异)
□ 自定义选项需学习
使用:
from camoufox.sync_api import Camoufox
with Camoufox(headless=False) as browser:
page = browser.new_page()
page.goto("https://target.com")
110.5 商业反检测浏览器(Antidetect)
原理: 商业浏览器(每会话全新指纹: UA/canvas/WebGL/字体/TLS)
代表: Multilogin / GoLogin / AdsPower / Dolphin Anty
适用:
□ 大规模多账号(每个会话独立指纹)
□ 高要求指纹一致性
□ 团队协作(共享指纹库)
注意:
□ 收费
□ 指纹"随机化"≠"真实"(部分检测能识别合成指纹)
□ 仍需行为真实(第 107.5)
110.6 Botasaurus(框架级,批量抓取)
原理: 基于 undetected 的抓取框架(指纹管理+代理+限速)
□ 会话级指纹轮换
□ 内置反检测配置
□ 批量任务管理(队列/重试/结果存储)
适用: 大规模抓取项目(需要工程化时)
使用:
from botasaurus import *
@browser(proxy="http://...", user_data_dir="profiles/1")
def scrape_task(driver):
driver.get("https://target.com")
return driver.page_source
110.7 网络层工具(TLS 指纹,API 场景)
curl-impersonate(第 107.4): CLI + 浏览器 TLS 指纹
curl_cffi: Python(requests 兼容)
tls-client: 配置 JA3/cipher
适用: 不需要浏览器渲染,直接调 API(路线 C 场景)
注意: 只解决 TLS 层 → JS 层 token 仍需解决(第 13 章)
110.8 指纹稳定性工程(多会话一致性的关键)
问题: 多会话指纹不一致(每次 UA/canvas 不同)→ 被关联
方案:
□ 固定会话配置(每个任务用同一指纹配置)
□ 指纹持久化(user_data_dir 复用)
□ 一致性校验(上线前用检测页自查,第 107.7)
工具:
□ Botasaurus 的 user_data_dir 机制
□ 自建"指纹配置文件"(每任务一个)
□ 指纹检测页批量自查
110.9 工具选型决策表
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| 弱防护 + 简单任务 | patchright(无补丁也够) | 简单直接 |
| 中防护自动化 | patchright + stealth | 更新快 |
| 强防护(Akamai 指纹) | Camoufox | 指纹一致性自动 |
| 最强防护(Kasada) | 真实浏览器+人工(106 路线 A) | 补丁库都不够 |
| 批量抓取 | Botasaurus | 工程化 |
| API 调用(无浏览器) | curl_cffi / curl-impersonate | TLS 层 |
| 多账号隔离 | 商业反检测浏览器 | 会话独立 |
110.10 检查清单
□ 防护强度评估(选工具)
□ 工具安装与环境
□ 自动化特征消除验证(webdriver 等)
□ 指纹一致性检查(检测页)
□ TLS 指纹验证(API 场景)
□ 行为模拟配置(第 107.5)
□ 频率/代理配置(第 112 章)
□ 成功率记录与迭代
动手练习
- 用 patchright 启动一个页面,检查 navigator.webdriver 是否消失。
- 用 Camoufox 启动,对比它和普通 Firefox 的 canvas/字体指纹差异。
- 用 Botasaurus 搭一个 2 任务的小批量抓取(不同 user_data_dir)。
- 用 tlsfingerprint.io 对比 curl_cffi 与真实浏览器的 JA3。
深入阅读
- 本教材:第 106 章(四路线)/ 第 107 章(指纹与行为)
- 本教材:第 93 章(Playwright 基础)
- 外部: patchright / Camoufox / Botasaurus / curl-impersonate 官方文档