Como funciona o reCAPTCHA v2 e como resolvê-lo (em breve)
O reCAPTCHA v2 é o captcha clássico do Google. Ele mostra uma caixa de marcação com o texto "Não sou um robô" e, quando não tem certeza sobre o visitante, acrescenta um desafio de imagens. Um solver para ele precisa produzir um token de resposta válido, que o site possa verificar junto ao Google. O suporte da Scarnox ao reCAPTCHA v2 está em breve. Este guia explica como o widget funciona, as abordagens gerais que as pessoas usam hoje e o que esperar de um solver baseado em token.
A Scarnox ainda não resolve o reCAPTCHA v2 em produção. O único tipo de tarefa ativo hoje é o PopularCaptcha, proxyless. Se o seu projeto precisa do reCAPTCHA v2 agora, as abordagens abaixo são as opções realistas.
Como o widget funciona
A página incorpora um elemento contêiner com o atributo data-sitekey. Esse sitekey identifica o site para o Google. Quando o widget carrega, ele roda verificações no navegador, analisando o comportamento do visitante, os cookies e o histórico, e envia uma avaliação de risco ao Google.
Se a avaliação for de baixo risco, a caixa é marcada automaticamente e o widget grava um token em um campo oculto chamado g-recaptcha-response. Se a avaliação for de risco mais alto, o visitante vê um desafio de imagens, como selecionar blocos que contêm determinado objeto. Passar no desafio também grava o token.
O backend do site então envia esse token ao endpoint de verificação do Google, junto com a chave secreta do site. O Google responde com sucesso ou falha. Como a verificação acontece no servidor, um formulário que aceita um token sem checá-lo junto ao Google não está protegido pelo reCAPTCHA de fato.
Por que ele é sinalizado
A caixa de marcação é uma decisão de risco, não um quebra-cabeça. Os gatilhos habituais são:
- uma rajada de requisições a partir de um mesmo endereço IP;
- uma sessão de navegador nova, sem cookies nem histórico;
- um ambiente de navegador que parece automatizado, como uma configuração headless padrão;
- um padrão de entrada que não parece uma pessoa movendo o mouse ou digitando.
Entender esses gatilhos importa mais do que o próprio widget. Se o seu tráfego não aciona a caixa de marcação, você nunca vê o desafio de imagens.
Abordagens gerais que funcionam hoje
Estas abordagens são amplamente usadas, e são honestas. Elas reduzem a frequência com que um desafio aparece em trabalhos legítimos.
- Mantenha sessões reais. Reutilize cookies e um perfil de navegador consistente ao longo de uma sessão, em vez de começar do zero a cada página.
- Controle o ritmo das requisições. Um ritmo constante e lento parece muito mais uma pessoa do que uma rajada.
- Use um navegador real para o widget. Um navegador completo com configurações normais tem menos chance de ser sinalizado do que um build headless simplificado. O guia de detecção de navegador headless lista os sinais comuns.
- Peça uma exceção ou uma chave de teste. Se você é dono do site, use as chaves de teste publicadas pelo Google em homologação. Se não é, peça ao dono uma lista de permissões.
- Mantenha uma pessoa no processo. Para tarefas de baixo volume, uma pessoa pode marcar a caixa e repassar o token. É lento, mas confiável.
Essas abordagens não garantem que um desafio nunca apareça. Elas reduzem a frequência, o que mantém estável um trabalho legítimo.
O que um solver baseado em token vai fazer
Um solver baseado em token para o reCAPTCHA v2 faz o que o PopularCaptcha faz hoje. Ele recebe o sitekey e a URL da página, produz um g-recaptcha-response válido e o devolve ao seu código. Seu código então grava o token no formulário e o envia antes que ele expire.
A Scarnox vai documentar o tipo de tarefa e os campos extras na referência da API quando o suporte ao reCAPTCHA v2 for lançado. Até lá, não construa com base em uma interface presumida. O formato da requisição será semelhante ao exemplo do PopularCaptcha, mas confira a documentação para os valores exatos.
Checklist para um trabalho com reCAPTCHA v2
Ao planejar um trabalho que toca em um formulário com reCAPTCHA v2, confira estes pontos:
- O site é seu? Se sim, use chaves de teste em homologação e mantenha os testes em produção no mínimo.
- O trabalho é legítimo? Coleta de dados públicos e os seus próprios fluxos de trabalho são; abuso de contas e spam não são.
- A taxa é baixa o suficiente para que a caixa de marcação fique quieta?
- Você tem um plano para o desafio de imagens, seja uma pessoa, seja um solver quando houver um disponível?
- Você verifica o resultado da validação no servidor, e não apenas a presença de um token?
Erros comuns
O problema mais frequente em uma integração de reCAPTCHA v2 é um token que o site rejeita mesmo parecendo correto. Três causas respondem pela maioria desses casos. A primeira é a divergência entre o sitekey e a URL da página: o token é vinculado à página em que o widget foi exibido, então um sitekey tirado de uma página e enviado a outra vai falhar. A segunda é um token velho. Os tokens têm vida curta, então um script que resolve primeiro e depois executa uma sequência lenta de outras etapas vai enviar um valor expirado. A terceira é a falta de uma verificação no servidor do seu lado. Se os seus testes só confirmam que um token existe, você não vai perceber que a etapa de verificação está falhando.
Um segundo grupo de erros vem do fluxo ao redor do widget. Fazer login em uma sessão e enviar o formulário a partir de outra é um erro comum, porque a verificação pode depender da sessão que carregou o widget. Tentar reenviar um formulário rejeitado muitas vezes seguidas também faz a sessão parecer suspeita, o que pode transformar um único desafio em uma série deles. Quando algo falha, pause, verifique o estado da página e tente mais uma vez com valores novos.
Faça scraping com responsabilidade
Se o formulário faz parte de um trabalho de scraping, verifique o robots.txt e os termos do site antes de começar. Mantenha a taxa baixa e não colete dados pessoais de que você não precisa. O guia sobre se web scraping é legal cobre as principais considerações.