Voltar ao blogue
Guias
Ștefan RăcilăLast updated on Mar 31, 202610 min read

As 11 melhores dicas para evitar ser bloqueado ou ter o IP banido ao fazer web scraping

As 11 melhores dicas para evitar ser bloqueado ou ter o IP banido ao fazer web scraping

O web scraping é uma ferramenta poderosa para extrair dados valiosos de sites. Permite automatizar o processo de recolha de dados, o que representa uma grande poupança de tempo tanto para empresas como para particulares. No entanto, com grande poder vem grande responsabilidade. Se não tiver cuidado, o seu endereço IP poderá ser banido ou bloqueado pelo site que está a rastrear.

Neste artigo, vou partilhar 11 dicas detalhadas sobre como fazer web scraping sem ser bloqueado ou colocado na lista negra. Ao seguir estas dicas, aprenderá a proteger a sua identidade enquanto faz scraping, a respeitar os termos de serviço dos sites e a sincronizar os seus pedidos para evitar sobrecarregar o site de destino com demasiados pedidos.

Por que é que é bloqueado?

O web scraping nem sempre é permitido, pois pode ser considerado uma violação dos termos de serviço de um site. Os sites costumam ter regras específicas sobre o uso de ferramentas de web scraping. Podem proibir totalmente o scraping ou impor restrições sobre como e quais dados podem ser extraídos. Além disso, extrair dados de um site pode sobrecarregar os servidores do site, o que pode tornar o site mais lento para os utilizadores legítimos.

Pode deparar-se com problemas ao extrair informações sensíveis, como dados pessoais ou financeiros. Fazer isso pode levar a sérios problemas legais, bem como a potenciais violações das leis de privacidade e proteção de dados.

Além disso, alguns sites também têm medidas anti-scraping implementadas para detetar e bloquear scrapers. O uso do scraping pode ser visto como uma tentativa de contornar essas medidas, o que também seria proibido.

Em geral, é importante respeitar sempre os termos de serviço de um site e certificar-se de que está a fazer scraping de forma ética e legal. Se não tiver a certeza se o scraping é permitido, é sempre uma boa ideia verificar com o administrador do site ou com a equipa jurídica.

1. Respeite os Termos de Serviço do Site

Antes de fazer scraping num site, é importante ler e compreender os termos de serviço do site. Estes podem normalmente ser encontrados no rodapé do site ou numa página separada intitulada «Termos de Serviço» ou «Exclusão de Robôs». É importante seguir todas as regras e regulamentos descritos nos termos de serviço.

2. Preste atenção ao ficheiro “robots.txt”

O Protocolo de Exclusão de Robôs (REP) é um padrão utilizado pelos sites para comunicar com rastreadores da Web e outros agentes automatizados, tais como scrapers. O REP é implementado através de um ficheiro chamado «robots.txt» que é colocado no servidor do site. Este ficheiro contém instruções para rastreadores da Web e outros agentes automatizados, indicando-lhes quais as páginas ou secções do site que não devem ser acedidas ou indexadas.

O ficheiro robots.txt é um ficheiro de texto simples que utiliza uma sintaxe específica para indicar quais as partes do site que devem ser excluídas do rastreamento. Por exemplo, o ficheiro pode incluir instruções para excluir todas as páginas de um determinado diretório ou todas as páginas com um determinado tipo de ficheiro. Um rastreador da Web ou scraper que respeite o REP irá ler o ficheiro robots.txt ao visitar um site e não irá aceder nem indexar quaisquer páginas ou secções que estejam excluídas do ficheiro.

A título de exemplo, pode encontrar o ficheiro robots.txt do nosso site aqui.

3. Utilizar proxies

Existem várias razões pelas quais pode utilizar um proxy ao fazer web scraping. Um proxy permite-lhe encaminhar os seus pedidos através de um endereço IP diferente. Isto pode ajudar a ocultar a sua identidade e tornar mais difícil para os sites rastrearem a sua atividade de scraping. Ao alternar o seu endereço IP, torna-se ainda mais difícil para um site detetar e bloquear o seu scraper. Parecerá que os pedidos estão a vir de locais diferentes.

Contornar restrições geográficas

Alguns sites podem ter restrições geográficas, permitindo o acesso apenas a determinados utilizadores com base no seu endereço IP. Ao utilizar um servidor proxy localizado na localização de destino, pode contornar estas restrições e obter acesso aos dados.

Evite bloqueios de IP

Os sites podem detetar e bloquear pedidos que chegam demasiado depressa, por isso é importante espaçar os seus pedidos e evitar enviar demasiados de uma só vez. Utilizar um proxy pode ajudá-lo a evitar bloqueios de IP, enviando pedidos através de diferentes endereços IP. Mesmo que um endereço IP seja bloqueado, pode continuar a fazer scraping mudando para outro.

4. Alterne o seu endereço IP

A rotação de IP é uma técnica utilizada no web scraping para ocultar a sua identidade e tornar mais difícil para os sites detetarem e bloquearem o seu scraper. A rotação de IP envolve a utilização de um endereço IP diferente para cada pedido feito a um site. Ao rodar os endereços IP, pode fazer com que a sua atividade de scraping pareça mais com tráfego humano normal.

Existem duas formas principais de conseguir a rotação de IP ao fazer scraping:

Utilizar um conjunto de IPs de proxy

Este método envolve a utilização de um conjunto de endereços IP de diferentes servidores proxy. Antes de efetuar um pedido a um site, o scraper seleciona aleatoriamente um endereço IP do conjunto para utilizar nesse pedido.

Utilizar um serviço de rotação de proxy

Este método envolve a utilização de um serviço que alterna automaticamente o endereço IP para cada pedido feito a um site. O serviço manterá um conjunto de endereços IP e atribuirá automaticamente um endereço IP diferente a cada pedido. Esta pode ser uma forma mais conveniente de alternar IPs, uma vez que não precisa de gerir o conjunto de IPs e pode deixar que o serviço trate disso por si.

A rotação de IPs também pode ajudar a acelerar o scraping, uma vez que as solicitações podem ser enviadas através de vários endereços IP simultaneamente.

5. Utilize um navegador headless

Para evitar restrições durante o web scraping, é importante que as suas interações com o site de destino pareçam visitas de utilizadores normais às URLs. Utilizar um navegador sem interface gráfica é uma das melhores formas de conseguir isso.

Um navegador headless é um navegador sem interface gráfica de utilizador que pode ser controlado programaticamente ou através de uma linha de comandos. Isto permite-lhe interagir com um site como se o estivesse a navegar manualmente e pode aumentar as hipóteses de o seu scraper passar despercebido.

Pode utilizar o Puppeteer ou outros pacotes de automação de navegadores para integrar navegadores headless no seu crawler ou scraper.

Consulte os nossos guias detalhados sobre Como utilizar o Puppeteer com NodeJS e Como utilizar o Selenium com Python para saber mais sobre a utilização de navegadores headless.

6. Utilize agentes de utilizador reais

A maioria dos navegadores online populares, como o Google Chrome e o Firefox, inclui o modo headless. Mesmo que utilize um navegador oficial no modo headless, deve fazer com que o seu comportamento pareça natural. Para tal, são frequentemente utilizados vários cabeçalhos de pedido especiais, como o User-Agent.

O agente de utilizador é uma cadeia de caracteres que identifica o software, a versão e o dispositivo que está a efetuar o pedido. Esta informação pode ser utilizada pelo site para determinar como responder ao pedido e também pode ser utilizada para rastrear a origem do pedido. Ao utilizar um agente de utilizador que imita de perto um navegador comum, pode aumentar as hipóteses de o seu scraper passar despercebido.

7. Utilize um serviço para resolver CAPTCHAs

O CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) é uma técnica utilizada por sites para impedir o scraping automatizado. Este teste consegue diferenciar entre humanos e bots, apresentando desafios que exigem a intervenção humana para serem concluídos. Por exemplo, identificar uma série de caracteres numa imagem. Esteja preparado para lidar com eles quando surgirem, utilizando um serviço de terceiros como o Anti Captcha ou o 2Captcha.

Pode querer ponderar se ainda é rentável fazer scraping de sites que exigem a resolução contínua de CAPTCHAs ao longo do tempo. Alguns destes fornecedores de resolução de CAPTCHAs são bastante lentos e caros. A WebScrapingAPI possui mecanismos antibot avançados que reduzem o número de CAPTCHAs encontrados. Também utilizamos a resolução automatizada de CAPTCHAs como alternativa.

8. Abrande

Não faça o scraping demasiado rápido; enviar demasiados pedidos num curto espaço de tempo pode fazer com que um site detete que o está a rastrear. Isto pode bloquear os seus pedidos. É importante espaçar os seus pedidos e evitar enviar demasiados de uma só vez.

Adicione atrasos aleatórios entre as suas solicitações e ações. Isso tornará o comportamento do seu rastreador ou scraper mais imprevisível para o site de destino, reduzindo a chance de detecção.

Evite extrair grandes quantidades de dados num curto espaço de tempo. Extrair uma grande quantidade de dados num curto espaço de tempo ativará os filtros de spam do site e você será bloqueado. Portanto, é importante escalonar a sua extração e evitar extrair grandes quantidades de dados num curto espaço de tempo.

9. Esteja atento às armadilhas honeypot

Em alguns sites, são criadas armadilhas honeypot. Estes mecanismos têm como objetivo atrair bots para armadilhas sem que os utilizadores reais se apercebam.

Links que estão incluídos no código HTML de um site, mas são invisíveis para as pessoas, são algumas das armadilhas honeypot mais elementares. Para determinar se um link é visível ou não para os utilizadores genuínos, pode verificar o seu estilo computado.

Aqui está um exemplo de código com duas funções que irão devolver uma lista com todos os links visíveis que se encontram na página web. A função verifica, para cada link, se a cor de fundo é igual à cor do texto. Também possui um parâmetro chamado strict. Isso irá instruir a função a verificar se o link está a ser exibido ou se é visível, pois nem todos os links que não são mostrados são armadilhas honeypot.

function getComputedBackgroundColor(elem) {
    let isTransparent
    do {
        const bgColor = window.getComputedStyle(elem).backgroundColor
        isTransparent = !/rgb\(|[1-9]{1,3}\)'$/.test(bgColor) // you can test this regex on regex101.com

        if (isTransparent) {
            elem = elem.parentElement
        }
    } while (isTransparent)

    return window.getComputedStyle(elem).backgroundColor
}

function filterLinks(strict) { 
	let allLinksArray = Array.from(document.querySelectorAll('a[href]')); 
	console.log('There are ' + allLinksArray.length + ' total links'); 
    
	let filteredLinks = allLinksArray.filter(link => { 
		let linkCss = window.getComputedStyle(link); 
		let isDisplayed = linkCss.getPropertyValue('display') != 'none'; 
		let isVisible = linkCss.getPropertyValue('visibility') != 'hidden';
        let computedBgColor = window.getComputedBackgroundColor(link)
        let textColor = linkCss.textColor

        if (strict) {
            if (isDisplayed && isVisible && computedBgColor !== textColor) return link; 
        } else {
            if (computedBgColor !== textColor) return link; 
        }
	}); 
    
	console.log('There are ' + filteredLinks.length + ' visible links'); 
}

Normalmente, as armadilhas honeypot são utilizadas em combinação com sistemas de rastreamento capazes de identificar pedidos automatizados. Ao fazer isto, mesmo que pedidos futuros não se originem do mesmo IP, o site será capaz de reconhecê-los como sendo semelhantes.

10. Utilize o Cache do Google

O Cache do Google é uma funcionalidade da Pesquisa Google que permite aos utilizadores visualizar uma versão em cache de uma página web. Mesmo que o site original esteja em baixo ou a página web tenha sido removida. Esta funcionalidade pode ser útil ao fazer web scraping, uma vez que permite aceder a uma página web mesmo que o site original esteja a bloquear o seu IP ou o seu scraper.

Para aceder à versão em cache de uma página web, é necessário adicionar o prefixo “https://webcache.googleusercontent.com/search?q=cache:” ao URL da página web de destino. Por exemplo, para fazer web scraping da página de preços da WebScrapingAPI, pode fazer scraping de “https://webcache.googleusercontent.com/search?q=cache:https://www.webscrapingapi.com/pricing”.

Utilizar o cache do Google pode ser uma boa alternativa ao fazer scraping, mas tenha em mente que pode ser limitado. Pode conter versões antigas dos dados do site. A frequência com que o Google rastreia um site baseia-se na popularidade, pelo que os dados podem estar bastante desatualizados em sites menos populares.

Outras ressalvas podem ser o facto de não ser possível utilizar parâmetros de consulta ou âncoras para a página web de destino. Além disso, alguns sites podem instruir ativamente o Google a não armazenar as suas páginas em cache.

11. Contrate um profissional

Contratar um serviço profissional de scraping pode ajudá-lo a evitar armadilhas comuns e fornecer-lhe dados limpos e fiáveis. A WebScrapingAPI é um dos melhores fornecedores de scraping, com a infraestrutura, largura de banda e sistema de rotação de IP necessários para lidar com trabalhos de scraping em grande escala.

Tenha em mente que estas dicas são orientações gerais e não uma garantia de que não será bloqueado. Cada site é diferente e tem políticas anti-scraping distintas. Mas seguir estas dicas irá ajudá-lo a aumentar as hipóteses de o seu scraper funcionar sem problemas e sem ser detetado.

Resumo

Em conclusão, é importante fazer web scraping de forma responsável para evitar ser bloqueado ou colocado na lista negra. Ao seguir as 11 dicas descritas neste artigo, irá proteger a sua identidade. Irá respeitar os termos de serviço do site e evitar sobrecarregá-lo com demasiados pedidos. Lembre-se de fazer sempre scraping de forma ética e legal. Esta pode ser a forma de garantir que não é bloqueado pelos sites.

Além disso, vale a pena considerar a utilização de um serviço profissional de scraping. Estes serviços podem fornecer-lhe dados limpos e fiáveis e ajudá-lo a evitar armadilhas comuns do scraping. Um prestador de serviços de scraping profissional dispõe de ferramentas e técnicas mais avançadas para lidar com o scraping na Web. Tais ferramentas podem ajudar a lidar com CAPTCHA, a gerir erros e a contornar medidas anti-scraping. Podem poupar-lhe tempo e dinheiro, e ajudá-lo a manter-se dentro da legalidade.

Dito isto, o WebScrapingAPI tem um período de teste de 7 dias, sem necessidade de cartão de crédito, pelo que talvez queira experimentá-lo.

Sobre o autor
Ștefan Răcilă, Desenvolvedor Full Stack @ WebScrapingAPI
Ștefan RăcilăDesenvolvedor Full Stack

Stefan Racila é engenheiro de DevOps e Full Stack na WebScrapingAPI, onde desenvolve funcionalidades do produto e mantém a infraestrutura que garante a fiabilidade da plataforma.

Comece a construir

Pronto para expandir a sua recolha de dados?

Junte-se a mais de 2.000 empresas que utilizam a WebScrapingAPI para extrair dados da Web à escala empresarial, sem quaisquer custos de infraestrutura.