Scarnox · Blog

Cloudflare Turnstile: como funciona e como resolver (em breve)

O Cloudflare Turnstile é um captcha que normalmente não exige nada do visitante. Ele faz verificações no navegador e, na maioria dos casos, passa sem nenhum quebra-cabeça. Quando não tem certeza, pode mostrar uma etapa interativa curta. O widget então grava um token no formulário, e o site verifica esse token com a Cloudflare. O suporte ao Turnstile na Scarnox está em breve. Este guia explica como o widget funciona, por que ele costuma ser confundido com outros desafios e quais são as abordagens gerais para trabalhos legítimos.

Como o widget é incorporado

A página inclui um elemento contêiner com a classe cf-turnstile e um atributo data-sitekey. O script do Turnstile é carregado, executa as suas verificações e adiciona um campo oculto chamado cf-turnstile-response. O valor desse campo é o token. O formulário o envia junto com os demais campos, e o backend do site o encaminha ao endpoint de verificação da Cloudflare, junto com a chave secreta do site.

Como nos outros widgets de token, a verificação acontece no servidor. Um formulário que aceita qualquer valor nesse campo sem verificá-lo não está realmente protegido.

Modos e o que significam para um script

O Turnstile pode funcionar em mais de um modo. No modo gerenciado, a Cloudflare decide se mostra uma etapa interativa. No modo não interativo, o widget nunca pede nada ao visitante e apenas mostra um status. No modo invisível, nada é exibido. Para um script, o modo muda o que aparece na página, mas o resultado é o mesmo: um token no campo do formulário, verificado no servidor.

Os tokens são de curta duração e de uso único. Envie o formulário logo depois que o widget gerar o token e não reutilize um token que já foi verificado.

Por que bloqueia a automação

O Turnstile observa sinais do ambiente do navegador e o comportamento da sessão. Um navegador headless padrão, um conjunto de recursos do navegador ausente ou inconsistente, uma sessão nova sem histórico e um endereço de rede suspeito podem todos empurrar a decisão para um desafio ou um bloqueio. Os sinais são da mesma família usada por outras verificações baseadas em score, por isso as abordagens são parecidas.

Abordagens legítimas

Estas são as abordagens que funcionam para trabalhos legítimos:

  1. Use um navegador real para páginas que carregam o Turnstile. Um perfil de navegador normal, com configurações consistentes, tem menos chance de ser desafiado do que um build de automação puro. O guia de detecção de navegador headless lista os sinais mais comuns.
  2. Permaneça na sessão. Mantenha os cookies entre as páginas do seu fluxo de trabalho, para que o visitante não pareça novo a cada requisição.
  3. Controle o ritmo das requisições. Um ritmo constante e parecido com o humano reduz desafios muito mais do que qualquer truque isolado.
  4. Leia antes as regras do site protegido pela Cloudflare. Muitos sites protegidos publicam uma API ou um feed. Verifique isso antes de construir um fluxo de navegador. O guia de scraping de sites protegidos pela Cloudflare aborda a estratégia com mais profundidade.
  5. Use chaves de teste em desenvolvimento. A Cloudflare publica chaves de site de teste para desenvolvimento, que produzem resultados previsíveis sem uma verificação real. Elas são para os seus próprios testes de integração, não para o tráfego de produção.
  6. Peça ao dono. Se você administra o site, pode ajustar as configurações do Turnstile para os caminhos que os seus testes automatizados usam. Se não administra, peça uma allowlist ou uma API.

O que um solver de Turnstile faria

Um solver de Turnstile baseado em token recebe o sitekey e a URL da página, produz um token válido para o campo cf-turnstile-response e o devolve ao seu código. O seu código grava o token no formulário e o envia logo em seguida. É o mesmo padrão da integração ativa com o PopularCaptcha, com um tipo de tarefa diferente.

A Scarnox ainda não resolve o Turnstile ao vivo. O único tipo de tarefa ativo hoje é o PopularCaptcha, proxyless. O Turnstile está em breve, e os detalhes da requisição estarão na referência da API quando for lançado. Não construa nada com base em uma interface presumida antes disso.

Erros comuns

Integrações com o Turnstile costumam falhar de algumas formas previsíveis. A mais comum é usar um token depois que ele expirou ou depois que já foi verificado. Como os tokens são de uso único, uma nova tentativa depois de um envio de formulário falho precisa de um resultado de widget novo, não do valor antigo. A segunda é um sitekey que pertence a outro ambiente. Uma chave de desenvolvimento em uma página de produção, ou o contrário, produz uma falha de verificação que parece um bug no seu código. Verifique qual chave a página usa antes de depurar qualquer outra coisa.

Outro erro frequente é tratar uma etapa interativa como falha. No modo gerenciado, o Turnstile pode mostrar uma etapa curta para alguns visitantes, e um script que espera uma passagem silenciosa vai travar nela. Construa o fluxo para aguardar o resultado do widget e para tratar o caso em que ele pede mais.

Por fim, não fixe o nome do campo sem conferi-lo na página ao vivo. O input cf-turnstile-response é o padrão, mas um site pode envolver o widget de forma diferente, e ler o formulário renderizado é mais rápido do que adivinhar.

Faça scraping com responsabilidade

Fazer scraping de um site protegido pelo Turnstile é um trabalho comum, e exige o mesmo cuidado de qualquer outro scraping. Verifique o robots.txt e os termos de uso. Mantenha a sua taxa baixa e não colete dados pessoais de que não precisa. Quando o site tiver uma API, dê preferência a ela. O guia sobre se web scraping é legal cobre as principais questões.

Preparando-se

Crie uma conta para começar com crédito de teste grátis, sem cartão. Quando o suporte ao Turnstile for lançado, você poderá testá-lo nas suas próprias páginas antes de rodar qualquer coisa contra um site ativo.

Próximos passos