Utilize browsers sem cabeça e proxies para recolher dados de qualquer sítio Web

Proxies, Raspagem, Oct-18-20215 minutos de leitura

Quando ouvimos "Headless browser" (navegador sem cabeça), tenho a certeza de que não é uma engenhoca tecnológica familiar que possamos ter encontrado no nosso quotidiano, a menos que saibamos a fundo como funcionam tecnicamente os navegadores. A maioria de vós está familiarizada com navegadores peculiares como o Google Chrome, Firefox, Safari, etc. A única diferença é que os navegadores sem cabeça

Quando ouve "Headless browser" (navegador sem cabeça), tenho a certeza de que não é um dispositivo tecnológico familiar que possa ter encontrado no seu quotidiano, a não ser que saiba profundamente como os navegadores funcionam tecnicamente.

A maioria de vós está familiarizada com navegadores peculiares como o Google Chrome, Firefox, Safari, etc. A única diferença é que os navegadores headless são aqueles peculiares sem cabeça. Iremos explorar o que isto significa na secção seguinte, bem como as suas vantagens.

O que é um browser sem cabeça?

Consegue imaginar o que seria a sua vida se o Google Chrome ou o Firefox não tivessem uma interface gráfica? A menos que seja um engenheiro de software ou alguém com calibre de alta tecnologia, não se dará ao trabalho de o utilizar.

Por conseguinte, um browser sem cabeça funciona sem botões, ícones, barras de deslocamento e ligações que permitem a navegação de um local para outro. Assim, a única forma de estabelecer comunicação com um browser sem cabeça é utilizando uma interface de linha de comandos através de uma rede. 

Tecnicamente, um navegador sem cabeça teria um interpretador JavaScript, um componente de rede, um layout e mecanismos de renderização sem uma GUI.

Então, pode perguntar-se: o que é que alguém ganha em utilizar um browser sem cabeça quando se pode obter o mesmo resultado através de um browser com GUI?

Vamos encontrar a resposta abaixo.

Porquê utilizar um browser sem cabeça?

Bem, antes de mais, os browsers sem cabeça são relativamente mais rápidos do que os browsers normais. Isso deve-se principalmente ao facto de não carregarem CSS, Javascript e HTML como fazem os navegadores normais. Também utilizam menos memória em comparação com os navegadores normais, com muito menos recursos de alojamento.

Além disso, os navegadores sem cabeça poupam a sua produtividade e tempo, automatizando os testes, a qualidade e o desenvolvimento geral de uma aplicação Web ou móvel. Além disso, os navegadores sem cabeça podem monitorizar o desempenho das aplicações de rede e automatizar o processo de renderização e captura de imagens para verificações automatizadas da disposição.

No que diz respeito à recolha de dados da Web, os navegadores sem cabeça permitem-lhe recolher dados de sítios Web sem ter de os abrir manualmente antes de os recolher. Pode extrair o HTML do sítio Web imediatamente.

Além disso, os navegadores sem cabeça desempenham um papel vital nos resultados de pesquisa do Google. Uma vez que os motores de busca apenas necessitam da fonte HTML de uma página para indexar as páginas Web, os navegadores sem cabeça tornam isto possível executando Javascript e preenchendo o conteúdo no local. Este facto levou a um rápido desenvolvimento dos browsers sem cabeça.

Para que são utilizados os navegadores sem cabeça?

Segue-se uma breve lista de tarefas que o browser sem cabeça executa:

Teste de sítios Web

O principal objetivo da utilização de um browser sem cabeça é testar as funcionalidades das aplicações Web e as características da IU. Pode testar aplicações Web automatizando tarefas de teste quotidianas, como a introdução de dados em campos, o preenchimento de formulários, a simulação de cargas e a passagem por fluxos de trabalho completos. Por outro lado, pode automatizar os testes de sistemas sem GUI.

Os navegadores sem cabeça também podem testar a forma como o utilizador interage com os componentes UI/UX de um sítio Web. Para tal, automatizam os cliques em botões, o deslocamento, as selecções de cores, os tipos de letra e as interacções com os esquemas das páginas Web. 

O teste da apresentação de uma página também inclui a identificação do tamanho predefinido de uma página Web e das coordenadas. 

Os navegadores sem cabeça podem fazer capturas de ecrã de páginas Web e guardá-las como PDFs. Além disso, também oferecem testes de execução de JavaScript e Ajax.

Alguns dos outros testes primários que um navegador sem cabeça pode processar incluem a captura do traço da linha do tempo de um site para diagnóstico de desempenho.

Raspagem da Web

A popularidade dos navegadores sem cabeça não se deve apenas ao facto de testarem aplicações Web, mas também a uma boa quantidade de scraping da Web. Permitem que os web scrapers recolham dados mesmo dos sítios de destino mais difíceis, carregando e imitando um navegador genuíno.

Esta extração anula a necessidade de ferramentas de extração HTML para extrair dados, o que se tornou um desafio devido à popularidade do JavaScript. Algumas das preocupações com a utilização destas ferramentas de extração são o carregamento assíncrono, a impressão digital do browser e o scrolling infinito.

Automatização de tarefas

No primeiro ponto acima, cobrimos a automação de tarefas usando navegadores sem cabeça relacionados ao teste de aplicativos da Web. Portanto, a única adição à automação é a capacidade de utilizar navegadores sem cabeça para automatizar a interação com o site para imitar vários navegadores em uma única máquina sem causar o uso excessivo de recursos.

Quais são os diferentes tipos de browsers sem cabeça?

Existem vários navegadores sem cabeça por aí. Como programador Web, tem de experimentar vários tipos de browsers sem cabeça para obter a melhor combinação para automatizar casos de teste e recolha de dados da Web.

Vamos descobrir quais são:

Navegador sem cabeça Google Chrome (versão 59 ou superior)

Baseado no projeto de código aberto Google Chromium, é um navegador leve e sem cabeça. Suporta JavaScript e tem uma licença BSD.

Dispõe de uma interface de linha de comandos para analisar e extrair instantaneamente os dados do sítio Web. Além disso, consome menos memória e inclui funcionalidades inovadoras, ferramentas de desenvolvimento Web fáceis de utilizar e ferramentas específicas para programadores. O Headless Chrome funciona em todas as plataformas, incluindo Windows, Mac OS X e Linux.

Os programadores Web utilizam-no frequentemente para recolher dados de sítios Web, tirar capturas de ecrã de sítios Web e criar ficheiros PDF a partir de páginas Web. O que é mais fascinante no headless chrome é o facto de também se poderem recolher dados e imagens sem carregar a GUI do browser.

Os programadores também utilizam navegadores sem cabeça para testar diferentes níveis de navegação, de modo a garantir que os utilizadores de dispositivos móveis e de secretária possam navegar facilmente.

Então, o Puppeteer e o Selenium são duas das ferramentas mais comuns que controlam o Chrome sem cabeça. Como é do seu conhecimento, o Selenium já se tornou um nome na área dos testes. Enquanto o Puppeteer, por outro lado, usa proxies para rastrear páginas, clicar em componentes e baixar dados.

HtmlUnit

O HtmlUnit é um browser sem cabeça desenvolvido em Java para automatizar a interação do website com os utilizadores. Este navegador é ideal para testar sítios Web ou obter informações a partir deles. É o mais rápido de instalar em comparação com os outros.

A HTMLUnit também pode ser utilizada para criar e testar funcionalidades de sítios Web de comércio eletrónico, como a segurança do sítio, a apresentação de formulários, a navegação, etc. Como programador, pode utilizá-lo para autenticações HTTP, desempenho de páginas HTTPS, desempenho de cabeçalhos HTTP, redireccionamento de ligações para outros sítios Web e preenchimento de formulários e processos de submissão. 

Mozilla Firefox Headless Browser (Versão 56 ou superior)

A versão sem cabeça do Firefox está disponível na versão 56 ou superior. Permite aos programadores executar várias APIs em simultâneo. Ao fazê-lo, não é necessário utilizar várias ferramentas de simulação para testes associados ao desenvolvimento Web.

Por conseguinte, pode combinar quaisquer controladores Web, como o Selenium, o Slimmer JS e o W3C WebDriver, com o Firefox sem cabeça para testes de automatização do navegador Web. O Selenium é o driver recomendado para conduzir processos de teste e automação na versão sem interface do Firefox, dentre os três drivers da Web que mencionei.

Webkit PhantomJS

O Phantom JS é um navegador sem cabeça WebKit de código aberto no qual é possível executar scripts. Ele roda nas APIs JavaScript, PHP, Objective-C, C#, Python, Java, Haskell, Ruby e R usando o 3-Clause e BSD, embora o PhantomJS não seja mantido. 

O Phantom JS fornece suporte nativo para operações de desenvolvimento Web, tais como manipulação DOM, SVG, selectores CSS, Canvas e JSON numa fase rápida. Por outro lado, gere muitas complexidades em testes e processos de automatização de navegadores Web através da comunicação por uma interface de linha de comandos.

Os programadores utilizam frequentemente o JS fantasma para capturar imagens de ecrã de páginas Web, fazer previsões comportamentais, testar a navegação a vários níveis e interagir com vários tipos de asserções.

Utilizar um browser sem cabeça para evitar ser colocado na lista negra ou proibido

Como já descobriu anteriormente, uma das utilizações práticas dos navegadores sem cabeça é a recolha de dados da Web. Esta secção irá compreender como pode evitar ser colocado na lista negra ou bloqueado enquanto faz scraping utilizando um browser sem cabeça.

Quando ferramentas como o Selenium utilizam um navegador sem cabeça, como o Google Chrome sem cabeça ou o Firefox sem cabeça, para extrair os dados, o sítio Web alvo verá que se trata de um robô a rastrear um sítio Web e não de um humano.

Por exemplo, como a maioria dos sítios Web são programados com linguagens de alto nível, como o PHP, podem detetar a taxa de cliques. Isto significa que podem saber se um utilizador clicou num botão para navegar para outra página dentro de um sítio ou se simplesmente foi para o URL sem clicar no botão, mas com uma ligação que o liga a ele.

Enquanto programador, pode codificar ferramentas como o Selenium para escrever, clicar ou percorrer qualquer sítio Web quando utiliza um navegador sem cabeça. Assim, torna-se claro para o sítio Web de destino que um ser humano está a aceder ao sítio Web e não um robô.

No entanto, pode haver desvantagens em usar o Selenium com um navegador sem cabeça. A maior preocupação seria uma velocidade lenta ao raspar as páginas da Web. No entanto, essa lentidão pode ser insignificante em comparação com outras vantagens dos navegadores sem cabeça discutidas na seção acima, "Por que usar um navegador sem cabeça?"

Por outro lado, não tem qualquer influência na velocidade com que se faz a recolha do sítio Web; é simplesmente uma questão de alternar entre páginas. De um modo geral, vale a pena experimentar a recolha de dados de um sítio Web com um navegador sem cabeça, se puder descartar os inconvenientes insignificantes.

Como utilizar proxies rotativos com browsers sem cabeça

Nesta secção, compreenderá porque é que precisa de proxies rotativos para fazer scraping com browsers sem cabeça.

Quando extrai dados de um sítio Web utilizando um servidor proxy e um browser sem cabeça, pode extrair dados anonimamente sem que o servidor do sítio Web restrinja o seu endereço IP.

Pode aceder e extrair dados de sítios Web com conteúdos com restrições geográficas utilizando um proxy rotativo. Para o conseguir, pode utilizar o pool de proxy rotativo residencial fornecido por ProxyScrape, para que possa fazer scraping com IPs de vários locais sem que o sítio Web alvo o bloqueie. Além disso, é possível extrair dados de produtos de plataformas de comércio eletrónico como a Amazon, por exemplo, com um número considerável de pedidos.

ProxyScrape A rotação de endereços IP permite-lhe executar várias sessões num sítio Web. Isto, por sua vez, ajudaria a contornar as restrições gerais de IP que bloqueiam montes de pedidos de dados.

A rotação de proxies também o ajudaria a ultrapassar as proibições que ocorrem quando tenta automatizar tarefas com browsers sem cabeça.

Conclusão

Agora que já sabe o que são browsers sem cabeça, quando e porque são utilizados, e os vários tipos. Além disso, abordámos a forma como evitam bloqueios durante a recolha de dados. Quando se utilizam proxies rotativos, isso impulsionaria ainda mais o seu processo de raspagem, uma vez que traz anonimato e inúmeros outros benefícios.

Portanto, para concluir, esperamos que implemente os mecanismos mencionados neste artigo. Tem de o fazer quando for confrontado com a recolha de dados da Web utilizando um browser sem cabeça.