Tratamento de CAPTCHA
Saiba mais sobre os mecanismos de detecção e tratamento de CAPTCHA do Oxylabs Agent Browser e como usá-los.
Por padrão, Oxylabs Agent Browser não faz não o tratamento automático de CAPTCHAs. Para ativar a detecção e o tratamento automáticos assim que uma página carregar, adicione solve_captcha=true à sua URL de conexão.
Se um site de destino exibir desafios dinamicamente durante interações em várias etapas, ou se você precisar de monitoramento avançado de eventos e otimizações de velocidade, use os parâmetros, eventos e técnicas documentados abaixo.
Monitorando eventos de CAPTCHA
Você pode monitorar o ciclo de vida do solucionador. A extensão interna oxylabs-runtime do navegador transmite eventos de status diretamente para o window object. Ao registrar um listener de evento "message" personalizado, seu script pode rastrear esses eventos para pausar e retomar ações.
oxylabs-captcha-start
O solucionador detectou um CAPTCHA e iniciou o processo de tratamento.
oxylabs-captcha-end
O solucionador concluiu com sucesso e tratou o desafio.
oxylabs-captcha-solve-end
Evento alternativo de conclusão emitido após o sucesso.
oxylabs-captcha-error
O solucionador falhou ao tratar o desafio.
Exemplos de código
Estes exemplos mostram como injetar um init script para capturar eventos de CAPTCHA em tempo de execução antes da navegação da página, para que seu script pause durante o tratamento ativo.
from playwright.sync_api import sync_playwright
username = "USERNAME_abc12"
password = "PASSWORD"
endpoint = "hb.oxylabs.io"
# solve_captcha=true enables handling and event emission (off by default)
browser_url = f"wss://{username}:{password}@{endpoint}?solve_captcha=true"
def run():
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(browser_url)
ctx = browser.contexts[0]
page = ctx.new_page()
# Inject listener BEFORE navigation
ctx.add_init_script(""")
window.addEventListener("message", (event) => {
if (event.data && event.data.source === "oxylabs-runtime") {
window.__extensionStatus = event.data.type;
}
});
""")
page.goto("https://example.com/captcha-page", wait_until="domcontentloaded")
# Wait for solver to complete (polls status flag)
page.wait_for_function(
"""() => {
const status = window.__extensionStatus;
if (status === "oxylabs-captcha-error") {
throw new Error("CAPTCHA solving failed");
}
return status === "oxylabs-captcha-solve-end" || status === "oxylabs-captcha-end";
}""",
timeout=60000
)
print("CAPTCHA solved. Resuming automation...")
browser.close()
if __name__ == "__main__":
run()Gatilhos manuais dinâmicos
Alguns alvos exibem desafios de CAPTCHA apenas após ações do usuário (por exemplo, depois de clicar em um botão interativo de envio de formulário ou realizar rolagem dinâmica).
Você pode acionar programaticamente o manipulador de CAPTCHA do Agent Browser a qualquer momento na sua sessão usando window.postMessage evento diretamente ao objeto window:
Padrão de acionamento
Para elementos típicos, acione o solucionador imediatamente após executar a ação do usuário:
Otimização de velocidade
O tratamento de CAPTCHAs adiciona latência de execução mecânica. Ao fazer scraping de alvos que impõem barreiras repetitivas de CAPTCHA, considere estes métodos para melhor desempenho:
Reutilizar sessões
Depois que uma sessão remota do navegador conclui um CAPTCHA em um domínio, a verificação é salva. Navegue repetidamente ou execute etapas adicionais da página na mesma sessão do navegador sem acionar novamente as rotinas de resolução de desafios.
Várias abas
Em vez disso, de conexões WebSocket separadas (que iniciam sandboxes distintos com pools de cookie vazios), execute tarefas simultâneas abrindo várias abas ou contextos dentro da sua sessão existente, para reduzir o tempo de conexão e verificação em todas as páginas.
Ativar seletivamente
Como solve_captcha está desativado por padrão, habilite-o apenas (solve_captcha=true) para as conexões específicas que precisam dele, em vez de mantê-lo ativado em todo o fluxo de trabalho — isso evita a latência de inicialização do solucionador em páginas ou sessões que não enfrentam desafios de CAPTCHA.
Atualizado
Isto foi útil?