Hacer web scraping a gran escala
(incolumitas.com)<p>- Si fueras a crear un servicio que ejecuta millones de búsquedas en Google, necesitas una alternativa que no termine bloqueada<br />
- Lo más fácil es usar proxies de pago, pero suelen ser bastante caros <br />
→ Por eso el autor explica en detalle varias cosas que probó, en un artículo interesante<br />
<br />
- Al principio usó AWS Lambda + Puppeteer <br />
→ AWS ofrece 16 regiones en todo el mundo, y al ejecutar Lambda 3 veces se asigna una IP nueva <br />
→ Si ejecutas 1000 lambdas al mismo tiempo, terminas usando unas 250 IP públicas<br />
→ 16 regiones * 250 da 4000 direcciones IP, y eso alcanza para hacer búsquedas en Google a escala de millones por semana <br />
→ También lo probó en GCP, y lo curioso es que Google bloquea más agresivamente las IP de su propia nube (comparado con AWS)<br />
→ Esto fue entre 2019 y 2020, así que puede haber cambiado <br />
<br />
- Este método sirve para hacer scraping de Google/Bing/Amazon, pero tiene límites<br />
→ No aplica si usan empresas anti-bot como DataDome, Akamai o Imperva <br />
→ Detectan si eres un bot mediante browser fingerprinting con técnicas muy variadas<br />
→ Google Picasso, fingerprinting de fuentes/TLS/WebGL..<br />
→ De hecho, la mayoría de los servicios de scraping a gran escala usan nube + contenedores Docker, así que son fáciles de identificar<br />
<br />
- Infraestructura de scraping escalable y difícil de detectar <br />
→ Dos reglas para hacer scraping con éxito <br />
1. No falsificar la configuración del navegador <br />
2. Lo más importante: falsificar la configuración del navegador solo "si nadie se va a dar cuenta"<br />
→ La conclusión es que para eso lo mejor es simplemente "usar dispositivos reales"<br />
⇨ Comprar 500 dispositivos Android baratos de varios fabricantes y contratar planes de datos económicos<br />
⇨ Distribuirlos en varias ciudades (cerca de antenas)<br />
⇨ Usar open source como DeviceFarmer/stf para controlar varios dispositivos al mismo tiempo <br />
⇨ Instalar un SO liviano como Android Go y hacer que entren en modo avión cada 5 minutos para seguir obteniendo nuevas direcciones IP<br />
⇨ "4G carrier grade NAT": el NAT a nivel operador en 4G fue diseñado para evitar el agotamiento de direcciones IPv4, y como una IP la comparten cientos de miles de usuarios, bloquearla es inviable<br />
→ Hay muchas molestias: hay que comprar 500 dispositivos Android, tener un lugar donde instalarlos y encargarse del mantenimiento del hardware <br />
<br />
- Mejora: emular Android <br />
→ En vez de comprar dispositivos Android, ¿qué tal usar Android-X8, Bluestacks o Android Studio Emulator?<br />
→ Proxidize permite crear proxies móviles 4G<br />
→ Instalar 50 dongles 4G en un solo servidor<br />
→ Emular entre 50 y 100 dispositivos Android en cada servidor <br />
→ Instalar estas estaciones en 5 ciudades <br />
→ Administrar estas estaciones con comandos sólidos </p>
12 comentarios