OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  kesslerio-stealth-browser:具备反爬检测能力的隐身浏览器自动化

kesslerio-stealth-browser:具备反爬检测能力的隐身浏览器自动化

 
  pipeline ·  2026-02-08 11:57:00 · 3 次点击  · 0 条评论  

名称: stealth-browser
描述: 使用 Camoufox 和 Nodriver 进行反机器人检测的浏览器自动化。可绕过 Cloudflare Turnstile、Datadome 以及 Airbnb、Yelp 等网站的激进反爬措施。当标准 Playwright/Selenium 被拦截时使用。
元数据:
openclaw:
emoji: "🥷"
requires:
bins: ["distrobox"]
env: []


隐身浏览器技能 🥷

可绕过 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. 首次设置

# 在 pybox 容器中安装工具(使用 python3.14)
distrobox-enter pybox -- python3.14 -m pip install camoufox curl_cffi

# Camoufox 浏览器会在首次运行时自动下载(约 700MB 的 Firefox 分支版本)

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 代理                       │
├─────────────────────────────────────────────────────────┤
│  distrobox-enter pybox -- python3.14 scripts/xxx.py     │
├─────────────────────────────────────────────────────────┤
│                      pybox 容器                         │
│         ┌─────────────┐  ┌─────────────┐               │
│         │  Camoufox   │  │  curl_cffi  │               │
│         │  (Firefox)  │  │  (TLS欺骗)  │               │
│         └─────────────┘  └─────────────┘               │
└─────────────────────────────────────────────────────────┘

工具详情

Camoufox

  • 是什么: 经过 C++ 层面隐身补丁定制的 Firefox 构建版本
  • 优点: 最佳的指纹规避能力,可自动通过 Turnstile 验证
  • 缺点: 需下载约 700MB,基于 Firefox
  • 最佳适用: 所有受保护网站 - Cloudflare, Datadome, Yelp, Airbnb

curl_cffi

  • 是什么: 具备浏览器 TLS 指纹欺骗功能的 Python HTTP 客户端
  • 优点: 无浏览器开销,速度极快
  • 缺点: 无法执行 JavaScript,仅适用于 API 端点
  • 最佳适用: 已知的 API 端点,移动应用逆向工程

关键:代理要求

数据中心 IP(AWS、DigitalOcean 等)在 Airbnb/Yelp 上 = 立即被拦截

你必须使用住宅或移动代理:

# 代理配置示例
proxy = "http://user:pass@residential-proxy.example.com:8080"

有关代理配置,请参阅 references/proxy-setup.md

行为规避技巧

像 Airbnb/Yelp 这类网站会进行行为分析。为避免检测:

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

无头模式警告

⚠️ 旧的 --headless 标志会被检测到。可选方案:

  1. 新无头模式: 使用 headless="new" (Chrome 109+)
  2. Xvfb: 在虚拟显示中运行有头浏览器
  3. 有头模式: 如果可以,直接运行有头浏览器(最可靠)
# Xvfb 方法 (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.14
libstdc++.so.6 错误 NixOS 库路径问题 - 在 pybox 中使用 python3.14

Python 版本问题 (NixOS/pybox)

pybox 容器可能包含多个 Python 版本,它们拥有独立的 site-packages:

# 检查哪个 Python 安装了 camoufox
distrobox-enter pybox -- python3.14 -c "import camoufox; print('OK')"

# 错误用法(可能使用了不同的 Python)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py ...

# 正确用法(显式指定版本)
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. 交互式登录(打开有头浏览器)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
  --profile airbnb --login "https://www.airbnb.com/account-settings"

# 在浏览器中完成登录,然后按 Enter 保存会话

# 2. 在无头模式下复用会话
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
  --profile airbnb --headless "https://www.airbnb.com/trips"

# 3. 检查会话状态
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
  --profile airbnb --status "https://www.airbnb.com"

标志说明

标志 描述
--profile NAME 用于会话存储的命名配置文件(必需)
--login 交互式登录模式 - 打开有头浏览器
--headless 在无头模式下使用已保存的会话
--status 检查会话是否有效
--export-cookies FILE 将 Cookie 导出到 JSON 文件进行备份
--import-cookies FILE 从 JSON 文件导入 Cookie

存储

  • 位置: ~/.stealth-browser/profiles/<name>/
  • 权限: 目录 700,文件 600
  • 配置文件命名: 仅限字母、数字、_-(1-63 个字符)
  • 保存: 所有域的所有 Cookie 都存储在浏览器配置文件中
  • 恢复: 仅使用与目标 URL 域名匹配的 Cookie
  • SSO: 如果被重定向到 Google/认证域,重新认证一次后配置文件会更新

登录墙检测

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

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

如果在 --headless 模式下检测到,你将看到:

🔒 登录墙信号:url-path, password-form

使用 --login 重新运行以刷新会话。

远程登录 (SSH)

由于 --login 需要可见的浏览器,你需要进行显示转发:

X11 转发(推荐):

# 使用 X11 转发连接
ssh -X user@server

# 运行登录(浏览器会在你的本地机器上打开)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
  --profile mysite --login "https://example.com"

VNC 替代方案:

# 在服务器上:启动 VNC 会话
vncserver :1

# 在客户端上:连接到 VNC
vncviewer server:1

# 在 VNC 会话中:运行登录
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 版本无文件锁;请每个配置文件使用一个进程

参考文档

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor