A extração de dados da Web é 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 de onde está a extrair dados.
Neste artigo, vou partilhar 11 dicas detalhadas sobre como fazer scraping na Web sem ser bloqueado ou colocado na lista negra. Ao seguir estas dicas, aprenderá a proteger a sua identidade durante o processo de scraping, a respeitar os termos de serviço dos sites e a espaçar as suas solicitações para evitar sobrecarregar o site de destino com demasiadas solicitações.
Porque é que é bloqueado?
A extração de dados da Web nem sempre é permitida, pois pode ser considerada uma violação dos termos de serviço de um site. Os sites costumam ter regras específicas sobre a utilização de ferramentas de extração de dados. Podem proibir totalmente a extração ou impor restrições quanto à forma e ao tipo de dados que podem ser extraídos. Além disso, a extração de 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 confidenciais, como dados pessoais ou financeiros. Tal prática pode conduzir a graves problemas legais, bem como a possíveis violações das leis de privacidade e proteção de dados.
Além disso, alguns sites também dispõem de medidas anti-scraping para detetar e bloquear os scrapers. A utilização do scraping pode ser considerada 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 o scraping é realizado de forma ética e legal. Se não tiver a certeza se o scraping é permitido, é sempre uma boa ideia consultar o administrador do site ou a equipa jurídica.
1. Respeite os Termos de Serviço do site
Antes de extrair dados de um site, é importante ler e compreender os termos de serviço do site. Estes encontram-se normalmente no rodapé do site ou numa página separada intitulada «Termos de Serviço» ou «Exclusão de Robôs». É importante respeitar 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) é uma norma utilizada por sites para comunicar com rastreadores da Web e outros agentes automatizados, tais como scrapers. O REP é implementado através de um ficheiro denominado «robots.txt», que é colocado no servidor do site. Este ficheiro contém instruções para os 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 ou scraper da Web que respeite o REP irá ler o ficheiro robots.txt ao visitar um site e não 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 provêm 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 região em questão, é possível contornar essas restrições e aceder aos dados.
Evite bloqueios de IP
Os sites podem detetar e bloquear pedidos que chegam com demasiada rapidez, por isso é importante espaçar os pedidos e evitar enviar demasiados de uma só vez. Utilizar um proxy pode ajudar a evitar bloqueios de IP, enviando os pedidos através de diferentes endereços IP. Mesmo que um endereço IP seja bloqueado, pode continuar a extrair dados mudando para outro.
4. Alterne o seu endereço IP
A rotação de IP é uma técnica utilizada na extração de dados da Web para ocultar a sua identidade e tornar mais difícil para os sites detetarem e bloquearem o seu programa de extração. A rotação de IP consiste em utilizar um endereço IP diferente para cada pedido enviado a um site. Ao alternar os endereços IP, pode fazer com que a sua atividade de extração pareça mais com o tráfego normal de utilizadores humanos.
Existem duas formas principais de realizar a rotação de IP durante a extração de dados:
Utilização de um conjunto de IPs proxy
Este método envolve a utilização de um conjunto de endereços IP provenientes de diferentes servidores proxy. Antes de enviar um pedido a um site, o scraper seleciona aleatoriamente um endereço IP desse conjunto para utilizar nesse pedido.
Utilizar um serviço de rotação de proxies
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 mantém um conjunto de endereços IP e atribui automaticamente um endereço IP diferente a cada pedido. Esta pode ser uma forma mais prática de alternar os IPs, uma vez que não é necessário gerir o conjunto de endereços IP, podendo 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 os pedidos podem ser enviados através de vários endereços IP em simultâneo.
5. Utilize um navegador sem interface gráfica
Para evitar restrições ao fazer web scraping, é importante que as suas interações com o site de destino pareçam as de utilizadores comuns que estão a visitar os URLs. Utilizar um navegador web sem interface gráfica é uma das melhores formas de conseguir isso.
Um navegador sem interface gráfica é um navegador sem interface gráfica do utilizador que pode ser controlado programaticamente ou através da 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 outras suites de automatização de navegadores para integrar navegadores sem interface gráfica no seu rastreador 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 sem interface gráfica.
6. Utilizar agentes de utilizador reais
A maioria dos navegadores online mais populares, como o Google Chrome e o Firefox, inclui o modo sem interface gráfica. Mesmo que utilize um navegador oficial no modo sem interface gráfica, 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 do utilizador é uma sequência 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 para rastrear a origem do mesmo. Ao utilizar um agente do utilizador que imite fielmente um navegador comum, é possível aumentar as hipóteses de o seu scraper passar despercebido.
7. Utilize um serviço para resolver CAPTCHAs
O CAPTCHA (Teste de Turing Público Completamente Automatizado para Distinguir Computadores de Humanos) é uma técnica utilizada por sites para impedir a extração automatizada de dados. Este teste consegue distinguir entre humanos e bots, apresentando desafios que só um ser humano consegue resolver. 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.
Talvez seja conveniente 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 serviços de resolução de CAPTCHAs são bastante lentos e caros. A WebScrapingAPI dispõe de mecanismos avançados anti-bot 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 depressa; enviar demasiados pedidos num curto espaço de tempo pode levar um site a detetar que o está a fazer. Isso pode bloquear os seus pedidos. É importante espaçar os seus pedidos e evitar enviar demasiados de uma só vez.
Insira intervalos aleatórios entre os seus pedidos e ações. Desta forma, tornará o comportamento do seu rastreador ou scraper mais imprevisível para o site de destino, reduzindo a probabilidade de ser detetado.
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 fará com que seja bloqueado. Por isso, é importante escalonar a extração de dados e evitar extrair grandes quantidades de dados num curto espaço de tempo.
9. Esteja atento às armadilhas do tipo «honeypot»
Em alguns sites, são criadas armadilhas do tipo «honeypot». Estes mecanismos têm como objetivo atrair os bots para as armadilhas sem que os utilizadores reais se apercebam.
Os links incluídos no código HTML de um site, mas invisíveis para os utilizadores, constituem algumas das armadilhas «honeypot» mais básicas. Para determinar se um link é visível ou não para os utilizadores reais, pode verificar o seu estilo aplicado.
Aqui está um exemplo de código com duas funções que devolvem 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», que instrui a função a verificar se o link está a ser exibido ou se é visível, uma vez que nem todos os links que não são exibidos são armadilhas do tipo «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 do tipo «honeypot» são utilizadas em conjunto com sistemas de rastreio capazes de identificar pedidos automatizados. Desta forma, mesmo que os pedidos futuros não provenham do mesmo endereço IP, o site será capaz de os reconhecer como sendo semelhantes.
10. Utilizar 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 indisponível ou a página tenha sido removida. Esta funcionalidade pode ser útil na extração de dados da web, pois permite aceder a uma página web mesmo que o site original esteja a bloquear o seu IP ou o seu programa de extração.
Para aceder ao valor armazenado 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 em questão. Por exemplo, para extrair dados da página de preços da WebScrapingAPI, pode extrair “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 conta que pode ser limitado. Pode conter versões antigas dos dados do site. A frequência com que o Google rastreia um site depende da popularidade deste, pelo que os dados podem estar bastante desatualizados em sites menos populares.
Outras limitações podem ser o facto de não ser possível utilizar parâmetros de consulta ou âncoras na página de destino. Além disso, alguns sites podem indicar explicitamente ao Google para 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 erros comuns nesta área e fornecer-lhe dados limpos e fiáveis. A WebScrapingAPI é um dos melhores fornecedores de serviços de scraping, dispondo da infraestrutura, largura de banda e sistema de rotação de IPs necessários para lidar com trabalhos de scraping em grande escala.
Tenha em atenção que estas dicas são orientações gerais e não constituem uma garantia de que não será bloqueado. Cada site é diferente e tem políticas anti-scraping distintas. No entanto, seguir estas dicas irá ajudá-lo a aumentar as hipóteses de o seu scraper funcionar sem problemas e passar despercebido.
Resumo
Em conclusão, é importante realizar a extração de dados da Web de forma responsável para evitar ser bloqueado ou colocado numa 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 realizar sempre a extração de dados 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 os erros mais comuns no 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. Essas ferramentas podem ajudar a lidar com CAPTCHAs, a gerir erros e a contornar medidas anti-scraping. Podem poupar-lhe tempo e dinheiro, além de o ajudar a cumprir a lei.
Dito isto, a WebScrapingAPI oferece um período de teste de 7 dias, sem necessidade de cartão de crédito; talvez queira experimentá-la.




