Fazendo web scraping em larga escala
(incolumitas.com)-
Se você fosse criar um serviço que executa milhões de buscas no Google, precisaria de uma alternativa que não fosse bloqueada
-
O mais fácil é usar proxies pagos, mas costuma sair bem caro
→ Por isso, este é um texto interessante em que o autor explica em detalhes o que tentou
- No começo, ele usou AWS Lambda + Puppeteer
→ A AWS oferece 16 regiões no mundo todo, e ao executar o Lambda 3 vezes um novo IP é atribuído
→ Ao executar 1000 Lambdas ao mesmo tempo, acaba usando cerca de 250 IPs públicos
→ 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
→ 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)
→ Isso foi entre 2019 e 2020, então pode ter mudado
- Esse método pode ser usado para fazer scraping em Google/Bing/Amazon etc., mas tem limitações
→ Não funciona se o alvo usar empresas anti-bot como DataDome, Akamai ou Imperva
→ Elas identificam se é bot por meio de fingerprinting do navegador de formas extremamente variadas
→ Google Picasso, fingerprinting de Font/TLS/WebGL..
→ Na prática, a maioria dos serviços de scraping em larga escala usa nuvem + contêineres Docker, então é fácil identificá-los
- Infraestrutura de scraping escalável e difícil de detectar
→ Duas regras para fazer scraping com sucesso
-
Não falsificar a configuração do navegador
-
O mais importante é falsificar a configuração do navegador apenas “quando ninguém puder perceber”
→ Para isso, a conclusão é que o melhor é simplesmente “usar dispositivos reais”
⇨ Comprar 500 dispositivos Android baratos de vários fabricantes e contratar planos de dados econômicos
⇨ Distribuí-los por várias cidades (perto de antenas)
⇨ Usar open source como DeviceFarmer/stf para controlar os dispositivos ao mesmo tempo
⇨ Instalar um SO leve como Android Go e ativar o modo avião a cada 5 minutos para obter continuamente novos endereços IP
⇨ "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
→ Há muitos inconvenientes, como ter de comprar 500 dispositivos Android, precisar de um local para instalá-los e fazer manutenção do hardware
- Melhoria: emular Android
→ Em vez de comprar dispositivos Android, e se usasse Android-X8, Bluestacks, Android Studio Emulator etc.?
→ O Proxidize permite criar proxies móveis 4G
→ Instalar 50 dongles 4G em um único servidor
→ Emular de 50 a 100 dispositivos Android em cada servidor
→ Instalar essas estações em 5 cidades
→ Gerenciar essas estações com comandos bem amarrados
12 comentários
Proxies, serviços de scraping, software antibot etc. estão bem organizados no texto acima.
Que hack incrível!
https://www.diffbot.com/products/crawl/
Também existe um serviço que faz crawling e scraping de páginas da web. Os dados extraídos são armazenados em JSON, excluindo as informações desnecessárias.
De cair o queixo...
Falando de algo totalmente diferente..
Também existem lugares como o https://serpapi.com/ que vendem a API da busca do Google.
Mas aqui eles também transformam a busca do Naver em API e vendem junto rs
https://serpapi.com/naver-search-api
O surpreendente? preço de $250 por 30 mil buscas por mês
É tão caro assim a ponto de surpreender? Não consigo ter uma noção.
Sim, é extremamente caro. Em comparação com coisas como usar proxies pagos.
Mas, por ser uma API, é prático e não há preocupação com bloqueio.
Pensando no contexto do mercado coreano, vêm à mente alguns planos de operadoras virtuais gratuitos, com uma certa franquia de dados incluída...
Mas, como é difícil fazer muitas adesões em massa, isso também parece complicado.
No caso do Google Fi, dá para ter até 4 SIMs de dados adicionais em uma única linha, então isso também parece ser uma opção.
Lembro que, quando fiz scraping de algo da naver no passado,
não funcionava no AWS lambda, mas funcionava no GCP functions.
Achei que fosse porque a faixa de IP era aberta, mas pelo visto não é isso.
Eu já estava fazendo pela forma nº 1, então fui ver que outros métodos existiam... nem tinha passado pela minha cabeça.
Na verdade, o Lambda+Puppeteer da opção 1 também parece que funcionaria bem desse jeito,
mas, em comparação com o método do Proxidize no final, provavelmente haverá diferença de custo dependendo da escala do scraping.
Quanto maior a necessidade de volume, mais estável o Proxidize tende a ser, mas, para fazer algo de forma simples, a opção 1 também não parece ruim.
No fim, esse https://proxidize.com/ que foi apresentado é interessante.
É uma solução de hardware + software que permite criar e gerenciar diretamente proxies móveis 4G.
A versão com 5 dongles custa $399. Pelo fato de a Coreia do Sul aparecer na lista de países dos usuários, parece que dá para usar, talvez?
Não chega a ser CGNAT, mas também existem soluções como o Scrapoxy, que gerenciam um pool completo de proxies de software.