CAPSOLVER
博客
如何在RoxyBrowser中使用CapSolver集成解决CAPTCHA

如何在RoxyBrowser中通过CapSolver集成解决验证码

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

04-Feb-2026

RoxyBrowser通过API调用提供浏览器功能,可以与Selenium、Puppeteer和Playwright等自动化框架集成。其API设计用于通过编程方式打开真实的浏览器配置文件并附加您的自动化工具。每个端点的API有记录的速率限制,每分钟最多100次调用。
来源:https://faq.roxybrowser.org/en/guide/10-API

CapSolver提供了一个创建和轮询的API流程,返回您可以注入到页面中的CAPTCHA令牌。CapSolver支持多种CAPTCHA类型:

  • reCAPTCHA v2:任务类型 ReCaptchaV2TaskProxyLess,返回 gRecaptchaResponse
  • reCAPTCHA v3:任务类型 ReCaptchaV3TaskProxyLess,返回带有分数的 gRecaptchaResponse
  • Cloudflare Turnstile:任务类型 AntiTurnstileTaskProxyLess,返回 token 查看文档

本指南展示了一个与框架无关的实际流程:通过API打开Roxy配置文件,附加您的自动化框架,使用CapSolver解决CAPTCHA,并注入令牌以继续。


什么是RoxyBrowser?

RoxyBrowser 是一个用于多账号的反检测浏览器,具有API自动化和多窗口同步器等功能。

对于自动化,API 是最相关的内容:

  • 它支持Selenium、Puppeteer和Playwright集成。

  • 请求必须包含 token 请求头。

  • 默认API主机是 http://127.0.0.1:50000(端口更改需要重启)。


什么是CapSolver?

CapSolver通过两次API调用来解决CAPTCHA:

  1. createTask 提交CAPTCHA参数
  2. getTaskResult 轮询直到令牌准备就绪

对于reCAPTCHA v2,CapSolver返回 gRecaptchaResponse

getTaskResult 每个任务最多允许120次查询,并且必须在任务创建后5分钟内调用。

RoxyBrowser API设置

1) 启用API并获取您的令牌

  1. 打开RoxyBrowser并进入 API
  2. 将API开关设置为 启用
  3. 复制API密钥(令牌)并确认主机/端口。

默认情况下,主机是 http://127.0.0.1:50000。如果更改端口,必须重启RoxyBrowser。

2) 获取工作区和配置文件ID

使用 /browser/workspace 获取工作区,然后使用 /browser/list_v3 列出配置文件。

python 复制代码
import requests

BASE = "http://127.0.0.1:50000"
HEADERS = {"token": "YOUR_ROXY_API_KEY"}

workspaces = requests.get(f"{BASE}/browser/workspace", headers=HEADERS).json()
workspace_id = workspaces["data"]["rows"][0]["id"]

profiles = requests.get(
    f"{BASE}/browser/list_v3",
    params={"workspaceId": workspace_id},
    headers=HEADERS
).json()
dir_id = profiles["data"]["rows"][0]["dirId"]

3) 打开配置文件并捕获自动化端点

调用 /browser/open。响应包括:

  • ws:自动化工具的WebSocket接口
  • http:自动化工具的HTTP接口
  • driver:Selenium集成的WebDriver路径

不支持无头模式。

python 复制代码
open_resp = requests.post(
    f"{BASE}/browser/open",
    json={"workspaceId": workspace_id, "dirId": dir_id, "args": []},
    headers=HEADERS
).json()

ws_endpoint = open_resp["data"]["ws"]
http_endpoint = open_resp["data"]["http"]
driver_path = open_resp["data"]["driver"]

4) 附加您的自动化框架

使用返回的端点来附加您的框架:

  • Puppeteer/Playwright可以通过DevTools WebSocket或HTTP端点连接。
  • Selenium可以使用 driver 路径与调试器连接。

具体的附加步骤取决于您的框架,但 wshttpdriver 值会明确提供给自动化工具。


CapSolver助手(Python)

python 复制代码
import time
import requests

CAPSOLVER_API_KEY = "YOUR_CAPSOLVER_API_KEY"
CAPSOLVER_BASE = "https://api.capsolver.com"

def create_task(task):
    payload = {"clientKey": CAPSOLVER_API_KEY, "task": task}
    r = requests.post(f"{CAPSOLVER_BASE}/createTask", json=payload)
    data = r.json()
    if data.get("errorId", 0) != 0:
        raise RuntimeError(data.get("errorDescription", "CapSolver错误"))
    return data["taskId"]

def get_task_result(task_id, delay=2):
    while True:
        time.sleep(delay)
        r = requests.post(
            f"{CAPSOLVER_BASE}/getTaskResult",
            json={"clientKey": CAPSOLVER_API_KEY, "taskId": task_id}
        )
        data = r.json()
        if data.get("status") == "ready":
            return data["solution"]
        if data.get("status") == "failed":
            raise RuntimeError(data.get("errorDescription", "任务失败"))

def solve_recaptcha_v2(website_url, website_key):
    task = {
        "type": "ReCaptchaV2TaskProxyLess",
        "websiteURL": website_url,
        "websiteKey": website_key
    }
    task_id = create_task(task)
    solution = get_task_result(task_id)
    return solution.get("gRecaptchaResponse", "")

def solve_recaptcha_v3(website_url, website_key, page_action="verify"):
    task = {
        "type": "ReCaptchaV3TaskProxyLess",
        "websiteURL": website_url,
        "websiteKey": website_key,
        "pageAction": page_action
    }
    task_id = create_task(task)
    solution = get_task_result(task_id)
    return solution.get("gRecaptchaResponse", "")

def solve_turnstile(website_url, website_key, action=None, cdata=None):
    task = {
        "type": "AntiTurnstileTaskProxyLess",
        "websiteURL": website_url,
        "websiteKey": website_key
    }
    # 如果提供,添加可选的元数据
    if action or cdata:
        task["metadata"] = {}
        if action:
            task["metadata"]["action"] = action
        if cdata:
            task["metadata"]["cdata"] = cdata

    task_id = create_task(task)
    solution = get_task_result(task_id)
    return solution.get("token", "")

参考资料:

端到端流程:reCAPTCHA v2

  1. 通过 /browser/open 打开Roxy配置文件 并附加您的自动化框架。

  2. 导航到目标页面 并提取站点密钥。
    示例:

    javascript 复制代码
    const siteKey = document.querySelector(".g-recaptcha")?.getAttribute("data-sitekey");
  3. 使用上面的助手用CapSolver解决

  4. 注入令牌并提交表单

    javascript 复制代码
    const token = "CAPSOLVER_TOKEN";
    const el = document.getElementById("g-recaptcha-response");
    el.style.display = "block";
    el.value = token;
    el.dispatchEvent(new Event("input", { bubbles: true }));
    el.dispatchEvent(new Event("change", { bubbles: true }));

端到端流程:reCAPTCHA v3

reCAPTCHA v3的工作方式不同——它在后台运行,并返回一个分数(0.0到1.0),而不是需要用户交互。

  1. 从页面中提取站点密钥和操作

    javascript 复制代码
    // 站点密钥通常在脚本或元标签中
    const siteKey = document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey');
    
    // 操作在 grecaptcha.execute 调用中找到
    // 在页面源代码中搜索:grecaptcha.execute('KEY', {action: 'ACTION'})
    const pageAction = "submit"; // 或 "login", "register" 等
  2. 用CapSolver解决

    python 复制代码
    token = solve_recaptcha_v3(
        website_url="https://example.com/login",
        website_key="6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAA",
        page_action="login"
    )
  3. 注入令牌(与v2相同):

    javascript 复制代码
    const token = "CAPSOLVER_TOKEN";
    document.getElementById("g-recaptcha-response").value = token;
    
    // 如果有回调,触发它
    if (typeof ___grecaptcha_cfg !== 'undefined') {
        const clients = ___grecaptcha_cfg.clients;
        Object.keys(clients).forEach(key => {
            if (clients[key].callback) {
                clients[key].callback(token);
            }
        });
    }

端到端流程:Cloudflare Turnstile

Cloudflare Turnstile 是一种现代的CAPTCHA替代方案,解决速度更快(1-20秒)。

  1. 提取Turnstile站点密钥

    javascript 复制代码
    const siteKey = document.querySelector('.cf-turnstile')?.getAttribute('data-sitekey');
    // 可选:提取操作和cdata(如果存在)
    const action = document.querySelector('.cf-turnstile')?.getAttribute('data-action');
    const cdata = document.querySelector('.cf-turnstile')?.getAttribute('data-cdata');
  2. 用CapSolver解决

    python 复制代码
    token = solve_turnstile(
        website_url="https://example.com",
        website_key="0x4AAAAAAAxxxxxxxxxxxxxxx",
        action=action,  // 可选
        cdata=cdata     // 可选
    )
  3. 注入Turnstile令牌

    javascript 复制代码
    const token = "CAPSOLVER_TURNSTILE_TOKEN";
    
    // 查找Turnstile响应输入
    const input = document.querySelector('input[name="cf-turnstile-response"]');
    if (input) {
        input.value = token;
        input.dispatchEvent(new Event('input', { bubbles: true }));
        input.dispatchEvent(new Event('change', { bubbles: true }));
    }
    
    // 可选:某些网站使用不同的输入名称
    const altInput = document.querySelector('input[name="turnstile-response"]');
    if (altInput) {
        altInput.value = token;
    }

最佳实践

  • 遵守RoxyBrowser的API速率限制:每个端点每分钟最多100次调用。
  • CapSolver 的 getTaskResult 在5分钟内最多允许120次轮询。
  • 如果令牌被拒绝,请使用重试逻辑和退避机制。
  • 当目标网站验证令牌来源时,保持求解器IP和浏览IP一致。

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

常见问题

  • RoxyBrowser是否支持Selenium、Puppeteer和Playwright?
    是的。API专为与这些框架集成而设计。

  • 我在哪里获取API令牌和主机?
    在RoxyBrowser的 API -> API配置 中。默认主机是 http://127.0.0.1:50000

  • /browser/open 返回什么?
    它返回自动化工具使用的 wshttpdriver 字段。

  • 支持无头模式吗?
    不支持。

  • CapSolver支持哪些CAPTCHA类型?

  • CapSolver如何返回reCAPTCHA v2令牌?
    创建一个 ReCaptchaV2TaskProxyLess 任务,并轮询 getTaskResult 以获取 gRecaptchaResponse

  • reCAPTCHA v3与v2有何不同?
    reCAPTCHA v3在后台运行,无需用户交互,并返回一个分数(0.0-1.0)。它需要 pageAction 参数,该参数可以通过在页面源代码中搜索 grecaptcha.execute 找到。

  • 如何解决Cloudflare Turnstile?
    使用任务类型 AntiTurnstileTaskProxyLess,并提供 websiteURLwebsiteKey。如果小部件上存在,可选地包括 metadata.actionmetadata.cdata。Turnstile的解决时间在1-20秒之间。
    进一步阅读:

  • 如何找到Turnstile站点密钥?
    查找 .cf-turnstile 元素上的 data-sitekey 属性。Turnstile站点密钥以 0x4 开头。

  • 我需要为CapSolver使用代理吗?
    不需要,*ProxyLess 任务类型使用CapSolver内置的代理基础设施。如果您需要使用自己的代理,请使用非-ProxyLess变体。

结论

RoxyBrowser为您提供基于配置文件的浏览器环境和自动化端点,而CapSolver提供程序化的CAPTCHA令牌。通过打开Roxy配置文件,附加您的框架,并注入CapSolver令牌,您可以构建可靠的CAPTCHA感知自动化流程。

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

更多

RoxyBrowser 与 CapSolver 集成
如何在RoxyBrowser中通过CapSolver集成解决验证码

将 CapSolver 与 RoxyBrowser 集成,以自动化浏览器任务并绕过 reCAPTCHA、Turnstile 及其他验证码。

web scraping
Logo of CapSolver

Ethan Collins

04-Feb-2026

在 Node.js 中进行网页爬虫:使用 Node Unblocker 和 CapSolver
在 Node.js 中进行网页爬虫:使用 Node Unblocker 和 CapSolver

掌握Node.js中的网络爬虫技术,利用Node Unblocker绕过限制,并使用CapSolver解决CAPTCHAs。本指南提供高效且可靠的数据提取进阶策略。

web scraping
Logo of CapSolver

Lucas Mitchell

04-Feb-2026

Easyspider CapSolver 验证码集成
如何在EasySpider中通过CapSolver集成解决验证码

EasySpider 是一个可视化、无代码的网页抓取和浏览器自动化工具,当与 CapSolver 结合使用时,它可以可靠地解决 reCAPTCHA v2 和 Cloudflare Turnstile 等验证码,从而实现在网站间无缝的自动化数据提取。

web scraping
Logo of CapSolver

Emma Foster

04-Feb-2026

Relevance 人工智能与 CapSolver
如何在 Relevance AI 中通过 CapSolver 集成解决 reCAPTCHA v2

使用CapSolver构建一个Relevance AI工具来解决reCAPTCHA v2。通过API自动完成表单提交,无需浏览器自动化。

web scraping
Logo of CapSolver

Ethan Collins

03-Feb-2026

即时数据抓取工具:无需代码快速提取网页数据的方法
即时数据抓取工具:无需代码快速提取网页数据的方法

探索2026年最佳的即时数据抓取工具。学习无需编码即可使用顶级扩展和API快速提取网页数据的方法,实现自动化数据提取。

web scraping
Logo of CapSolver

Sora Fujimoto

28-Jan-2026

网页抓取新闻文章
使用Python进行新闻文章的网络爬虫(2026年指南)

在2026年掌握使用Python进行新闻文章网络爬取的技能。学习使用CapSolver解决reCAPTCHA v2/v3,构建可扩展的数据管道。

web scraping
Logo of CapSolver

Adélia Cruz

28-Jan-2026