Neste vídeo, você aprenderá como:
- Fazer com que seu crawler seja visto como um ‘usuário real’ e não seja bloqueado
- Selecionar as ferramentas certas para automação de navegador
- Selenium vs. Puppeteer, prós e contras
- Configurar Selenium e Puppeteer para trabalhar com proxy
- Manipulação de proxy para um crawler automatizado
- Configurar seu Gerenciador de Proxy com Selenium e Puppeteer
Como os sites sabem quando você está usando um "bot" ou "crawler"?
Principalmente devido a cookies, o agente do usuário do navegador e seu IP.
Ao obter ou postar informações em um site, o site visitado salva cookies no seu navegador.
O site reconhece um navegador real verificando o endereço IP e lendo os cabeçalhos de solicitação que incluem informações sobre o agente do usuário.
A falta de cookies ou do agente do usuário correto pode fazer com que o site bloqueie você de recuperar informações.
Ambos podem ser programados para garantir que isso não aconteça.
Seu IP, no entanto, é a única coisa que não pode ser codificada, pois faz parte da infraestrutura da rede.
Vamos acessar ‘whoer.net’ e verificar quais informações meu computador está enviando pela web.
Nosso navegador suporta JavaScript e, a partir disso, o site de destino pode coletar o navegador, sistema operacional, cores da tela, resolução da tela, versão do flash e suporte a Java.
WebRTC é usado para comunicação em tempo real de navegador para navegador e recupera meu IP, porta e protocolo para comparar com os dados da rede.
Além disso, o horário do seu computador pode ser coletado e comparado com o fuso horário do IP.
Também podemos encontrar o *cabeçalho de solicitação* enviado ao site de destino no console do navegador selecionando F12 e indo para a aba Rede no Chrome, ou selecionando ctrl+R.
Clicando no documento, encontraremos as informações do cabeçalho e a solicitação que enviamos para whoer.net
O cabeçalho da solicitação contém os cookies e o agente do usuário, que é o tipo e a versão do navegador.
Sites de destino que comparam as informações do meu PC e verificam sessões com cookies exigem que, ao enviarmos solicitações por meio de uma API, forneçamos um novo cookie a cada algumas solicitações.
Isso, assim como o mesmo agente do usuário exato e, às vezes, até mesmo o accept-language.
Isso ocorre porque um agente do usuário quebrado ou a falta de um agente do usuário pode, por si só, acionar uma resposta de erro pelo site de destino.
Podemos gerenciar operações complexas de scraping usando ferramentas de automação como Selenium ou Puppeteer, que realmente abrem um navegador real, ou até mesmo usar um navegador headless de código aberto como o chromium.
Navegadores são uma ferramenta que podemos usar se precisarmos executar JS ou não quisermos escrever cadeias de solicitações complexas nós mesmos.
A desvantagem é que executar um navegador é mais lento e consome mais RAM do que usar um script personalizado.
A automação em cima de um navegador real tornará o scraping mais simples, pois isso significa que não precisamos nos preocupar em coletar um banco de dados de cookies para rotacionar ou corrigir agentes do usuário.
Isso aumentará minha taxa de sucesso com sites de destino que estão verificando isso.
Agora você pode estar pensando, por que um navegador headless?
Principalmente para executar o scraping automaticamente.
Um navegador headless não possui Flash Player e gerenciamento de direitos digitais que podem enviar mais informações sobre meu PC e podemos facilmente aumentar minha taxa de sucesso ao não tê-los juntos.
Com qual ferramenta de automação devemos trabalhar?
Bem, isso depende das suas habilidades técnicas e do site que você está mirando.
Por exemplo, vamos comparar Puppeteer, uma ferramenta de automação fácil de usar, com Selenium, que requer mais expertise técnica.
Puppeteer, desenvolvido pelo Google, é fácil de instalar com um comando: npm install puppeteer. Ele suporta apenas o navegador headless Chromium e é baseado em node.
Muito rapidamente, conseguimos começar a trabalhar com Puppeteer e testar uma demonstração rápida.
Por outro lado, Puppeteer não suporta automação entre navegadores e Selenium é a ferramenta mais flexível em termos de automação e funcionalidade disponível.
Selenium suporta muitos navegadores, sistemas operacionais e linguagens de programação como Java, C#, Ruby, Python e JavaScript.
Selenium funcionará na maioria dos sites de destino e pode ser automatizado para qualquer cenário razoável.
Por outro lado, instalar e usar Selenium requer algumas habilidades técnicas em termos de compreensão de tecnologias web e APIs.
Com Selenium WebDriver, você pode fazer upload ou download de arquivos, trabalhar com pop-ups e superar barreiras de diálogo.
Para resumir, tanto Puppeteer quanto Selenium suportam aplicativos web de desktop, páginas responsivas e JavaScript.
No entanto, Puppeteer funciona apenas com Chrome e Chromium, enquanto Selenium suporta todos os navegadores comuns, como Chrome, Firefox, Explorer e outros navegadores headless.
Gostaríamos de mencionar que Puppeteer e Selenium NÃO suportam aplicativos móveis nativos diretamente.
No entanto, Appium, desenvolvido pela JS Foundation, ou Selendroid, desenvolvido pela eBay Software Foundation, permitirão que você automatize aplicativos móveis nativos.
Tanto Selendroid quanto Appium requerem Selenium e o conhecimento de como trabalhar com a API Selenium e WebDriver.