网淘吧来吧,欢迎您!

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等网站会进行行为分析。为避免被检测:

  1. 预热:不要直接访问目标URL。先访问首页,滚动页面,随意点击。
  2. 鼠标移动:注入随机鼠标移动(Camoufox可处理此功能)。
  3. 时间间隔:添加随机延迟(操作间隔2-5秒),而非固定间隔。
  4. 会话粘性:使用相同的代理IP进行10-30分钟的会话,不要每个请求都更换。

无头模式警告

⚠️ 旧版--headless标志已被检测到。选项:

  1. 新版无头模式:使用headless="new"(Chrome 109+)
  2. Xvfb:在虚拟显示中运行有界面浏览器
  3. 有界面模式:如果可以,直接运行有界面模式(最可靠)
# 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而非pythonpython3
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:如果被重定向到谷歌/认证域,请重新认证一次并更新配置文件

登录墙检测

脚本通过多种信号检测会话过期:

  1. HTTP状态码:401、403
  2. URL模式: /login/signin/auth
  3. 标题模式:"login"、"sign in"等
  4. 内容关键词:"captcha"、"verify"、"authenticate"
  5. 表单检测:密码输入字段

如果在--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版本无文件锁定功能;每个配置文件使用单独进程

参考文档

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第326334名访客 今日有221篇新文章/评论