Fazendo web scraping em larga escala
(incolumitas.com)<p>- Se você fosse criar um serviço que executa milhões de buscas no Google, precisaria de uma alternativa que não fosse bloqueada<br />
- O mais fácil é usar proxies pagos, mas costuma sair bem caro <br />
→ Por isso, este é um texto interessante em que o autor explica em detalhes o que tentou<br />
<br />
- No começo, ele usou AWS Lambda + Puppeteer <br />
→ A AWS oferece 16 regiões no mundo todo, e ao executar o Lambda 3 vezes um novo IP é atribuído <br />
→ Ao executar 1000 Lambdas ao mesmo tempo, acaba usando cerca de 250 IPs públicos<br />
→ 16 regiões * 250 dá 4000 endereços IP, e isso já basta para fazer buscas no Google na casa dos milhões por semana <br />
→ Ele também testou na GCP, e o curioso é que o Google bloqueia de forma mais agressiva os IPs da própria nuvem (em comparação com a AWS)<br />
→ Isso foi entre 2019 e 2020, então pode ter mudado <br />
<br />
- Esse método pode ser usado para fazer scraping em Google/Bing/Amazon etc., mas tem limitações<br />
→ Não funciona se o alvo usar empresas anti-bot como DataDome, Akamai ou Imperva <br />
→ Elas identificam se é bot por meio de fingerprinting do navegador de formas extremamente variadas<br />
→ Google Picasso, fingerprinting de Font/TLS/WebGL..<br />
→ Na prática, a maioria dos serviços de scraping em larga escala usa nuvem + contêineres Docker, então é fácil identificá-los<br />
<br />
- Infraestrutura de scraping escalável e difícil de detectar <br />
→ Duas regras para fazer scraping com sucesso <br />
1. Não falsificar a configuração do navegador <br />
2. O mais importante é falsificar a configuração do navegador apenas “quando ninguém puder perceber”<br />
→ Para isso, a conclusão é que o melhor é simplesmente “usar dispositivos reais”<br />
⇨ Comprar 500 dispositivos Android baratos de vários fabricantes e contratar planos de dados econômicos<br />
⇨ Distribuí-los por várias cidades (perto de antenas)<br />
⇨ Usar open source como DeviceFarmer/stf para controlar os dispositivos ao mesmo tempo <br />
⇨ Instalar um SO leve como Android Go e ativar o modo avião a cada 5 minutos para obter continuamente novos endereços IP<br />
⇨ "4G carrier grade NAT": o NAT de operadora 4G foi criado para evitar o esgotamento de endereços IPv4, então como centenas de milhares compartilham o mesmo IP, bloquear se torna inviável<br />
→ Há muitos inconvenientes, como ter de comprar 500 dispositivos Android, precisar de um local para instalá-los e fazer manutenção do hardware <br />
<br />
- Melhoria: emular Android <br />
→ Em vez de comprar dispositivos Android, e se usasse Android-X8, Bluestacks, Android Studio Emulator etc.?<br />
→ O Proxidize permite criar proxies móveis 4G<br />
→ Instalar 50 dongles 4G em um único servidor<br />
→ Emular de 50 a 100 dispositivos Android em cada servidor <br />
→ Instalar essas estações em 5 cidades <br />
→ Gerenciar essas estações com comandos bem amarrados </p>
12 comentários