Como contornar CAPTCHAs ao fazer Web Scraping? - 5 passos simples

Como fazer, Raspagem, Mar-06-20245 minutos de leitura

Quando extrai dados de sítios Web de grande escala, é muito provável que não tenha tido de enfrentar um CAPTCHA para provar que é um ser humano. Como web scraper, já deve saber porque é que os profissionais de cibersegurança foram obrigados a inventá-los. Foram o resultado de os seus bots automatizarem infinitos pedidos de acesso a sítios Web.

Quando extrai dados de sítios Web de grande escala, é muito provável que não tenha tido de enfrentar um CAPTCHA para provar que é um ser humano. Como web scraper, já deve saber porque é que os profissionais de cibersegurança foram obrigados a inventá-los. Eles resultaram do facto de os seus bots automatizarem infinitos pedidos de acesso a sítios Web. Assim, até os utilizadores genuínos tiveram de se confrontar com CAPTCHAs que aparecem sob diferentes formas. No entanto, é possível contornar os CAPTCHAs, quer seja um web scraper ou não, o que seria o objetivo deste artigo. Mas primeiro, vamos ver o que são CAPTCHAs.

Contornar CAPTCHA para raspagem da Web

Os CAPTCHAs são normalmente accionados para detetar tráfego não natural no site. Para contornar esta restrição, os utilizadores preferem uma solução que possa decifrar todos estes códigos CAPTCHA e aceder ao site como um verdadeiro ser humano. Uma solução para contornar os captchas é o Capsolver. A utilização de proxies com os pedidos da web também ajudará os utilizadores a aparecerem como um tráfego natural. 

O que é um CAPTCHA?

CAPTCHA significa Completely Automated Public Turing Test to tell Computers and Humans Apart (Teste de Turing Público Completamente Automatizado para Diferenciar Computadores e Humanos). É um acrónimo bastante longo, não é? Agora pode estar a perguntar-se o que significa a última parte deste acrónimo, Teste de Turing - bem, é um teste simples para determinar se um humano ou um bot está a interagir com uma página Web ou um servidor Web.

Afinal, um CAPTCHA diferencia os humanos dos bots, ajudando os analistas de segurança cibernética a proteger os servidores Web de ataques de força bruta, DDoS e, nalgumas situações, de scraping da Web. 

Vamos descobrir como os CAPTCHAs diferenciam os humanos dos bots.

Como é que os CAPTCHAs funcionam?

Pode encontrar os CAPTCHAs nos formulários de um sítio Web, incluindo formulários de contacto, de registo, de comentários, de inscrição ou de check-out.

Os CAPTCHAs tradicionais incluem uma imagem com letras esticadas ou desfocadas, números ou ambos numa caixa com uma cor de fundo ou um fundo transparente. Depois, o utilizador tem de identificar os caracteres e escrevê-los no campo de texto que se segue. Este processo de identificação de caracteres é mais fácil para os humanos, mas um pouco complicado para um bot.

A ideia de desfocar ou distorcer o texto CAPTCHA é dificultar a identificação dos caracteres pelo bot. Em contrapartida, os seres humanos podem interpretar e intercetar caracteres em vários formatos, como diferentes tipos de letra, caligrafia, etc. Dito isto, nem todos os humanos conseguem resolver um CAPTCHA à primeira tentativa. De acordo com a investigação, 8% dos utilizadores escrevem mal na primeira tentativa, enquanto 29% falham se os CAPTCHAs forem sensíveis às maiúsculas e minúsculas.

Por outro lado, alguns bots avançados conseguem intercetar letras distorcidas com a ajuda da aprendizagem automática ao longo dos anos. Como resultado, algumas empresas, como a Google, substituíram os CAPTCHAs convencionais por CAPTCHAs sofisticados. Um desses exemplos é o ReCAPTCHA, que descobrirá na secção seguinte.

O que é um ReCAPTCHA?

O ReCAPTCHA é um serviço gratuito que o Google oferece. Pede aos utilizadores que assinalem caixas em vez de escreverem texto, resolverem puzzles ou equações matemáticas.

Um ReCAPTCHA típico é mais avançado do que as formas convencionais de CAPTCHAs. Utiliza imagens e textos do mundo real, como semáforos nas ruas, textos de jornais antigos e livros impressos. Como resultado, os utilizadores não têm de confiar em CAPTCHAs da velha guarda com texto desfocado e distorcido.

Como é que os ReCAPTCHAs funcionam?

Existem três tipos significativos de testes ReCAPTCHA para verificar se o utilizador é um ser humano ou não:

Caixa de verificação

Estes são os ReCAPTCHAs que pedem aos utilizadores que assinalem uma caixa de verificação, "Não sou um robô", como na imagem acima. Embora possa parecer a olho nu que até um robot conseguiria realizar este teste, são tidos em conta vários factores:

  • Este teste investiga os movimentos do rato do utilizador à medida que este se aproxima da caixa de verificação.
  • Os movimentos do rato de um utilizador não são rectos, incluindo a maioria dos movimentos directos do rato. É um desafio para um bot imitar o mesmo comportamento.
  • Por fim, o ReCAPTCHA inspeccionaria os cookies que o seu browser armazena.

Se o ReCAPTCHA não conseguir verificar se o utilizador é humano, ser-lhe-á apresentado outro desafio.

Reconhecimento de imagens

Estes ReCAPTCHAs fornecem aos utilizadores nove ou dezasseis imagens quadradas, como se pode ver na imagem acima. Cada quadrado representa uma parte de uma imagem maior ou imagens diferentes. O utilizador deve selecionar quadrados que representem objectos específicos, animais, árvores, veículos ou semáforos.

Se a seleção do utilizador corresponder às selecções de outros utilizadores que realizaram o mesmo teste, o utilizador é verificado. Caso contrário, o ReCAPTCHA apresentará um teste mais difícil.

Sem interação

Sabia que o ReCAPTCHA pode verificar se é humano ou não sem utilizar caixas de verificação ou quaisquer interacções do utilizador?

Certamente que o faz, considerando o histórico de interação do utilizador com os sítios Web e o comportamento geral do utilizador enquanto está online. Na maioria dos cenários, com base nestes factores, o sistema seria capaz de determinar se o utilizador é um bot.

Se não o fizer, voltará a utilizar qualquer um dos dois métodos anteriormente mencionados.

O que desencadeia os CAPTCHAs e ReCAPTCHAs?

Os CAPTCHAs podem ser accionados se um sítio Web detetar actividades invulgares que se assemelhem a um comportamento de bot. Esse comportamento invulgar inclui pedidos ilimitados em fracções de segundo e cliques em ligações a uma taxa muito superior à dos humanos. 

Assim, alguns sítios Web teriam automaticamente CAPTCHAs para proteger os seus sistemas.

No que diz respeito aos ReCAPTCHAs, não é exatamente claro o que os desencadeia. No entanto, as causas gerais são os movimentos do rato, o histórico de navegação e o rastreio de cookies.

Coisas a saber sobre como contornar CAPTCHAs quando se faz scraping na Web

Agora tem uma visão geral clara do que são CAPTCHAs e Rechaptchas, como funcionam e o que os acciona. Agora é altura de ver como os CAPTCHAs afectam a recolha de dados da Web.

Os CAPTCHAs podem dificultar a raspagem da Web, uma vez que os bots automatizados efectuam a maior parte das operações de raspagem. No entanto, não fique desanimado. Como mencionado no início deste artigo, existem maneiras de superar os CAPTCHAs ao raspar a web. Antes de chegarmos a elas, vamos concentrar nossa atenção no que você precisa saber antes de fazer o scraping.

Envio de demasiados pedidos ao sítio Web de destino

Em primeiro lugar, deve certificar-se de que não permite que o seu Web scraper/crawler envie demasiados pedidos num curto período de tempo. A maioria dos sítios Web menciona nas suas páginas de termos e condições o número de pedidos que o sítio Web permite. Certifique-se de que os lê antes de começar a fazer scraping.

Cabeçalhos HTTP

Quando o utilizador se liga a um sítio Web, envia informações sobre o seu dispositivo para o sítio Web de ligação. Este pode utilizar estas informações para personalizar o conteúdo de acordo com as especificações do seu dispositivo e para efetuar o rastreio métrico. Assim, quando descobrem que os pedidos são do mesmo dispositivo, qualquer pedido que envie posteriormente será bloqueado.

Assim, se tiver desenvolvido o web scraper/crawler por si próprio, poderá alterar as informações do cabeçalho para cada pedido que o seu scraper fizer. Assim, o sítio Web de destino parecerá que está a receber vários pedidos de diferentes dispositivos. Leia aqui para obter mais informações sobre cabeçalhos HTTP.

Endereço IP

Outro facto que deve ter em atenção é que o sítio Web alvo não colocou o seu endereço IP na lista negra. É provável que o seu endereço IP seja colocado na lista negra se enviar demasiados pedidos com o seu scraper/crawler. 

Para ultrapassar o problema acima referido, pode utilizar um servidor proxy, uma vez que este mascara o seu endereço IP. 

A rotação dos cabeçalhos HTTP e dos proxies (mais sobre isto na próxima secção) com um pool garantirá que vários dispositivos acedam ao site a partir de locais diferentes. Assim, deve poder continuar a fazer scraping sem interrupções devido aos CAPTCHAs. Dito isto, deve garantir que não está a prejudicar o desempenho do Web site de forma alguma.

No entanto, é necessário ter em atenção que os proxies não o ajudarão a ultrapassar os CAPTCHAs nos formulários de registo, alteração de palavra-passe, check-out, etc. Ele só pode ajudá-lo a superar as capturas que os sites acionam devido ao comportamento do bot. Para evitar CAPTCHAs nesses formulários, analisaremos os solucionadores de CAPTCHA em uma próxima seção.

Outros tipos de CAPTCHAs

Para além dos factores-chave acima referidos, é necessário conhecer os CAPTCHAs abaixo indicados quando se faz web scraping com um bot:

Honeypots - O Honeypot será um tipo de CAPTCHA incluído num campo de formulário HTML ou numa hiperligação, mas a sua visibilidade é ocultada com CSS. Por isso, antes de fazer com que o seu bot recolha o conteúdo, certifique-se de que as propriedades CSS do elemento estão visíveis.

CAPTCHA de correspondência/palavra - Estes são os CAPTCHAs em equações matemáticas, como resolver "3+7", por exemplo. Também pode haver puzzles de palavras para resolver.

Início de sessão nas redes sociais - Alguns sítios Web exigem que o utilizador inicie sessão com a sua conta do Facebook, por exemplo. No entanto, não são muito populares porque a maioria dos administradores sabe que as pessoas teriam relutância em iniciar sessão com as suas contas de redes sociais.

Controlo do tempo - Estes CAPTCHAs monitorizam a rapidez com que o utilizador executa uma ação específica, como o preenchimento de um formulário, para determinar se se trata de um humano ou de um bot.

Como contornar CAPTCHAs para Web Scraping

Rodar proxies e utilizar endereços IP de qualidade

Tal como mencionado na secção anterior, é necessário rodar os proxies sempre que enviar um pedido ao sítio Web alvo. É uma forma de evitar os CAPTCHAs que são activados durante o scrapeamento. Nestas circunstâncias, é necessário utilizar proxies IP residenciais limpos.

Quando rodar os proxies, será difícil para o sítio Web alvo determinar a sua pegada IP. Isto porque, para cada pedido, apareceria o endereço IP dos proxies em vez do seu.

Rodar agentes do utilizador

Uma vez que irá utilizar um raspador para raspar a Web, terá de disfarçar o agente do utilizador para um navegador Web popular ou para bot-bots suportados, como os bots de motores de busca que os sítios Web reconhecem.

A simples alteração do agente do utilizador não será suficiente, pois é necessário ter uma lista de cadeias de caracteres de agente do utilizador e depois rodá-las. Esta rotação fará com que o sítio Web alvo o veja como um dispositivo diferente quando, na realidade, é um dispositivo que está a enviar todos os pedidos.

Como prática recomendada para esta etapa, seria ótimo manter uma base de dados de agentes de utilizadores reais. Além disso, elimine os cookies quando já não precisar deles.

Serviços de resolução de CAPTCHA

Um método mais simples e pouco técnico para resolver um CAPTCHA seria utilizar um serviço de resolução de CAPTCHA. Estes utilizam Inteligência Artificial (IA), Aprendizagem Automática (MI) e um conjunto de outras tecnologias para resolver um CAPTCHA.

Alguns dos principais solucionadores de CAPTCHA atualmente existentes no sector são o Capsolver e o Anti-CAPTCHA.

Evitar ligações directas

Quando se deixa o scraper aceder diretamente a um URL a cada fração de segundo, o sítio web recetor fica desconfiado. Como resultado, o sítio web alvo accionaria um CAPTCHA.

Para evitar esse cenário, pode definir o cabeçalho do referenciador para que pareça ter sido referenciado a partir de outra página. Isso reduziria a probabilidade de ser detectado como um bot. Em alternativa, pode fazer com que o bot visite outras páginas antes de visitar a ligação pretendida.

Evitar Honeypots

Os honeypots são elementos ocultos numa página Web que os especialistas em segurança utilizam para apanhar bots ou intrusos. Apesar de o navegador renderizar o seu HTML, as suas propriedades CSS estão definidas como ocultas. No entanto, ao contrário dos humanos, o código do pote de mel seria visível para os bots quando estes recolhem os dados. Como resultado, caíram na armadilha montada pelo honeypot.

Por isso, tem de se certificar de que verifica se as propriedades CSS de todos os elementos de uma página Web não estão ocultas ou invisíveis antes de começar a fazer scraping. Só quando tiver a certeza de que nenhum dos elementos está oculto é que define o seu bot para a recolha de dados.

Perguntas mais frequentes

Perguntas frequentes:

1. O que significa contornar CAPTCHAs para Web Scraping?
Contornar os CAPTCHAs é simplesmente o processo de remover os bloqueadores que surgem durante a recolha de dados de vários sítios. Os CAPTCHAs foram concebidos para verificar se o tráfego da Web é orgânico.
2. O que é o ReCaptcha?
O ReCaptcha previne os seus sítios Web de spams e tráfego de bots maliciosos. Gera puzzles interactivos para diferenciar o tráfego orgânico do tráfego de bots.
3. Como é que um proxy ajuda os utilizadores a contornar os Captchas?
Quando se enviam pedidos Web consecutivos a partir de um bot ou de qualquer solução de raspagem, os CAPTCHAs podem identificar facilmente que o tráfego provém de um bot com spam. Assim, a utilização de endereços proxy de um proxy permite-lhe parecer mais como um tráfego em tempo real.

Conclusão

Este artigo ter-lhe-ia dado uma ideia abrangente de como evitar CAPTCHAs ao fazer scraping na Web. Evitar um CAPTCHA pode ser um processo complicado. No entanto, com o uso de técnicas específicas discutidas neste artigo, você pode desenvolver o bot de forma a evitar CAPTCHAs.

Esperamos que tire partido de todas as técnicas apresentadas neste artigo.