Skip to content

Cloudflare Turnstile

O Pydoll consegue clicar num checkbox do Cloudflare Turnstile para você, o mesmo clique que uma pessoa faz no widget. Ele não resolve desafios de imagem ou de quebra-cabeça, e se o clique é aceito ou não depende da reputação do seu IP e do seu fingerprint, não do Pydoll. Encare isto como automatizar o clique, não como derrotar o captcha.

Lide com o Turnstile enquanto navega

O context manager espera o widget do Turnstile aparecer durante o bloqueio, clica no seu checkbox e deixa o seu código continuar assim que agiu. Coloque dentro do bloco a navegação que dispara o desafio.

import asyncio

from pydoll.browser.chromium import Chrome


async def main():
    async with Chrome() as browser:
        tab = await browser.start()

        async with tab.expect_and_bypass_cloudflare_captcha():
            await tab.go_to('https://a-site-behind-turnstile.com')

        content = await tab.find(id='protected-content', timeout=10, raise_exc=False)
        print(await content.text if content else 'Still challenged.')

asyncio.run(main())

Substitua a URL pelo site que você está automatizando. Não existe uma página pública e estável do Turnstile para apontar.

Lide com o Turnstile em segundo plano

Quando você não quer envolver uma navegação específica, ative o tratamento em segundo plano: o Pydoll clica no widget sempre que ele aparece, até você desativar.

import asyncio

from pydoll.browser.chromium import Chrome


async def main():
    async with Chrome() as browser:
        tab = await browser.start()

        await tab.enable_auto_solve_cloudflare_captcha()
        await tab.go_to('https://a-site-behind-turnstile.com')
        await asyncio.sleep(5)   # dá tempo para o widget aparecer e ser clicado

        await tab.disable_auto_solve_cloudflare_captcha()

asyncio.run(main())

Como ele encontra o checkbox

O Pydoll detecta o Turnstile fazendo polling no shadow DOM da página em busca do widget do Cloudflare: ele procura o shadow root que hospeda challenges.cloudflare.com, entra no seu iframe cross-origin, encontra o shadow root interno e clica no checkbox assim que ele aparece. Você não configura um seletor, e não há delay de clique para ajustar.

Dê tempo para o widget aparecer

Alguns sites renderizam o Turnstile depois do carregamento inicial. time_to_wait_captcha (padrão 5 segundos) é quanto tempo o Pydoll espera pelo widget antes de desistir. Aumente para um site lento.

async with tab.expect_and_bypass_cloudflare_captcha(time_to_wait_captcha=15):
    await tab.go_to('https://a-site-behind-turnstile.com')

time_to_wait_captcha é o único parâmetro de tempo. Se o widget nunca aparecer dentro dessa janela, a interação é ignorada.

Migrando de versões antigas

custom_selector e time_before_click ainda existem nesses métodos, mas estão deprecados e são ignorados. A detecção agora é automática, então remova-os do código antigo.

O que determina se o clique é aceito

Clicar no checkbox é apenas parte disso. O Turnstile decide se aceita a partir de sinais que o Pydoll não controla:

  • Reputação do IP. Um IP residencial ou móvel limpo costuma ser aceito; um IP de datacenter é frequentemente desafiado ou bloqueado. Nenhuma configuração de navegador supera um IP marcado. Veja Proxies.
  • Consistência do fingerprint. A identidade que o seu navegador apresenta tem que concordar consigo mesma e com o seu IP. Uma falha comum é uma incompatibilidade de versão do Chrome: se você combinar isto com a Injeção de fingerprint, a versão anunciada pelo perfil tem que corresponder ao binário real, ou o Turnstile fica preso em "Just a moment...". Alinhe-a a await browser.get_version().
  • Headful vs headless. O headless vaza sinais de renderização que reduzem a pontuação de confiança. Prefira headful para o Turnstile, ou neutralize os sinais de headless antes (veja Injeção de fingerprint).

Se o checkbox é clicado mas um desafio de quebra-cabeça ou de imagem aparece em seguida, a pontuação de confiança estava baixa demais. O Pydoll não consegue resolver esse desafio; melhore o IP e o fingerprint em vez disso.

O que ele não faz

  • Ele não resolve desafios de seleção de imagem ou de quebra-cabeça.
  • Ele não lida com reCAPTCHA nem hCaptcha. Esses não são suportados por este recurso.
  • Ele não muda o seu IP nem o seu fingerprint. Combine-o com um bom proxy e um fingerprint consistente para que o clique surta efeito.

Respeite os termos do site

Automatizar um captcha pode violar os Termos de Serviço de um site. Use isto apenas onde você está autorizado a fazê-lo: testando suas próprias aplicações, monitorando serviços que você controla ou em pesquisa com permissão.

O que vem a seguir