Stealth Browser技能使用说明
2026-03-28
新闻来源:网淘吧
围观:14
电脑广告
手机广告
隐形浏览器技巧 🥷
可绕过Cloudflare Turnstile、Datadome及激进指纹检测的反机器人浏览器自动化工具。
适用场景
- 标准Playwright/Selenium被拦截时
- 网站显示Cloudflare验证或"正在检查浏览器"
- 需要抓取Airbnb、Yelp等受保护网站
playwright-stealth已失效时
工具选择指南
| 目标难度 | 推荐工具 | 适用场景 |
|---|---|---|
| 浏览器方案 | Camoufox | 全防护网站 - Cloudflare、Datadome、Yelp、Airbnb等 |
| 纯API方案 | curl_cffi | 无需浏览器,仅需TLS伪装 |
快速开始
所有脚本均在pybox隔离环境中运行(基于distrobox)。
⚠️使用python3.14明确指定- pybox 可能安装了多个具有不同包的 Python 版本。
1. 设置(首次使用)
# 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)
2. 获取受保护页面
浏览器(Camoufox):
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py "https://example.com" --headless
仅 API(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秒),而非固定间隔。
- 会话粘性:使用相同的代理IP进行10-30分钟的会话,不要每个请求都更换。
无头模式警告
⚠️ 旧版--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.14libstdc++.so.6 |
错误NixOS库路径问题 - 在pybox中使用 | python3.14Python版本问题 (NixOS/pybox)pybox |
Python Version Issues (NixOS/pybox)
Thepybox容器可能包含多个Python版本,各自拥有独立的site-packages目录:
# 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:如果被重定向到谷歌/认证域,请重新认证一次并更新配置文件
登录墙检测
脚本通过多种信号检测会话过期:
- HTTP状态码:401、403
- URL模式:
/login、/signin、/auth - 标题模式:"login"、"sign in"等
- 内容关键词:"captcha"、"verify"、"authenticate"
- 表单检测:密码输入字段
如果在--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— 反机器人系统检测项目说明
文章底部电脑广告
手机广告位-内容正文底部


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