Blog / Conformidade / No.006

Por que nunca burlamos um CAPTCHA nem um limite de taxa

Um CAPTCHA, um 429 e uma diretiva de robots são a mesma frase em três dialetos. Quando encontramos um, o job para e espera uma pessoa. É o projeto, não um plano B.

Mohamad · Knockwire2 de junho de 20265 min de leituraConformidade

Este texto é uma tradução do original em inglês.

Não burlamos um CAPTCHA. Nem com um solver, nem com um navegador ajustado para parecer mais humano, nem contornando um limite de taxa com um endereço de saída novo, nem buscando o caminho que uma diretiva de robots pediu para deixarmos em paz. Este é um texto de posição em vez de um texto de engenharia, porque a engenharia aqui é trivial e a posição é a única parte interessante.

01Um controle é uma frase, não um muro

Ajuda ler os três controles comuns como o que eles de fato são, que é fala dirigida a quem quer que esteja operando o software.

  • Uma diretiva de robots diz: não busque isto com um programa. É um arquivo de texto sem imposição de nenhum tipo, e funcionou por trinta anos apenas nessa base.
  • Um 429 com Retry-After diz: não tão rápido. O número é o dono do site contando a você, com precisão, o quanto ele pode servir.
  • Um CAPTCHA em um formulário de contato diz: queremos uma pessoa aqui. É um pedido de humano do outro lado da mensagem, feito por alguém que presumivelmente teve motivo para pedir.

Nenhum deles é tecnicamente forte. Cada um é barato de enunciar e barato de derrotar, e essa assimetria não é um defeito de projeto neles. São baratos porque são endereçados a partes que vão honrá-los. Um controle é quase o único vocabulário que o dono de um site tem para dizer não a um software, e se a resposta a cada um deles é um contorno, então ele não tem vocabulário nenhum e a troca nunca foi de duas vias.

Vale ser preciso em uma coisa: um controle não precisa ser razoável para nos vincular. Às vezes o CAPTCHA está em um formulário que recebe quatro mensagens por mês e não protege nada. Ainda assim é uma resposta, dada de antemão, a uma pergunta que estávamos prestes a fazer.

02A capacidade não é a questão

Vale ser claro sobre quem está dizendo isso. A Knockwire é construída pelo time por trás da Crawlbase, que vende infraestrutura de scraping e proxy desde 2017 e atende mais de 46.000 clientes pagantes. Saídas residenciais em rodízio, navegadores headless e o resto desse arsenal são o trabalho do dia a dia. Passar pela maioria dos controles descritos acima não é um problema de pesquisa nesta casa.

O que é exatamente por que a regra vale ser dita em voz alta. Uma regra que você cumpre porque não consegue quebrar não é regra, é limitação com boa assessoria de imprensa. A única versão desse compromisso que carrega algum peso é a feita por alguém que não seria atrasado por quebrá-lo, e que então não quebra.

A pergunta nunca foi se dá para fazer. A pergunta é se fazer isso é coerente com o que vamos fazer em seguida, que é pedir a um estranho que considere comprar alguma coisa. Esse pedido pede confiança de uma pessoa que não nos deve nenhuma. Abrir a conversa demonstrando que as preferências declaradas dela não nos vinculam responde à pergunta que ela estava prestes a fazer sobre nós, e responde mal. A mensagem diz que respeitamos o tempo dela. O método de entrega diz o contrário, e o método de entrega é a parte que de fato aconteceu.

Uma regra que você cumpre porque não consegue quebrar não é regra, é limitação com boa assessoria de imprensa.

03Por que burlar CAPTCHA custou a categoria inteira

A prospecção automatizada é malvista por razões merecidas e em boa medida mecânicas. As ferramentas ficaram muito boas em vencer cada encontro individual: passar o guarda do formulário, passar o limite de taxa, entrar na caixa de entrada. Cada uma dessas vitórias era pequena e local, e paga por alguém que não estava na sala.

Somadas, ensinaram a uma profissão inteira que qualquer coisa que chega de um estranho por uma rota automatizada pode ser apagada sem ler. Essa é hoje a posição de partida para uma mensagem genuinamente relevante, de uma empresa real com endereço real, escrita por uma pessoa que leu o destinatário antes de escrever. As ferramentas venceram todas as brigas e perderam a categoria, e não existe versão disso em que um contorno mais sofisticado recupera o terreno, porque o terreno foi perdido para o contorno em primeiro lugar.

04Como é parar, e o que isso custa

No produto, parar é um estado em vez de um caminho de exceção. Quando o detector de formulário reporta um CAPTCHA, o job vai para needs_review e fica ali. Sem nova tentativa de um endereço novo, sem chamada a solver, sem segunda tentativa uma hora depois, e sem caça ao endpoint legado desprotegido atrás do protegido, que é o mesmo ato com modos melhores. Uma pessoa abre a fila, vê a empresa e o motivo, e decide se escreve para ela à mão. Muitas vezes ninguém escreve.

O registro estacionado carrega tudo o que uma pessoa precisa para decidir: a empresa, a fonte que a leu, o raciocínio que a levou pelos filtros, o formulário que encontramos, o controle que encontramos, e o rascunho que já estava escrito. Nada é descartado quando um job para, porque o ponto de parar é entregar uma decisão a alguém, e uma decisão precisa da evidência junto. A única coisa que o registro não carrega é um botão de tentar de novo.

O mesmo formato vale mais acima. Um 429 de uma fonte de descoberta para aquela fonte pela noite em vez de insistir contra um bloqueio. Limites de taxa por domínio são aplicados antes de qualquer entrega, não depois que chega uma reclamação. A entrega passa pelo formulário de contato público da empresa contatada, em nome de uma pessoa real com endereço real. O envio de e-mail está previsto para o quarto trimestre de 2026 e não está construído.

Isso nos custa, que é a única razão de significar alguma coisa. Todo job estacionado é uma empresa que foi lida, qualificada, pesquisada e depois não contatada, e ela cai no registro de recusas como leitura recusada com motivo escrito em vez de sumir em silêncio dos números. A nossa contagem de envios realizados é menor do que seria se um CAPTCHA fosse tratado como quebra-cabeça. Publicar essas recusas é o que impede a regra de ser só uma alegação: o registro do que declinamos, e por quê, é um número pelo qual qualquer um pode nos cobrar, e é justamente o número que um contorno melhoraria.

RegraQuando encontramos um controle, o job para e espera uma pessoa. Não é um plano B para quando um contorno falha, porque não existe contorno do qual recuar. Uma política que só se sustenta enquanto quebrá-la seria inconveniente não é política, é uma preferência esperando um prazo.

A Knockwire lê a internet, descarta as empresas que nunca vão comprar de você e bate na porta das que podem comprar. Rode no seu próprio domínio e leia as suas recusas.

Rodar no meu siteTodos os textos