CAPSOLVER
博客
PicoClaw Automation:CapSolver API 集成指南

PicoClaw自动化:集成CapSolver API指南

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

02-Mar-2026

当你的AI助手自动化网络任务时,CAPTCHAs是最大的障碍。受保护的页面拒绝提交,登录流程停滞,整个自动化流程会暂停,等待人类点击复选框或识别交通灯。

PicoClaw 是一个超轻量级的个人AI助手,用Go语言编写,可在10美元的硬件上运行,内存不足10MB。它连接到你已经使用的消息平台,并包含一个内置的exec工具,使代理能够自主编写和运行脚本。

CapSolver 提供AI驱动的CAPTCHA解决API。通过将PicoClaw的脚本执行功能与CapSolver的REST API结合,你的代理可以检测CAPTCHAs、解决它们、注入令牌并提交表单——而无需人工干预。

最棒的是?你只需用普通语言告诉代理你想做什么。它会编写一个Playwright脚本,提取站点密钥,调用CapSolver,注入令牌并提交表单——全部自主完成。而且因为PicoClaw是编译后的Go代码,整个协调层可以容纳在10美元的RISC-V板上的10MB内存中。


什么是PicoClaw?

PicoClaw 是一个用Go 1.25.7构建的超轻量级个人AI助手,通过一个非凡的自引导过程:AI代理本身驱动了从Python到Go的整个架构迁移,95%的核心代码是自主生成的,并经过人工优化。

数据

指标 PicoClaw 通常的AI助手
语言 Go Python / TypeScript
内存 < 10MB 100MB – 1GB+
启动时间 (0.8GHz核心) < 1秒 30 – 500+ 秒
硬件成本 低至10美元 50 – 599美元
二进制文件 单一静态二进制文件 运行时 + 依赖项

PicoClaw的标语一语道破:10美元硬件。10MB内存。1秒启动。

关键功能

  • 超轻量级:内存占用不足10MB——比同类TypeScript代理小99%
  • 真正的可移植性:跨RISC-V、ARM64和x86_64架构的单一自包含二进制文件
  • 内置工具:代理可以读写文件、执行shell命令、搜索网络、获取页面、发送跨渠道消息、安排cron作业,甚至与I2C/SPI硬件外设交互
  • 供应商中立:兼容OpenAI、Anthropic、DeepSeek、Gemini、Qwen、Moonshot、Groq、vLLM、Ollama、Cerebras、Mistral、NVIDIA以及OpenRouter等网关供应商
  • 技能系统:通过SKILL.md文件使用JSON或YAML前缀扩展功能
  • 记忆系统:在对话中保留每日笔记和长期记忆
  • 硬件工具:I2C和SPI工具用于直接嵌入式设备交互——仅限于PicoClaw

ExecTool

PicoClaw的ExecTool(定义在pkg/tools/shell.go中)使浏览器自动化成为可能。它是一个经过精心沙箱化的shell执行环境,具有27多个安全拒绝模式,编译为Go正则表达式,60秒默认超时,工作区路径限制和路径遍历检测。

当你要求代理与网页交互时,它会:

  1. 通过write_file工具编写一个Playwright脚本
  2. 通过exec工具执行它(在Linux上调用sh -c
  3. 读取输出(stdout + stderr,截断为10KB)
  4. 通过聊天频道将结果报告给你

该工具的guardCommand()方法在执行前将每个命令与编译后的正则表达式拒绝模式进行检查,强制执行工作区路径限制,并检测路径遍历尝试。可以将其视为沙箱化的命令行访问——代理可以运行Node.js脚本和本地包安装,但不能执行rm -rfsudodocker run

代理循环

核心逻辑位于pkg/tools/toolloop.go中——一个紧密的循环:LLM调用 -> 提取工具调用 -> 执行工具 -> 追加结果 -> 重复,直到最终文本响应(或MaxIterations,默认20)。此循环在主代理(pkg/agent/loop.go)和后台子代理中通过spawn共享。


什么是CapSolver?

CapSolver 是一个领先的CAPTCHA解决服务,提供AI驱动的解决方案以绕过各种CAPTCHA挑战。支持多种CAPTCHA类型和快速响应时间,CapSolver可以无缝集成到自动化工作流中。

支持的CAPTCHA类型


为什么PicoClaw的方法与众不同

大多数CAPTCHA解决集成分为两种:代码级API集成,你需要编写专门的服务类,或者浏览器扩展,其中Chrome扩展会自动处理一切。PicoClaw采取第三种方法:在边缘硬件上由代理驱动的API集成

AI代理本身自主协调整个解决流程——编写Playwright脚本,提取站点密钥,调用CapSolver API,并注入解决方案令牌——全部通过它实时编写和执行的脚本完成。关键的是,执行所有协调的Go协调器消耗的内存不到10MB。

边缘设备优势

你可以在成本低于一杯咖啡的硬件上运行CAPTCHA破解自动化。 一个9.9美元的LicheeRV-Nano运行PicoClaw可以接收Telegram消息,与CapSolver的云API协调,注入令牌并提交表单——同时只使用板子64MB内存的一小部分。繁重的工作(CAPTCHA识别)在CapSolver的服务器上完成;PicoClaw只是协调。全天候运行,设备大小仅如邮票。

浏览器扩展方法 PicoClaw的代理驱动方法
需要安装Chrome扩展 不需要扩展——只需API密钥
需要兼容的Chrome构建 与任何无头浏览器兼容
扩展自动检测CAPTCHAs 代理从页面DOM中提取站点密钥
扩展在后台调用API 代理直接调用CapSolver REST API
需要显示(服务器上使用Xvfb) 完全无头运行,不需要显示
重载运行时(1GB+内存) 超轻量协调器(<10MB内存)
需要x86_64或ARM64桌面 在RISC-V、ARM、x86上运行——甚至10美元的板子

关键洞察:PicoClaw的Go二进制文件如此轻量,它可以在大多数框架甚至无法启动的硬件上运行——但它可以通过Playwright脚本和CapSolver的REST API协调完整的CAPTCHA解决流程。


前提条件

注意: 以下示例在 Ubuntu 22.04 / 24.04 上测试过。命令使用aptbash——如果需要,根据你的发行版进行调整。对于边缘设备(RISC-V、ARM),在构建机器上交叉编译PicoClaw,或从发布页面下载预构建二进制文件。

在设置集成之前,请确保你有:

  1. Ubuntu 22.04+(或任何Linux发行版——PicoClaw的单一二进制文件可在任何地方运行)
  2. Go 1.25.7+(仅在从源代码构建时需要)
  3. PicoClaw 安装并运行(预构建二进制文件或make build
  4. CapSolver账户 和API密钥(在此注册
  5. Node.js 18+ 安装(用于通过exec工具运行Playwright脚本)
  6. Playwright 安装在你的工作区中

分步设置

第1步:安装PicoClaw

选项A:预构建二进制文件(最快)

bash 复制代码
# 下载适用于你平台的最新版本
# 将v0.1.1替换为发布页面上的最新版本
wget https://github.com/sipeed/picoclaw/releases/download/v0.1.1/picoclaw-linux-amd64
chmod +x picoclaw-linux-amd64
sudo mv picoclaw-linux-amd64 /usr/local/bin/picoclaw

# 运行交互式入门向导
picoclaw onboard

选项B:从源代码构建

bash 复制代码
git clone https://github.com/sipeed/picoclaw.git
cd picoclaw
make deps
make build
make install

# 初始化配置和工作区
picoclaw onboard

这会创建~/.picoclaw/config.json~/.picoclaw/workspace/(脚本、技能和记忆)。

第2步:设置CapSolver API密钥

将你的CapSolver API密钥作为环境变量添加:

bash 复制代码
export CAPSOLVER_API_KEY="CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

你可以从CapSolver仪表板获取你的API密钥。

为了持久配置,将其添加到~/.bashrc~/.zshrc中。

第3步:安装浏览器自动化工具

在Ubuntu上安装Playwright及其系统依赖项:

bash 复制代码
# 安装Playwright浏览器依赖项(Ubuntu)
sudo apt install -y libnss3 libatk-bridge2.0-0 libdrm2 libxcomposite1 \
  libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libasound2t64

# 在你的PicoClaw工作区中安装Playwright
cd ~/.picoclaw/workspace
npm init -y
npm install playwright
npx playwright install chromium

边缘设备注意事项: 在资源受限的板子上,你可能希望在一个更强大的机器上安装Chromium,并通过Playwright的browserType.connect()将PicoClaw指向远程浏览器。PicoClaw代理本身只需要约10MB内存;浏览器是繁重的部分。

第4步:为浏览器自动化配置ExecTool

PicoClaw的ExecTool有内置的拒绝模式以确保安全。默认设置对于CAPTCHA自动化已经很好:nodenpx和本地npm install都被允许。只有npm install -gsudodocker run等危险命令被阻止。标准工作流不需要配置更改。

第5步:启动网关

bash 复制代码
# 启动频道服务(Telegram、Discord等)
picoclaw gateway

# 或用于交互测试
picoclaw agent

第6步:验证设置

通过任何连接的频道向代理发送测试消息:

复制代码
你有哪些可用的工具?

代理应列出exec作为其工具之一——这是它用于运行浏览器自动化脚本的工具。你也可以验证Node.js访问:

复制代码
运行:node --version

代理应通过exec工具执行此命令并返回Node.js版本。


内置的CapSolver技能

PicoClaw使用基于SKILL.md文件的技能系统,带有前缀元数据。技能从三个位置按优先级顺序加载(在pkg/skills/loader.go中定义):

  1. 工作区技能~/.picoclaw/workspace/skills/{name}/SKILL.md(项目级,最高优先级)
  2. 全局技能~/.picoclaw/skills/{name}/SKILL.md(用户级)
  3. 内置技能skills/{name}/SKILL.md(与二进制文件捆绑)

工作区技能覆盖全局技能,全局技能覆盖内置技能。加载器将前缀元数据读取为JSON或YAML,并为系统提示构建XML摘要。

技能文件(~/.picoclaw/workspace/skills/capsolver/SKILL.md

markdown 复制代码
---
name: capsolver
description: "使用CapSolver REST API通过Playwright解决CAPTCHAs。支持reCAPTCHA v2、reCAPTCHA v3和Cloudflare Turnstile。在自动化表单提交或遇到CAPTCHA挑战的页面交互时使用。"
metadata: {"picoclaw":{"emoji":"🔓","always":true,"requires":{"bins":["node"],"env":["CAPSOLVER_API_KEY"]}}}
---

# CapSolver

## 重要:执行要求

当用户要求你解决CAPTCHA时,你必须立即调用工具。不要用“运行中...”或“我将开始...”或“我已经启动自动化...”这样的文本回复。

你的第一步必须是以下之一:
1. 调用`write_file`保存一个Node.js脚本,然后调用`exec`运行它
2. 调用`spawn`并提供详细的任务描述进行后台执行

如果你只用文本回复而没有工具调用,用户将看不到任何变化。始终执行。

## API端点

- **创建任务**: `POST https://api.capsolver.com/createTask`
- **获取结果**: `POST https://api.capsolver.com/getTaskResult`

## 任务类型

| CAPTCHA | 任务类型 | 站点密钥位置 |
|---|---|---|
| reCAPTCHA v2 | `ReCaptchaV2TaskProxyLess` | `data-sitekey`属性 |
| reCAPTCHA v3 | `ReCaptchaV3TaskProxyLess` | `grecaptcha.execute`调用或页面源代码 |
| Cloudflare Turnstile | `AntiTurnstileTaskProxyLess` | Turnstile div上的`data-sitekey` |

企业变体:`ReCaptchaV2EnterpriseTaskProxyLess`、`ReCaptchaV3EnterpriseTaskProxyLess`。

## 工作流程

1. 使用Playwright导航到页面(无头Chromium)
2. 从DOM中提取站点密钥(`[data-sitekey]`属性)
3. 使用站点密钥和页面URL调用`createTask`
4. 每2秒轮询`getTaskResult`直到`status: "ready"`
5. 将令牌注入页面(隐藏表单字段)
6. 提交表单

## 核心代码模式

```javascript
const CAPSOLVER_API_KEY = process.env.CAPSOLVER_API_KEY;

// 第1步:创建任务
const createRes = await fetch('https://api.capsolver.com/createTask', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    clientKey: CAPSOLVER_API_KEY,
    task: {
      type: 'ReCaptchaV2TaskProxyLess',  // 或 ReCaptchaV3TaskProxyLess, AntiTurnstileTaskProxyLess
      websiteURL: pageUrl,
      websiteKey: siteKey
    }
  })
});
const { taskId } = await createRes.json();

// 第2步:轮询结果
let token;
while (true) {
  await new Promise(r => setTimeout(r, 2000));
  const res = await fetch('https://api.capsolver.com/getTaskResult', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ clientKey: CAPSOLVER_API_KEY, taskId })
  });
  const result = await res.json();
  if (result.status === 'ready') { token = result.solution.gRecaptchaResponse || result.solution.token; break; }
  if (result.status === 'failed') throw new Error('解决失败');
}

// 第3步:注入令牌(reCAPTCHA)
await page.evaluate((t) => {
  document.querySelectorAll('textarea[name="g-recaptcha-response"]')
    .forEach(el => { el.value = t; el.innerHTML = t; });
}, token);
```

对于Turnstile,令牌字段通常是`input[name="cf-turnstile-response"]`,解决方案在`result.solution.token`中。

## API参考

所有任务类型都需要`type`、`websiteURL`、`websiteKey`。可选字段因类型而异:
- **reCAPTCHA v2**: `isInvisible`, `pageAction`, `enterprisePayload`, `apiDomain`
- **reCAPTCHA v3**: `pageAction` (来自 `grecaptcha.execute(key, {action: "..."})`)
- **Cloudflare Turnstile**: `metadata.action`, `metadata.cdata`

关键点:

  • Frontmatter 使用 JSON 或 YAML (pkg/skills/loader.go 优先尝试 JSON,若失败则回退到 YAML)
  • metadata 包含 PicoClaw 特定的配置:emoji 用于显示,always 用于自动加载,requires 用于依赖检查
  • SkillsLoader.BuildSkillsSummary() 生成注入到系统提示中的 XML 摘要
  • "Execution Required" 部分强制调用工具而非文本响应

创建技能后,通过 picoclaw skills 验证 —— 你应该能看到 capsolver 列出。


工作原理

当你要求 PicoClaw 与受 CAPTCHA 保护的页面交互时,以下是消息到结果的完整流程:

复制代码
  你的消息                     PicoClaw 代理(Go,约 10MB 内存)
  ─────────────────────────────────────────────────────────────
  "前往该页面,           ──► 代理通过 MessageBus 接收
   填写表单,                  │ (pkg/bus/bus.go)
   解决 CAPTCHA,              ▼
   并提交它"             ContextBuilder 注入技能
                                   │ (pkg/agent/context.go)
                                   ▼
                              RunToolLoop 启动
                                   │ (pkg/tools/toolloop.go)
                                   ▼
                              代理编写 Node.js 脚本
                                   │ 通过 write_file 工具
                                   ▼
                              ExecTool 运行脚本
                              ┌────────────────────────────┐
                              │ pkg/tools/shell.go          │
                              │ guardCommand() → 27+ 检查 │
                              │ sh -c "node script.js"      │
                              │                             │
                              │  Headless Chromium          │
                              │  1. 导航到页面        │
                              │  2. 提取 sitekey         │
                              │  3. POST /createTask ────────── CapSolver API
                              │  4. 轮询 /getTaskResult ─────── (云)
                              │  5. 注入 token            │
                              │  6. 提交表单             │
                              │  7. 截图              │
                              └────────────────────────────┘
                                   │
                                   ▼ stdout 返回(最大 10KB)
                              代理读取输出
                                   │
                                   ▼
                              "表单提交成功!
                               验证成功!"

CapSolver API 流程

集成的核心是两个 API 调用:

1. 创建任务 —— 将 CAPTCHA sitekey 和页面 URL 发送到 CapSolver:

javascript 复制代码
const response = await fetch('https://api.capsolver.com/createTask', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    clientKey: CAPSOLVER_API_KEY,
    task: {
      type: 'ReCaptchaV2TaskProxyLess',
      websiteURL: pageUrl,
      websiteKey: siteKey
    }
  })
});

2. 轮询结果 —— 每 2 秒检查一次,直到 CapSolver 返回已解决的 token:

javascript 复制代码
const result = await fetch('https://api.capsolver.com/getTaskResult', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    clientKey: CAPSOLVER_API_KEY,
    taskId: taskId
  })
});
// result.solution.gRecaptchaResponse 包含 token

3. 注入 token —— 将其设置在 reCAPTCHA 期望的隐藏表单字段中:

javascript 复制代码
await page.evaluate((token) => {
  const textarea = document.querySelector('textarea[name="g-recaptcha-response"]');
  if (textarea) {
    textarea.value = token;
    textarea.innerHTML = token;
  }
}, captchaToken);

完整工作示例

这是 PicoClaw 代理生成并执行以在 Google 示例页面上解决 reCAPTCHA 的实际 Node.js 脚本。代理通过 write_file 写入它,然后通过 exec 运行它 —— 从一条 Telegram 消息中完全自主:

javascript 复制代码
const { chromium } = require('playwright');
const https = require('https');

const CAPSOLVER_API_KEY = process.env.CAPSOLVER_API_KEY;
const PAGE_URL = '';

function httpsPost(url, data) {
  return new Promise((resolve, reject) => {
    const req = https.request(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' }
    }, (res) => {
      let body = '';
      res.on('data', chunk => body += chunk);
      res.on('end', () => resolve(JSON.parse(body)));
    });
    req.on('error', reject);
    req.write(JSON.stringify(data));
    req.end();
  });
}

async function solveRecaptcha(siteKey, pageUrl) {
  console.log('创建 CapSolver 任务...');

  const createRes = await httpsPost('https://api.capsolver.com/createTask', {
    clientKey: CAPSOLVER_API_KEY,
    task: {
      type: 'ReCaptchaV2TaskProxyLess',
      websiteURL: pageUrl,
      websiteKey: siteKey
    }
  });

  if (createRes.errorId) {
    throw new Error(`CapSolver 错误: ${createRes.errorDescription}`);
  }

  const { taskId } = createRes;
  console.log(`任务 ID: ${taskId}`);

  let token;
  while (true) {
    await new Promise(r => setTimeout(r, 2000));

    const res = await httpsPost('https://api.capsolver.com/getTaskResult', {
      clientKey: CAPSOLVER_API_KEY,
      taskId
    });

    if (res.status === 'ready') {
      token = res.solution.gRecaptchaResponse;
      console.log(`收到 token!长度: ${token.length}`);
      break;
    }
    if (res.status === 'failed') {
      throw new Error(`CapSolver 任务失败: ${res.errorDescription}`);
    }

    console.log('轮询中... 状态:', res.status);
  }

  if (!token) throw new Error('未能获取 token');
  return token;
}

async function main() {
  const browser = await chromium.launch({
    headless: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox']
  });
  const page = await browser.newPage();

  try {
    await page.goto(PAGE_URL, { waitUntil: 'domcontentloaded', timeout: 30000 });
    const siteKey = await page.locator('[data-sitekey]').getAttribute('data-sitekey');
    console.log(`Sitekey: ${siteKey}`);

    const token = await solveRecaptcha(siteKey, PAGE_URL);

    await page.evaluate((t) => {
      document.querySelectorAll('textarea[name="g-recaptcha-response"]')
        .forEach(el => { el.value = t; el.innerHTML = t; });
    }, token);

    await page.locator('input[type="submit"]').click();
    await page.waitForTimeout(3000);

    const body = await page.textContent('body');
    console.log(body.includes('Success') ? 'SUCCESS!' : '结果:', body.slice(0, 200));
    await page.screenshot({ path: 'recaptcha_result.png' });
  } finally {
    await browser.close();
  }
}

main().catch(err => {
  console.error('错误:', err.message);
  process.exit(1);
});

直接运行:

bash 复制代码
CAPSOLVER_API_KEY=CAP-XXX node solve_recaptcha.js

或让 PicoClaw 的代理处理一切 —— 只需发送一条 Telegram 消息:

复制代码
在 https://example.com 解决 reCAPTCHA 并提交表单。

代理读取其 capsolver 技能,写入脚本,通过 exec 运行它(通过 guardCommand() 检查并执行,有 60 秒超时),脚本会导航页面,提取 sitekey,调用 CapSolver,注入 token,然后提交。结果通过 MessageBus 返回给你。


如何使用

一旦设置完成,使用 CapSolver 与 PicoClaw 就像通过任何连接的渠道发送消息一样简单。

示例 1:解决 reCAPTCHA 示例

通过 Telegram、Discord、WhatsApp 或任何连接渠道发送此消息给你的代理:

复制代码
前往 https://example.com 并使用 CapSolver API 解决
reCAPTCHA,然后提交表单并告诉我是否成功。

会发生什么: 代理读取 capsolver 技能,写入 Playwright 脚本,通过 exec 运行它(通过 guardCommand() 检查并执行,有 60 秒超时),脚本会导航页面,提取 sitekey,调用 CapSolver,注入 token,并提交。结果通过 MessageBus 返回给你。

示例 2:登录受保护的网站

复制代码
前往 https://example.com/login,用
"[email protected]" 填写邮箱,用 "mypassword" 填写密码,检测并
解决页面上的任何 CAPTCHA,然后点击登录并告诉我
发生了什么。

示例 3:提交联系表单

复制代码
打开 https://example.com/contact,填写姓名、邮箱和
消息字段,解决 CAPTCHA,提交表单,并告诉我
确认信息。

示例 4:通过 Spawn 进行后台自动化

对于长时间运行的任务,使用 spawn 工具(pkg/tools/spawn.go)将任务委托给后台子代理:

复制代码
在后台,前往 https://example.com/register,用我的信息创建
账户,解决遇到的任何 CAPTCHA,并在完成后告诉我。

示例 5:边缘设备监控(在 $10 板上运行 Telegram)

如果 PicoClaw 在 LicheeRV-Nano 或类似边缘设备上运行,结合 cron 工具使用:

复制代码
每小时检查一次 https://example.com/status —— 如果有
CAPTCHA 闸门,解决它并报告状态页面内容。

为何有效

PicoClaw 代理拥有自主解决 CAPTCHA 所需的所有工具:

  • exec (pkg/tools/shell.go) —— 沙盒化 shell 执行,包含 27+ 安全拒绝模式
  • write_file / read_file (pkg/tools/filesystem.go) —— 在工作区中管理脚本
  • spawn (pkg/tools/spawn.go) —— 用于长时间任务的后台子代理委派
  • web_fetch (pkg/tools/web.go) —— 页面内容获取用于 DOM 分析
  • 技能系统 (pkg/skills/loader.go) —— capsolver 技能在上下文中提供 API 文档
  • 记忆 (pkg/agent/memory.go) —— 在会话间持久化成功的方法

性能结果

我们在 Ubuntu 24.04 上通过一个实时 Discord 机器人对 Google 的 reCAPTCHA v2 示例页面进行了测试。PicoClaw 代理(使用 glm-4.7 通过 z.ai)接收到 Discord 消息,自主写入 Playwright 脚本,解决 CAPTCHA,并返回结果 —— 全程无需人工干预:

指标
PicoClaw 代理内存使用 ~8 MB
LLM 模型 glm-4.7 (Zhipu AI 通过 z.ai)
代理迭代次数 5 (理解 → 写脚本 → 执行 → 截图 → 编码)
脚本生成(write_file) < 1 秒
脚本执行(Playwright + CapSolver) 24.2 秒
截图捕获 + base64 编码 16ms
生成的工件 solve_recaptcha_random.js (6KB), before_submit.png (22KB), after_submit.png (6KB)
端到端(Discord 消息到响应) 约 30 秒
结果 验证成功

边缘设备注意事项: 在内存有限的板子(如 64MB 的 $9.90 LicheeRV-Nano)上,PicoClaw 自身轻松运行(~8MB),但 Chromium 需要 100-300MB。使用 Playwright 的 connect() 将浏览器卸载到更强大的机器上,同时将轻量级代理保留在边缘设备上。


故障排除

"Cannot find module 'playwright'"

Playwright 未在工作区中安装。运行:

bash 复制代码
cd ~/.picoclaw/workspace && npm install playwright && npx playwright install chromium

Ubuntu 上缺少浏览器库

如果 Chromium 启动失败并报错缺少共享库,请安装系统依赖项:

bash 复制代码
sudo apt install -y libnss3 libatk-bridge2.0-0 libdrm2 libxcomposite1 \
  libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libasound2t64

ExecTool 拒绝模式阻止 npm install

PicoClaw 的拒绝模式会阻止 npm install -g(全局安装)、sudoapt install,但允许本地 npm installnode script.jsnpx playwright install。如果看到 "Command blocked by safety guard",你可以选择禁用拒绝模式或在 ~/.picoclaw/config.json 中提供自定义模式:

json 复制代码
{ "tools": { "exec": { "enable_deny_patterns": false } } }

或使用仅排除你希望阻止的模式的自定义允许列表。

CAPTCHA 解决超时

  • 检查你的 CapSolver API 密钥是否有效
  • capsolver.com/dashboard 检查你的 CapSolver 账户余额
  • 脚本每 2 秒轮询直到 CapSolver 返回 readyfailed
  • 如果 exec 工具的 60 秒超时不够,脚本会被终止。你可以通过编程方式增加它,或使用 spawn 工具处理长时间任务(子代理有独立的超时)

ExecTool 60 秒超时太短

pkg/tools/shell.go 中的默认超时为 60 秒。对于 CAPTCHA 自动化,这可能很紧张。使用 spawn 工具处理长时间任务(子代理独立运行),或在源代码中修改 NewExecToolWithConfig() 的超时(timeout: 120 * time.Second)。

未找到 sitekey

脚本从 data-sitekey 属性中提取 sitekey。如果没有找到元素,代理可以适应并从 iframe URL 或页面源中提取。

浏览器在 Docker/容器中崩溃

在 Playwright 启动参数中添加 --no-sandbox--disable-setuid-sandbox--disable-dev-shm-usage

代理未使用 CapSolver

验证:(1) 启动 PicoClaw 前 CAPSOLVER_API_KEY 环境变量已设置,(2) 技能文件存在于 ~/.picoclaw/workspace/skills/capsolver/SKILL.md,(3) picoclaw skills 显示它已列出。


最佳实践

1. 将 API 密钥设置为环境变量

不要在脚本中硬编码密钥。使用 process.env.CAPSOLVER_API_KEY,这样代理可以自动获取。PicoClaw 会将父进程的环境传递给所有 exec 工具调用。

2. 在服务器上使用无头模式

PicoClaw 的基于 API 的方法可在 完全无头环境 中运行 —— 无需 Xvfb 或虚拟显示。这比基于扩展的方法有显著优势,尤其是在边缘设备上,因为那里没有显示硬件。

3. 监控你的 CapSolver 余额

每次 CAPTCHA 解决都会消耗积分。定期在 capsolver.com/dashboard 检查你的余额。

4. 保持 Playwright 更新

CAPTCHA 提供商不断演变。保持 Playwright 和 Chromium 更新:

bash 复制代码
cd ~/.picoclaw/workspace && npm update playwright && npx playwright install chromium

5. 对长时间任务使用 Spawn 工具

浏览器自动化可能需要 30-60 秒。使用 spawn 而不是依赖代理的主循环,以避免超时并保持主代理对其他消息的响应能力。

6. 利用 PicoClaw 的记忆系统

在成功解决 CAPTCHA 后,代理会将方法保存到 ~/.picoclaw/workspace/memory/MEMORY.md。下次它会回忆出成功的模式。

7. 边缘设备部署:将浏览器卸载

在RAM有限的10美元板上,通过chromium.connect('ws://server:9222')连接到远程Chromium实例。这使得PicoClaw在边缘设备上保持约8MB的占用量,而浏览器则在其他地方运行。

8. 仔细配置工作区限制

PicoClaw的restrict_to_workspace设置将文件和执行操作限制在工作区目录内。确保你的脚本和Playwright安装位于~/.picoclaw/workspace/中。


结论

PicoClaw + CapSolver的集成代表了一种从根本上不同的验证码解决方法。与在桌面电脑上使用重型浏览器扩展不同,一个在10美元硬件上运行的Go编译代理负责整个解决流程

  1. 使用Playwright导航到目标页面
  2. data-sitekey属性中提取站点密钥
  3. 通过直接调用CapSolver的REST API进行解决
  4. 将解决方案令牌注入隐藏表单字段
  5. 提交表单并验证成功

这为您提供了:

  • 无需Chrome扩展依赖 — 可与任何无头浏览器配合使用
  • 无头服务器支持 — 不需要显示或Xvfb
  • 自然语言控制 — 只需通过Telegram、Discord或12+种其他渠道告诉代理您想要完成什么
  • 边缘设备部署 — 在10美元的RISC-V板上以低于10MB的RAM全天候运行
  • 默认安全 — ExecTool中的27+个拒绝模式可防止危险命令

附加内容:快速启动脚本

将上述完整工作示例保存到~/.picoclaw/workspace/solve_captcha.js并运行:

bash 复制代码
CAPSOLVER_API_KEY=CAP-XXX node ~/.picoclaw/workspace/solve_captcha.js

或者只需向您的PicoClaw代理发送一条Telegram消息,让它自主处理一切。


准备好开始了吗? 注册CapSolver 并使用优惠码 PICOCLAW 在首次充值时获得额外6%的奖励!


FAQ

PicoClaw如何与浏览器扩展不同地解决CAPTCHAs?

PicoClaw直接使用CapSolver的REST API。代理编写并执行Node.js/Playwright脚本,通过调用createTaskgetTaskResult获取解决方案令牌,然后将其注入页面DOM。不需要浏览器扩展。整个流程通过PicoClaw的ExecToolpkg/tools/shell.go)完成,该工具以27+个安全拒绝模式运行sh -c "node script.js",限制工作区路径,并可配置超时时间。

我需要特殊的Chrome版本吗?

不需要。与需要Chrome for Testing的扩展方法不同(因为品牌Chrome 137+禁用了扩展加载),PicoClaw可以与任何Chromium构建配合使用 — 包括Playwright捆绑的Chromium、标准Chromium包或无头Chrome。这在边缘设备上尤其重要,因为您可能只能使用发行版提供的Chromium。

PicoClaw真的能在10美元的板上运行吗?

是的。PicoClaw在0.6GHz核心上运行时RAM占用低于10MB,启动时间不到1秒。它支持RISC-V、ARM64和x86_64。CapSolver的云API处理繁重的工作;PicoClaw只需进行协调。注意:Chromium需要100-300MB RAM,因此RAM低于256MB的板应连接到远程浏览器。

CapSolver支持哪些验证码类型?

CapSolver支持reCAPTCHA v2(复选框和不可见版)、reCAPTCHA v3、reCAPTCHA Enterprise、Cloudflare Turnstile、AWS WAF验证码等。PicoClaw集成示例中使用的是ReCaptchaV2TaskProxyLess,但技能文件中记录了所有任务类型。代理通过修改任务类型参数可以适应任何支持的验证码类型。

我能在无头服务器上使用此工具吗?

可以 — 这正是PicoClaw方法的优势所在。由于不涉及浏览器扩展,您不需要Xvfb或虚拟显示。Playwright可直接在完全无头模式下运行。结合PicoClaw的极小占用,这使其非常适合持续运行的服务器部署。

CapSolver的费用是多少?

CapSolver根据验证码类型和数量提供具有竞争力的价格。访问capsolver.com查看当前价格。使用优惠码PICOCLAW可在首次充值时获得额外6%的折扣。

PicoClaw是免费的吗?

PicoClaw是开源的(MIT许可证),可在您自己的硬件上免费运行。您需要为所选AI模型提供商的API密钥以及CapSolver账户和积分。PicoClaw二进制文件本身没有运行成本。

验证码解决需要多长时间?

在我们的Discord机器人集成测试中,使用reCAPTCHA v2,代理的Playwright脚本(包括CapSolver API轮询)执行时间为24.2秒。从Discord消息到响应的完整端到端时间约为30秒,包括5次LLM迭代用于脚本生成、执行和视觉验证。

PicoClaw的拒绝模式会阻止我的自动化脚本吗?

不会。pkg/tools/shell.go中的拒绝模式阻止的是危险的系统命令(如rm -rfsudodocker run),而不是常规的Node.js执行。运行node script.js和本地npm install是完全允许的。仅阻止全局安装(npm install -g)和包管理命令。

我可以并行运行多个验证码解决任务吗?

可以。使用PicoClaw的spawn工具创建多个后台子代理,每个处理不同的验证码任务。SubagentManagerpkg/tools/subagent.go)独立运行每个子代理,并通过MessageBus将结果报告回来。

PicoClaw与Nanobot在验证码解决方面相比如何?

PicoClaw受到Nanobot(Python)的启发,用Go重写以实现极端效率。两者都使用代理驱动的验证码解决 — 关键区别在于资源需求。Nanobot需要100MB+ RAM和Python;PicoClaw需要低于10MB,并作为一个单一二进制文件发布。对于边缘设备,PicoClaw是明显的选择。

合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。

更多