29 puntos por xguru 2021-11-29 | 12 comentarios | Compartir por WhatsApp
  • Si fueras a crear un servicio que ejecuta millones de búsquedas en Google, necesitas una alternativa que no termine bloqueada

  • Lo más fácil es usar proxies de pago, pero suelen ser bastante caros

→ Por eso el autor explica en detalle varias cosas que probó, en un artículo interesante

  • Al principio usó AWS Lambda + Puppeteer

→ AWS ofrece 16 regiones en todo el mundo, y al ejecutar Lambda 3 veces se asigna una IP nueva

→ Si ejecutas 1000 lambdas al mismo tiempo, terminas usando unas 250 IP públicas

→ 16 regiones * 250 da 4000 direcciones IP, y eso alcanza para hacer búsquedas en Google a escala de millones por semana

→ 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)

→ Esto fue entre 2019 y 2020, así que puede haber cambiado

  • Este método sirve para hacer scraping de Google/Bing/Amazon, pero tiene límites

→ No aplica si usan empresas anti-bot como DataDome, Akamai o Imperva

→ Detectan si eres un bot mediante browser fingerprinting con técnicas muy variadas

→ Google Picasso, fingerprinting de fuentes/TLS/WebGL..

→ De hecho, la mayoría de los servicios de scraping a gran escala usan nube + contenedores Docker, así que son fáciles de identificar

  • Infraestructura de scraping escalable y difícil de detectar

→ Dos reglas para hacer scraping con éxito

  1. No falsificar la configuración del navegador

  2. Lo más importante: falsificar la configuración del navegador solo "si nadie se va a dar cuenta"

→ La conclusión es que para eso lo mejor es simplemente "usar dispositivos reales"

⇨ Comprar 500 dispositivos Android baratos de varios fabricantes y contratar planes de datos económicos

⇨ Distribuirlos en varias ciudades (cerca de antenas)

⇨ Usar open source como DeviceFarmer/stf para controlar varios dispositivos al mismo tiempo

⇨ Instalar un SO liviano como Android Go y hacer que entren en modo avión cada 5 minutos para seguir obteniendo nuevas direcciones IP

⇨ "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

→ Hay muchas molestias: hay que comprar 500 dispositivos Android, tener un lugar donde instalarlos y encargarse del mantenimiento del hardware

  • Mejora: emular Android

→ En vez de comprar dispositivos Android, ¿qué tal usar Android-X8, Bluestacks o Android Studio Emulator?

→ Proxidize permite crear proxies móviles 4G

→ Instalar 50 dongles 4G en un solo servidor

→ Emular entre 50 y 100 dispositivos Android en cada servidor

→ Instalar estas estaciones en 5 ciudades

→ Administrar estas estaciones con comandos sólidos

12 comentarios

 
xguru 2021-12-06

Los proxies, los servicios de scraping y el software antibots, entre otros, están bien resumidos en el artículo de arriba.

 
eajrezz 2021-12-06

¡Qué hack tan genial!

 
joone 2021-12-04

https://www.diffbot.com/products/crawl/

También existe un servicio que hace crawling y scraping de páginas web. Los datos extraídos se guardan en formato JSON, excluyendo la información innecesaria.

 
benjamin 2021-11-29

Se me cae la mandíbula...

 
xguru 2021-11-29

Pero cambiando totalmente de tema...

También existen sitios como https://serpapi.com/ que venden Google Search como API.

Pero aquí también venden la búsqueda de Naver como API jaja

https://serpapi.com/naver-search-api

El sorprendente(?) precio es de $250 por 30 mil búsquedas al mes

 
v08zbv8fvlkjasdflkj 2021-11-29

¿Es sorprendente porque es demasiado caro? No me doy una idea.

 
xguru 2021-11-29

Sí, es bastante caro. En comparación con usar proxies de pago, por ejemplo.

Pero al ser una API, es cómodo porque no hay que preocuparse por bloqueos.

 
hentol 2021-11-29

En Corea se me ocurren esos planes de telefonía móvil económica de 0 won que, dentro de lo que cabe, sí ofrecen cierta cantidad de datos...

Pero como es difícil hacer muchas altas en masa, supongo que esto también sería complicado.

 
xguru 2021-11-29

En el caso de Google Fi, se pueden tener hasta 4 SIM de datos adicionales por línea, así que algo como eso también podría ser una opción.

 
nallwhy 2021-11-29

Hace tiempo, cuando hice scraping de algo de naver,

en AWS Lambda no funcionaba, pero sí en GCP Functions.

Recordaba que pensé que sería porque el rango de IP estaba abierto, pero parece que no era eso.

 
honore 2021-11-29

Yo ya lo estaba haciendo con el método 1, así que me puse a ver qué otros métodos había... la verdad, nunca se me habría ocurrido.

 
xguru 2021-11-29

De hecho, creo que la opción 1 de Lambda+Puppeteer también podría funcionar bien si se hace de esa manera.

Pero, comparado con el método de Proxidize del final, probablemente haya una diferencia de costos según la escala del scraping.

Mientras más volumen se necesite, Proxidize seguramente será más estable, pero para hacerlo de forma simple, la opción 1 tampoco parece mala.

El https://proxidize.com/ que presentaron al final está interesante.

Es una solución de hardware+software que te permite crear y administrar directamente proxies móviles 4G.

La versión de 5 dongles cuesta $399. Viendo que Corea también aparece en la lista de países para usuarios, parece que sí se puede usar.

No llega a ser CGNAT, pero también existen soluciones como Scrapoxy, que administran por completo un pool de proxies de software.