
Adélia Cruz
MCP Integration Engineer
Publicado Feb 03, 2026
Atualizado Feb 04, 2026 · minutos de leitura

O RoxyBrowser fornece funcionalidade de navegador por meio de chamadas de API e pode ser integrado com frameworks de automação como Selenium, Puppeteer e Playwright. Sua API foi projetada para permitir que você abra perfis de navegador reais de forma programática e anexe suas ferramentas de automação. A API tem um limite de taxa documentado de 100 chamadas por minuto por ponto de extremidade.
Fonte: https://faq.roxybrowser.org/en/guide/10-API
O CapSolver fornece um fluxo de API de criação e verificação que retorna um token CAPTCHA que você pode injetar na página. O CapSolver suporta vários tipos de CAPTCHA:
ReCaptchaV2TaskProxyLess, retorna gRecaptchaResponseReCaptchaV3TaskProxyLess, retorna gRecaptchaResponse com pontuaçãoAntiTurnstileTaskProxyLess, retorna token Consulte as docsEste guia mostra um fluxo prático e independente de framework: abra um perfil do Roxy via API, anexe seu framework de automação, resolva o CAPTCHA com o CapSolver e injete o token para continuar.
RoxyBrowser é um navegador antidetect para multi-contas com recursos como automação via API e sincronizador de janelas múltiplas.
Para automação, a API é a parte mais relevante:
Suporta integração com Selenium, Puppeteer e Playwright.
As solicitações devem incluir um cabeçalho token.
O host padrão da API é http://127.0.0.1:50000 (a alteração da porta requer reinicialização).
O CapSolver resolve CAPTCHAs por meio de duas chamadas de API:
createTask para enviar os parâmetros do CAPTCHAgetTaskResult para verificar até que o token esteja prontoPara reCAPTCHA v2, o CapSolver retorna gRecaptchaResponse.
getTaskResult é limitado a 120 consultas por tarefa e deve ser chamado dentro de 5 minutos da criação da tarefa.
Por padrão, o host é http://127.0.0.1:50000. Se você alterar a porta, será necessário reiniciar o RoxyBrowser.
Use /browser/workspace para buscar workspaces, depois /browser/list_v3 para listar perfis.
import requests
BASE = "http://127.0.0.1:50000"
HEADERS = {"token": "SUA_CHAVE_API_DO_ROXY"}
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"]
Chame /browser/open. A resposta inclui:
ws: Interface WebSocket para ferramentas de automaçãohttp: Interface HTTP para ferramentas de automaçãodriver: Caminho do WebDriver para integração com SeleniumO modo headless não é suportado.
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"]
Use os endpoints retornados para anexar seu framework:
driver com uma conexão do debugger.Os passos exatos para anexar dependem do seu framework, mas os valores ws, http e driver são explicitamente fornecidos para ferramentas de automação.
import time
import requests
CAPSOLVER_API_KEY = "SUA_CHAVE_API_DO_CAPSOLVER"
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", "Erro no 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", "Tarefa falhou"))
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
}
# Adicione metadados adicionais se fornecidos
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", "")
Para referência:
Abra um perfil do Roxy via /browser/open e anexe seu framework de automação.
Navegue até a página de destino e extraia a chave do site.
Exemplo:
const siteKey = document.querySelector(".g-recaptcha")?.getAttribute("data-sitekey");
Resolva com o CapSolver usando o helper acima.
Injete o token e envie o formulário:
const token = "TOKEN_DO_CAPSOLVER";
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 }));
A reCAPTCHA v3 funciona de forma diferente - ela roda em segundo plano e retorna uma pontuação (0,0 a 1,0) em vez de exigir interação do usuário.
Extraia a chave do site e a ação da página:
// A chave do site geralmente está em um script ou tag meta
const siteKey = document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey');
// A ação é encontrada em chamadas grecaptcha.execute
// Procure no código da página por: grecaptcha.execute('CHAVE', {action: 'AÇÃO'})
const pageAction = "submit"; // ou "login", "registro", etc.
Resolva com o CapSolver:
token = solve_recaptcha_v3(
website_url="https://exemplo.com/login",
website_key="6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAA",
page_action="login"
)
Injete o token (mesmo processo do v2):
const token = "TOKEN_DO_CAPSOLVER";
document.getElementById("g-recaptcha-response").value = token;
// Se houver um callback, invoque-o
if (typeof ___grecaptcha_cfg !== 'undefined') {
const clients = ___grecaptcha_cfg.clients;
Object.keys(clients).forEach(key => {
if (clients[key].callback) {
clients[key].callback(token);
}
});
}
O Cloudflare Turnstile é uma alternativa moderna de CAPTCHA que é mais rápida de resolver (1-20 segundos).
Extraia a chave do site do Turnstile:
const siteKey = document.querySelector('.cf-turnstile')?.getAttribute('data-sitekey');
// Opcional: extraia a ação e cdata se presentes
const action = document.querySelector('.cf-turnstile')?.getAttribute('data-action');
const cdata = document.querySelector('.cf-turnstile')?.getAttribute('data-cdata');
Resolva com o CapSolver:
token = solve_turnstile(
website_url="https://exemplo.com",
website_key="0x4AAAAAAAxxxxxxxxxxxxxxx",
action=action, // opcional
cdata=cdata // opcional
)
Injete o token do Turnstile:
const token = "TOKEN_DO_CAPSOLVER_TURNSTILE";
// Encontre o campo de resposta do 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 }));
}
// Alternativa: alguns sites usam um nome de entrada diferente
const altInput = document.querySelector('input[name="turnstile-response"]');
if (altInput) {
altInput.value = token;
}
getTaskResult do CapSolver é limitado a 120 verificações dentro de 5 minutos.Pronto para começar? Registre-se no CapSolver e use o código de bônus ROXYBROWSER para obter um bônus adicional de 6% na sua primeira recarga!

O RoxyBrowser suporta Selenium, Puppeteer e Playwright?
Sim. A API foi projetada para integração com esses frameworks.
Onde obtenho o token e o host da API?
Em API -> Configuração da API no RoxyBrowser. O host padrão é http://127.0.0.1:50000.
O que o /browser/open retorna?
Retorna os campos ws, http e driver usados pelas ferramentas de automação.
O modo headless é suportado?
Não, o modo headless não é suportado.
Quais tipos de CAPTCHA o CapSolver suporta?
Como o CapSolver retorna tokens reCAPTCHA v2?
Crie uma tarefa com ReCaptchaV2TaskProxyLess e verifique getTaskResult para gRecaptchaResponse.
Como o reCAPTCHA v3 difere do v2?
A reCAPTCHA v3 roda em segundo plano sem interação do usuário e retorna uma pontuação (0,0-1,0). Ela requer o parâmetro pageAction, que pode ser encontrado procurando por grecaptcha.execute no código da página.
Como resolver o Cloudflare Turnstile?](https://www.capsolver.com/blog/Cloudflare/solver-cloudflare-challenge-turnstile-2024)
Use o tipo de tarefa AntiTurnstileTaskProxyLess com websiteURL e websiteKey. Opcionalmente inclua metadata.action e metadata.cdata se presentes no widget. O Turnstile é resolvido em 1-20 segundos.
Leitura adicional:
Como encontrar a chave do site do Turnstile?
Procure pelo atributo data-sitekey no elemento .cf-turnstile. As chaves do Turnstile começam com 0x4.
Preciso de um proxy para o CapSolver?
Não, os tipos de tarefa *ProxyLess usam a infraestrutura de proxy interna do CapSolver. Use as variantes sem ProxyLess se precisar usar seus próprios proxies.
O RoxyBrowser fornece um ambiente de navegador baseado em perfis com endpoints de automação, e o CapSolver fornece tokens CAPTCHA programáticos. Ao abrir um perfil do Roxy, anexar seu framework e injetar tokens do CapSolver, você pode construir fluxos de automação confiáveis com CAPTCHA.

Adélia Cruz
MCP Integration Engineer
Making CapSolver tools accessible through MCP.
SOBRE O AUTOR
Aprenda arquitetura de raspagem web escalável em Rust com reqwest, scraper, raspagem assíncrona, raspagem de navegador headless, rotação de proxies e tratamento de CAPTCHA compatível.

Compare o Selenium vs Puppeteer para resolver CAPTCHA. Descubra benchmarks de desempenho, notas de estabilidade e como integrar o CapSolver para o máximo de sucesso.
