
Lucas Mitchell
Automation Engineer
使用 NanoClaw 和 CapSolver 解决 CAPTCHAs

当你的AI助手在安全容器内浏览网页时,CAPTCHAs 仍然是最大的障碍。受保护的页面会阻止代理,表单无法提交,任务会因等待人工干预而停滞——即使代理是沙盒化的。
NanoClaw 是一个轻量级的AI助手框架,它在隔离的Linux容器中运行Claude代理。每个代理都有自己的文件系统、自己的浏览器和自己的工具——完全与主机和其他代理隔离。但像任何浏览器自动化一样,CAPTCHAs 会彻底阻止它。
CapSolver 完全改变了这一点。通过将 CapSolver Chrome 扩展加载到容器的 Chromium 浏览器中,CAPTCHAs 可以在后台自动且不可见地解决。无需代码。无需从你的侧调用API。无需更改与AI助手的交互方式。
最棒的是?你甚至不需要向AI提及CAPTCHAs。 你只需告诉它在提交前等待片刻——等到它点击提交时,CAPTCHA 已经被解决了。
而且因为 NanoClaw 在每个容器中运行每个代理,每个代理都有自己的隔离浏览器和自己的 CapSolver 实例——没有冲突,没有共享状态,代理之间不会互相干扰。
NanoClaw 是一个轻量级的AI助手框架,专为安全性和简洁性而设计。它在隔离的Linux容器中运行Claude代理——为每个代理提供真正的操作系统级隔离,而不是应用级权限检查。
agent-browser工具用于网页自动化每个 NanoClaw 容器都包含 Debian Chromium 和 agent-browser 命令行工具。代理可以:
可以把它想象成给每个AI代理一个隔离的浏览器窗口,位于一个受限制的沙盒中。
CapSolver 是一个领先的CAPTCHA解决服务,提供AI驱动的解决方案来绕过各种CAPTCHA挑战。支持多种CAPTCHA类型,并且响应速度快,CapSolver 可以无缝集成到自动化流程中。
大多数CAPTCHA解决集成需要你编写代码——创建API调用、轮询结果、将令牌注入隐藏表单字段。这就是与Crawlee、Puppeteer或Playwright等工具的工作方式。
NanoClaw + CapSolver 从根本上不同:
| 传统(基于代码) | NanoClaw(自然语言) |
|---|---|
编写 CapSolverService 类 |
将扩展挂载到容器中 |
调用 createTask() / getTaskResult() |
只需与你的AI交谈 |
通过 page.$eval() 注入令牌 |
扩展会处理一切 |
| 在代码中处理错误、重试、超时 | 告诉AI“等待70秒,然后提交” |
| 每种CAPTCHA类型需要不同的代码 | 自动处理所有类型 |
| 任务间共享浏览器状态 | 每个代理都有自己的隔离浏览器 |
关键洞察:CapSolver Chrome扩展在容器的Chromium浏览器中运行。当代理导航到包含CAPTCHA的页面时,扩展会检测到它,在后台解决它,并注入令牌——在代理甚至尝试提交表单之前就已经完成。
你只需要给它时间。 不需要告诉AI“解决CAPTCHA”,你只需说:
“去那个页面,等待70秒,然后点击提交。”
就这样。AI根本不需要知道CapSolver的存在。
由于 NanoClaw 为每个代理运行独立的容器,你将获得一个独特的优势:每个代理都有自己的Chromium实例和自己的CapSolver扩展。这意味着:
在设置集成之前,请确保您已:
好消息:NanoClaw 容器使用 Debian Chromium(通过
apt-get install chromium安装),它没有品牌标识,并完全支持--load-extension标志。与品牌版Google Chrome 137+不同,后者在2025年中旬悄然移除了扩展加载支持,Debian Chromium 可以开箱即用。
你不需要安装Chrome for Testing、Playwright的捆绑Chromium或任何替代浏览器。容器中已有的Chromium就足够了。
将 CapSolver Chrome 扩展下载到你的 NanoClaw 项目目录中:
CapSolver.Browser.Extension-chrome-vX.X.X.zipmkdir -p assets/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d assets/capsolver-extension/
ls assets/capsolver-extension/manifest.json
你应该能看到 manifest.json —— 这表明扩展已放置在正确的位置。
打开扩展的配置文件 assets/capsolver-extension/assets/config.js,并将 apiKey 值替换为你的API密钥:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← 在这里放你的密钥
useCapsolver: true,
// ...其余配置
};
你可以在你的 CapSolver仪表板 上获取API密钥。
NanoClaw 在 Docker 容器中运行代理。扩展目录需要在容器内位于 /opt/capsolver-extension。
选项A:通过容器运行器自动挂载(推荐)
将扩展放在 NanoClaw 项目目录的 assets/capsolver-extension/ 中。然后在 src/container-runner.ts 中添加一个卷挂载:
// 如果存在,挂载CapSolver扩展
const capsolverPath = path.join(process.cwd(), 'assets', 'capsolver-extension');
if (fs.existsSync(capsolverPath)) {
mounts.push({
hostPath: capsolverPath,
containerPath: '/opt/capsolver-extension',
readonly: true,
});
}
选项B:将扩展打包到容器镜像中
在你的 container/Dockerfile 中添加:
# 添加CapSolver扩展
COPY ../assets/capsolver-extension/ /opt/capsolver-extension/
然后重新构建容器镜像。
NanoClaw 使用 agent-browser CLI 工具在容器内进行浏览器自动化。它通过环境变量支持加载Chrome扩展。
在 src/container-runner.ts 的容器中添加这些环境变量:
if (fs.existsSync(capsolverPath)) {
args.push('-e', 'AGENT_BROWSER_EXTENSIONS=/opt/capsolver-extension');
args.push('-e', 'DISPLAY=:99');
args.push('-e', 'AGENT_BROWSER_ARGS=--no-sandbox,--disable-gpu,--disable-blink-features=AutomationControlled,--disable-background-timer-throttling');
args.push('-e', 'AGENT_BROWSER_HEADED=true');
}
| 环境变量 | 用途 |
|---|---|
AGENT_BROWSER_EXTENSIONS |
容器内的CapSolver扩展路径 |
DISPLAY |
为Xvfb提供虚拟显示(扩展需要显示上下文) |
AGENT_BROWSER_ARGS |
Chrome标志:无沙盒、反检测、防止扩展节流 |
AGENT_BROWSER_HEADED |
以有头模式运行(扩展更可靠) |
Chrome扩展需要显示,即使在容器中也是如此。在你的 container/Dockerfile 中添加 xvfb 并在入口点自动启动它:
# 将xvfb添加到apt-get安装列表中
RUN apt-get update && apt-get install -y \
chromium \
xvfb \
# ...其他依赖项
&& rm -rf /var/lib/apt/lists/*
# 使非root用户可以运行Xvfb
RUN chmod u+s /usr/bin/Xvfb
# 创建会话目录(agent-browser需要这个)
RUN mkdir -p /home/node/.claude/session-env && chown -R node:node /home/node/.claude
更新入口点以自动启动Xvfb:
#!/bin/bash
set -e
# 为浏览器扩展启动Xvfb
if [ -n "$DISPLAY" ]; then
Xvfb $DISPLAY -screen 0 1280x720x24 &
sleep 0.5
fi
# ...其余入口点
# 重启NanoClaw以应用更改
npm run dev
# 或者如果作为服务运行:
pm2 restart nanoclaw
通过任何连接的渠道(Discord、WhatsApp、Telegram)向你的 NanoClaw 代理发送测试消息:
前往 https://www.google.com/recaptcha/api2/demo,等待70秒,
然后点击提交并告诉我页面上显示的文本。
如果 CapSolver 正常工作,代理应该报告:“验证成功... 太好了!”
这是最重要的部分。一旦设置完成,使用 CapSolver 与 NanoClaw 是非常简单的。
不要向AI提及CAPTCHAs或CapSolver。 在提交表单前给它一点时间。
AI代理不需要知道CAPTCHAs的存在。扩展会在后台处理一切。你只需要在指令中包含一个等待时间,这样扩展就有时间在表单提交前解决挑战。
将以下内容发送给你的 NanoClaw 代理(通过Discord、WhatsApp、Telegram或任何渠道):
前往 https://example.com,等待70秒,
然后点击提交并告诉我页面上显示的文本。
幕后发生的事情:
前往 https://example.com/login,将电子邮件字段填写为
"me@example.com",密码字段填写为"mypassword123",
然后等待30秒并点击登录按钮。
告诉我登录后的页面内容。
打开 https://example.com/contact,填写联系表单:
- 姓名:"John Doe"
- 邮箱:"john@example.com"
- 消息:"你好,我有关于你们服务的问题。"
等待45秒,然后点击发送消息。出现什么确认信息?
| CAPTCHA类型 | 典型解决时间 | 推荐等待时间 |
|---|---|---|
| reCAPTCHA v2(复选框) | 10-30秒 | 60-70秒 |
| reCAPTCHA v2(不可见) | 5-15秒 | 45秒 |
| reCAPTCHA v3 | 3-10秒 | 30秒 |
| Cloudflare Turnstile | 3-10秒 | 30秒 |
提示:如果不确定,使用70秒。等待更久比过早提交更好。额外的等待时间不会影响结果。在我们的测试中,60秒对于 reCAPTCHA v2 是临界值——70秒可以可靠工作。
以下是一些经过验证的表达方式:
避免这些表达——它们可能让AI困惑或触发拒绝:
对于技术爱好者,以下是当 CapSolver 扩展加载到 NanoClaw 容器中时发生的情况:
你的消息 NanoClaw 服务器
───────────────────────────────────────────────────
"前往页面, ──► 消息路由器接收消息
等待60秒,提交" │
▼
为代理生成容器
┌─────────────────────────────────┐
│ 隔离的Docker容器 │
│ │
│ Claude代理(通过代理SDK) │
│ │ │
│ ▼ │
│ agent-browser:导航到URL │
│ │ │
│ ▼ │
│ Chromium + CapSolver 扩展 │
│ ┌───────────────────────────┐ │
│ │ 包含 reCAPTCHA 的页面 │ │
│ │ │ │
│ │ CapSolver 扩展: │ │
│ │ 1. 内容脚本检测页面上的 reCAPTCHA │ │
│ │ 2. 服务工作者调用 CapSolver API │ │
│ │ 3. 接收令牌 │ │
│ │ 4. 将令牌注入隐藏表单字段 │ │
│ └───────────────────────────┘ │
│ │ │
│ ▼ │
│ 代理等待 70 秒... │
│ │ │
│ ▼ │
│ agent-browser: 点击 提交 │
│ │ │
│ ▼ │
│ "验证成功!" │
└─────────────────────────────────┘
│
▼
通过 Discord/WhatsApp 等发送响应
NanoClaw 使用 agent-browser CLI 工具,该工具通过 AGENT_BROWSER_EXTENSIONS 环境变量支持加载 Chrome 扩展。当设置此变量时,agent-browser 会自动将 --load-extension 传递给 Chromium。
AGENT_BROWSER_EXTENSIONS=/opt/capsolver-extensionagent-browser open <url> — Chromium 会加载扩展启动由于 NanoClaw 使用 Debian Chromium(非品牌 Google Chrome),--load-extension 标志可以可靠地工作而无需任何变通方法。并且由于 agent-browser 在内部处理该标志,您无需自己管理 Chrome 启动参数。
症状: 代理导航并提交但 CAPTCHA 未被解决。
可能原因:
ls /opt/capsolver-extension/manifest.json 容器内AGENT_BROWSER_EXTENSIONS 环境变量设置为 /opt/capsolver-extensionDISPLAY=:99 运行症状: 代理报告 "无法在 /home/node/.claude/session-env 创建会话目录"
原因: agent-browser 工具需要可写的会话目录。如果主机挂载的 .claude 目录中没有它,工具会失败。
修复: 确保目录在 Dockerfile 和主机上都存在:
# 在 Dockerfile 中:
RUN mkdir -p /home/node/.claude/session-env && chown -R node:node /home/node/.claude
# 在主机上(对于挂载的卷):
mkdir -p data/sessions/main/.claude/session-env
chmod -R 777 data/sessions/main/.claude
可能原因:
症状: Chromium 崩溃或扩展在容器内无法工作。
修复: 确保在 Chromium 启动前运行 Xvfb:
Xvfb :99 -screen 0 1280x720x24 &
export DISPLAY=:99
将这些添加到容器的入口点脚本中以自动运行。
除了 Chrome 扩展方法外,NanoClaw 还支持使用 CapSolver Skills 的第二种集成方法 —— 一个 Python CLI 工具,通过 CapSolver API 直接解决 CAPTCHA。
与扩展在后台不可见地解决 CAPTCHA 不同,代理会显式地:
python3 /opt/capsolver-skills/scripts/solver.py 调用 CapSolver API将 capsolver-skills 仓库 克隆到您的 NanoClaw 项目中:
git clone https://github.com/capsolver/capsolver-skills.git assets/capsolver-skills
在 container/Dockerfile 中添加 python3 和依赖项:
RUN apt-get update && apt-get install -y python3 python3-pip \
&& pip3 install --break-system-packages requests python-dotenv
挂载技能目录并在 src/container-runner.ts 中传递 API 密钥:
// 挂载 capsolver-skills
const capsolverSkillsPath = path.join(process.cwd(), 'assets', 'capsolver-skills');
if (fs.existsSync(capsolverSkillsPath)) {
mounts.push({
hostPath: capsolverSkillsPath,
containerPath: '/opt/capsolver-skills',
readonly: true,
});
}
// 传递 API 密钥
args.push('-e', `API_KEY=${capsolverApiKey}`);
在 .env 文件中设置 CAPSOLVER_API_KEY:
CAPSOLVER_API_KEY=CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@OpenCrawl 访问 https://www.google.com/recaptcha/api2/demo,
使用 capsolver 技能解决 reCAPTCHA,
然后点击提交并告诉我结果。
CapSolver Skills 解决器通过 CLI 支持所有主要的 CAPTCHA 类型:
| 命令 | CAPTCHA 类型 |
|---|---|
ReCaptchaV2TaskProxyLess |
reCAPTCHA v2 |
ReCaptchaV3TaskProxyLess |
reCAPTCHA v3 |
AntiTurnstileTaskProxyLess |
Cloudflare Turnstile |
AntiCloudflareTask |
Cloudflare Challenge |
AntiAwsWafTaskProxyLess |
AWS WAF |
GeeTestTaskProxyLess |
GeeTest v3/v4 |
DatadomeSliderTask |
DataDome |
| Chrome 扩展 | CapSolver 技能 | |
|---|---|---|
| 工作方式 | 不可见,自动 | 显式 API 调用 |
| 代理意识 | 代理不知道 CAPTCHA | 代理主动解决 CAPTCHA |
| 设置复杂度 | 挂载扩展 + 设置环境变量 | 挂载 Python 脚本 + 安装依赖 |
| 速度 | 依赖等待时间 | 直接 —— 无需等待 |
| 灵活性 | 自动处理任何 CAPTCHA | 每个 CAPTCHA 类型的细粒度控制 |
| 最适合 | 简单的“浏览和提交”任务 | 需要令牌注入的复杂工作流 |
提示: 您可以同时使用这两种方法。扩展在后台自动处理 CAPTCHA,而技能解决器在需要时为代理提供显式控制。
更长的等待时间总是更安全。CAPTCHA 通常在 10-30 秒内解决,但网络延迟、复杂挑战或重试可能增加时间。60-70 秒 是最佳选择。
避免使用:
"导航到 URL,等待验证码解决器,然后提交"
使用:
"访问 URL,等待大约一分钟,然后提交表单"
自然的措辞对 AI 更有效,并避免触发安全拒绝。
每次 CAPTCHA 解决都会消耗积分。定期检查您的余额 capsolver.com/dashboard 以避免中断。
将扩展卷挂载(而不是将其烘焙到镜像中)使更新扩展变得容易,而无需重新构建容器镜像。只需下载新版本并重启 NanoClaw。
NanoClaw + CapSolver 集成将 CAPTCHA 解决方案带入容器化 AI 代理 —— 两种方式:
这两种方法都经过验证且有效。对于简单的“浏览和提交”工作流使用扩展,当需要细粒度控制时使用 CapSolver 技能。
得益于 NanoClaw 的容器架构,每个代理都有其自己的隔离浏览器和 CapSolver 实例 —— 没有冲突,没有共享状态,真正的多代理 CAPTCHA 解决方案。
这就是拥有容器化 AI 助手时 CAPTCHA 解决方案的样子: 不可见、自动、隔离且零代码。
准备好了吗? 注册 CapSolver 并使用优惠码 NANOCLAW 在首次充值时获得额外 6% 的奖励!
不需要。 实际上,您应避免在消息中提及 CAPTCHA 或 CapSolver。扩展在后台不可见地工作。只需在指令中包含等待时间(例如,“等待 70 秒,然后提交”)以给扩展时间解决页面上的任何 CAPTCHA。
NanoClaw 容器使用通过 apt-get 安装的 Debian Chromium,这是非品牌的。与 Google Chrome 137+(在 2025 年中旬无声地移除了 --load-extension 支持)不同,Debian Chromium 完全支持扩展加载。无需变通方法。
CapSolver 支持 reCAPTCHA v2(复选框和不可见)、reCAPTCHA v3、Cloudflare Turnstile、AWS WAF CAPTCHA 等。Chrome 扩展会自动检测 CAPTCHA 类型并相应解决。
CapSolver 提供基于 CAPTCHA 类型和数量的有竞争力的价格。访问 capsolver.com 查看当前价格。使用优惠码 NANOCLAW 在首次充值时获得额外 6% 的奖励。
NanoClaw 是开源的(MIT 许可证),可在自己的硬件上免费运行。您需要 AI 模型的 API 密钥 —— 可以是 Anthropic API 密钥,也可以是 OpenRouter API 密钥(通过单个账户访问 Claude 和其他模型)。对于 CAPTCHA 解决,您需要具有积分的 CapSolver 账户。
对于大多数 CAPTCHA,60-70 秒足够。实际解决时间通常为 10-30 秒,但添加额外的缓冲时间可确保可靠性。如果不确定,使用 70 秒 —— 在我们的测试中,60 秒对于 reCAPTCHA v2 是边缘情况。
每个 NanoClaw 代理都在其自己的 Docker 容器中运行,拥有自己的 Chromium 浏览器和 CapSolver 扩展实例。这意味着多个代理可以同时解决 CAPTCHA 而不会发生冲突 —— 没有共享 cookie,没有共享浏览器状态,没有干扰。如果一个代理的浏览器会话出现问题,它不会影响任何其他代理。
是的。您需要 Xvfb(X 虚拟帧缓冲区)来提供显示,因为 Chrome 扩展需要显示上下文。设置 DISPLAY=:99 并在容器内后台运行 Xvfb :99。