Camoufox Stealth Browser技能使用说明
伪狐隐踪浏览器 🦊
C++ 层级使用 Camoufox 实现反机器人规避——这是一个定制的 Firefox 分支版本,其隐身补丁直接编译进浏览器内核,而非通过 JavaScript 外挂实现。
为何 Camoufox 优于基于 Chrome 的解决方案
| 实现方式 | 检测层级 | 工具对比 |
|---|---|---|
| Camoufox(本方案) | C++ 编译型补丁 | 浏览器内核级不可检测指纹 |
| undetected-chromedriver | JS 运行时补丁 | 可能被时序分析检测 |
| puppeteer-stealth | JS 注入 | 页面加载后应用补丁 = 可被检测 |
| playwright-stealth | JS 注入 | 存在相同局限性 |
Camoufox 在源代码层级对 Firefox 进行补丁修改— WebGL、Canvas、AudioContext 指纹是真正被篡改的,而非通过JavaScript覆盖来屏蔽,后者可被反机器人系统检测到。

主要优势
- C++ 级别的隐匿性— 指纹篡改编译进浏览器,而非使用JS技巧
- 容器隔离— 在 distrobox 中运行,保持主机系统清洁
- 双工具策略— Camoufox 用于浏览器,curl_cffi 用于纯API调用(无浏览器开销)
- 基于 Firefox— 比 Chrome 指纹更少(机器人都用 Chrome)
适用场景
- 标准 Playwright/Selenium 被拦截时
- 网站显示 Cloudflare 验证或“正在检查您的浏览器”时
- 需要抓取 Airbnb、Yelp 或类似受保护网站时
puppeteer-stealth或undetected-chromedriver停止工作时- 您需要真正的隐蔽性,而非JS临时方案
工具选择
| 工具 | 级别 | 最佳适用场景 Camoufox |
|---|---|---|
| C++补丁 | 所有受保护站点 - Cloudflare, Datadome, Yelp, Airbnb | curl_cffi |
| TLS欺骗 | 仅限API端点 - 无需JS,速度极快 | 快速开始 |
所有脚本运行于
pyboxdistrobox隔离环境⚠️
请使用python3.14明确指定版本- pybox可能安装了多个Python版本且包含不同软件包1. 首次设置
2. 获取受保护页面
# Install tools in pybox (use python3.14)
distrobox-enter pybox -- python3.14 -m pip install camoufox curl_cffi
# Camoufox browser downloads automatically on first run (~700MB Firefox fork)
浏览器方案(Camoufox):
纯API方案(curl_cffi):
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py "https://example.com" --headless
API only (curl_cffi):
distrobox-enter pybox -- python3.14 scripts/curl-api.py "https://api.example.com/endpoint"
架构
┌─────────────────────────────────────────────────────────┐
│ OpenClaw Agent │
├─────────────────────────────────────────────────────────┤
│ distrobox-enter pybox -- python3.14 scripts/xxx.py │
├─────────────────────────────────────────────────────────┤
│ pybox Container │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Camoufox │ │ curl_cffi │ │
│ │ (Firefox) │ │ (TLS spoof)│ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
工具详情
Camoufox
- 简介:内置C++级别隐身补丁的定制版Firefox浏览器
- 优点:最佳指纹规避效果,自动通过Turnstile验证
- 缺点:约700MB下载量,基于Firefox内核
- 最佳适用场景:所有受保护网站 - Cloudflare、Datadome、Yelp、Airbnb
curl_cffi
- 简介:支持浏览器TLS指纹伪装的Python HTTP客户端
- 优点:无浏览器开销,速度极快
- 缺点:无法执行JavaScript,仅适用于API端点
- 最佳适用场景:已知API端点、移动应用逆向工程
关键提醒:代理要求
数据中心IP(AWS、DigitalOcean)= 在Airbnb/Yelp上会立即被封禁
您必须使用住宅或移动代理:
# Example proxy config
proxy = "http://user:pass@residential-proxy.example.com:8080"
参见references/proxy-setup.md了解代理配置。
行为提示
像 Airbnb/Yelp 这样的网站会使用行为分析。为避免被检测到:
- 预热:不要直接访问目标URL。先访问主页,滚动页面,点击浏览。
- 鼠标移动:注入随机的鼠标移动(Camoufox 会处理这个)。
- 时间间隔:添加随机延迟(操作之间间隔2-5秒),不要使用固定的时间间隔。
- 会话粘性:在10-30分钟的会话中使用相同的代理IP,不要每个请求都更换。
无头模式警告
⚠️ 旧的--headless标志会被检测到。可选方案:
- 新版无头模式:使用
headless="new"(Chrome 109+ 版本) - Xvfb:在虚拟显示中运行有头浏览器
- 有头模式:如果可以,直接运行有头模式(最可靠)
# Xvfb approach (Linux)
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
python scripts/camoufox-fetch.py "https://example.com"
故障排除
| 问题 | 解决方案 |
|---|---|
| 立即出现"访问被拒绝" | 使用住宅代理 |
| Cloudflare验证循环 | 尝试使用Camoufox代替Nodriver |
| 浏览器在pybox中崩溃 | 安装缺失的依赖项:sudo dnf install gtk3 libXt |
| TLS指纹被阻止 | 使用curl_cffi并设置impersonate="chrome120" |
| 出现Turnstile复选框验证 | 添加鼠标移动,增加等待时间 |
ModuleNotFoundError: camoufox | 使用python3.14而非python或python3 |
greenlet段错误(退出码 139) | Python 版本不匹配 - 请显式使用python3.14显式地 |
libstdc++.so.6错误 | NixOS 库路径问题 - 请在 pybox 中使用python3.14在 pybox 中 |
Python 版本问题(NixOS/pybox)
该pybox容器可能包含多个具有独立 site-packages 的 Python 版本:
# Check which Python has camoufox
distrobox-enter pybox -- python3.14 -c "import camoufox; print('OK')"
# Wrong (may use different Python)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py ...
# Correct (explicit version)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py ...
如果遇到段错误或导入错误,请始终显式使用python3.14显式地。
示例
抓取 Airbnb 房源信息
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py \
"https://www.airbnb.com/rooms/12345" \
--headless --wait 10 \
--screenshot airbnb.png
抓取 Yelp 商家信息
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py \
"https://www.yelp.com/biz/some-restaurant" \
--headless --wait 8 \
--output yelp.html
使用 TLS 欺骗进行 API 抓取
distrobox-enter pybox -- python3.14 scripts/curl-api.py \
"https://api.yelp.com/v3/businesses/search?term=coffee&location=SF" \
--headers '{"Authorization": "Bearer xxx"}'
会话管理
持久会话允许跨运行复用已认证状态,无需重新登录。
快速开始
# 1. Login interactively (headed browser opens)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile airbnb --login "https://www.airbnb.com/account-settings"
# Complete login in browser, then press Enter to save session
# 2. Reuse session in headless mode
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile airbnb --headless "https://www.airbnb.com/trips"
# 3. Check session status
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile airbnb --status "https://www.airbnb.com"
标志
| 标志 | 描述 |
|---|---|
--profile 名称 | 用于会话存储的命名配置文件(必需) |
--login | 交互式登录模式 - 打开带界面的浏览器 |
--headless | 在无头模式下使用已保存的会话 |
--status | 检查会话是否有效 |
--export-cookies 文件 | 将Cookie导出为JSON文件用于备份 |
--import-cookies 文件 | 从JSON文件导入Cookie |
存储
- 位置:
~/.stealth-browser/profiles/<名称>/ - 权限:目录
700,文件600 - 配置文件名称:仅限字母、数字、
_,-(1-63个字符)
Cookie 处理
- 保存:浏览器配置文件中存储的所有域的所有 Cookie
- 恢复:仅使用与目标 URL 域匹配的 Cookie
- 单点登录 (SSO):如果被重定向到 Google/认证域,则重新认证一次并更新配置文件
登录墙检测
脚本使用多种信号检测会话过期:
- HTTP 状态码:401, 403
- URL 模式:
/login,/signin,/auth - 标题模式:"登录"、"登入"等。
- 内容关键词:"验证码"、"验证"、"身份验证"
- 表单检测:密码输入字段
如果在--headless模式下检测到,您将看到:
🔒 Login wall signals: url-path, password-form
使用--login重新运行以刷新会话。
远程登录(SSH)
由于--login需要一个可见的浏览器,您需要显示转发:
X11 转发(首选):
# Connect with X11 forwarding
ssh -X user@server
# Run login (opens browser on your local machine)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile mysite --login "https://example.com"
VNC 替代方案:
# On server: start VNC session
vncserver :1
# On client: connect to VNC
vncviewer server:1
# In VNC session: run login
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile mysite --login "https://example.com"
安全须知
⚠️Cookie 是凭证。请像对待密码一样对待配置文件目录:
- 配置文件目录应设置为
chmod 700(仅限所有者) - Cookie导出功能已
chmod 600 - 不要通过不安全的渠道共享配置文件或导出的Cookie
- 考虑对备份进行加密
局限性
| 局限性 | 原因 |
|---|---|
| localStorage/sessionStorage 无法导出 | 请改用浏览器配置文件(可自动处理) |
| IndexedDB 不具备可移植性 | 存储在浏览器配置文件中,而非 Cookie 导出文件 |
| 不支持并行访问配置文件 | v1版本无文件锁定机制;请为每个配置文件使用独立进程 |
参考文档
- references/proxy-setup.md— 代理配置指南
- references/fingerprint-checks.md— 反机器人系统检测项说明


微信扫一扫,打赏作者吧~