Si quieres hacer web scraping como las grandes empresas (2021)
(incolumitas.com)- Solo con AWS Lambda y Headless Chrome se podían recolectar cientos de miles de Google SERP por semana, pero frente a sitios fuertemente protegidos una arquitectura de bots basada en la nube chocaba fácilmente con sus límites
- Reinvocando Lambda y usando varias regiones, se podían usar al mismo tiempo unos
16 * 250 = 4000IP públicas con 16 regiones, lo que bastaba para objetivos con protección laxa - Proveedores antibot como DataDome, Akamai e Imperva rastrean inconsistencias de configuración del navegador, rastros de automatización e información de huella digital, y el verdadero desafío se parece más a reducir los falsos positivos que a la detección en sí
- Como arquitectura menos detectable, se propone usar dispositivos Android reales e IP móviles en lugar de Docker o servidores en la nube; las IP 4G/5G/LTE son compartidas por muchos usuarios legítimos en grandes ciudades, por lo que es difícil bloquearlas
- Una granja de dispositivos reales implica comprar equipos, alquilar espacio por ciudad, mantenimiento en sitio y fallas de hardware, y los emuladores de Android siguen teniendo riesgo de detección de emulación
Arquitectura de scraping masivo creada con AWS Lambda
- Cuando operaba un servicio de scraping en el pasado, llegó a recolectar hasta cientos de miles de Google SERP por semana, pero no usaba proveedores de proxies como Brightdata, Packetstream u Oxylabs
- Consideraba difícil confiar en otros clientes que compartían el mismo ancho de banda de proxies
- Veía como aceptable el scraping no-DoS de información pública, pero marcaba distancia frente a ataques web como fraude publicitario, spam en redes sociales, inyección SQL automatizada o XSS
- El costo de los servicios de proxy también era una carga
- La configuración real consistía en ejecutar una función de AWS Lambda con Headless Chrome, usando puppeteer-extra y chrome-aws-lambda para correr el navegador durante 300 segundos
- Como Google no bloquea de forma agresiva los bots contra su propio buscador y aplica principalmente limitación de velocidad por IP, considera que para Google SERP incluso podría haber bastado
curl - En Lambda, obtenía una nueva IP pública después de 3 invocaciones de la función, y al invocar 1000 funciones al mismo tiempo llegaba a unas 250 IP públicas
- Calcula que usando 16 regiones podía usar simultáneamente unas
4000IP públicas - Aunque eran IP compartidas de datacenter, alcanzaban para recolectar cientos de miles de Google SERP por semana
- Calcula que usando 16 regiones podía usar simultáneamente unas
- También probó Google Cloud Platform, pero Google bloqueaba con más fuerza el tráfico desde su propia infraestructura en la nube que el tráfico desde AWS
- Esta experiencia corresponde a 2019 y 2020, y la situación podría haber cambiado después
Por qué los bots en la nube terminan bloqueados
- Una arquitectura basada en Lambda puede funcionar con objetivos que permiten cierto nivel de scraping, como Google, Bing o Amazon, pero no encaja bien con sitios que aplican protección fuerte
- Proveedores antibot como DataDome, Akamai e Imperva buscan huellas digitales del navegador, inconsistencias de configuración y rastros distintos a los de un navegador operado por un humano
- Ejemplos de técnicas de detección ampliamente difundidas
- Browser Red Pills
- Browser Based Port Scanning
- Google Picasso
- Font Fingerprinting
- TLS Fingerprinting
- WebGL Fingerprinting
- Detección de IP real vía WebRTC
- Behavioral Classification
- Consulta de la API del giroscopio
- Recolección de huellas por headers HTTP, CSS feature query y fuentes sin JavaScript
- Hay muchísimas formas de detectar bots, y casi cualquier arquitectura de bots es vulnerable a algún nivel de detección
- Para quien crea bots, esto es más difícil que para quien detecta, y el mayor reto de las empresas antibot suele parecerse más a reducir los falsos positivos que a atrapar la mayoría de los bots
Una estructura económica fácil de detectar
- Los desarrolladores de bots que buscan hacer scraping masivo suelen meter el navegador dentro de contenedores Docker y orquestarlos con Docker Swarm o Kubernetes
- Estos bots suelen estar alojados en proveedores de nube como Hetzner, AWS o DigitalOcean
- Esta estructura difiere mucho del entorno de un usuario humano
- No resulta natural que un usuario legítimo navegue Instagram desde un contenedor Docker dentro de un VPS de Hetzner
- Propone dos reglas para un scraping exitoso
- La segunda regla más importante: no mientas sobre la configuración del navegador
- La regla más importante: miente sobre la configuración del navegador solo cuando no te vayan a descubrir
Granja de dispositivos Android reales
- Como hacer ingeniería inversa de bibliotecas ofuscadas de fingerprinting antibot es difícil, propone usar dispositivos reales para scraping
- La arquitectura asumida consiste en comprar 500 dispositivos Android baratos y mezclar equipos de unas 5 marcas para diversificar la huella digital
- Los dispositivos Android económicos empiezan desde 58 dólares por unidad
- Cree que al comprar 100 de una vez se puede conseguir un descuento importante
- A cada dispositivo se le asigna un plan de datos barato y se controla con DeviceFarmer/stf
- La idea es desplegar 100 dispositivos en cada una de 5 ciudades importantes como London, Paris, Boston, Frankfurt y Los Angeles, alquilando espacios de almacenamiento baratos cerca de antenas celulares móviles
- En los dispositivos se instalaría una versión ligera de Android Go, eliminando elementos innecesarios y dejándolos conectados a la corriente
- Si cada 5 minutos se activa y desactiva el modo avión, se puede obtener una nueva IP a través de 4G Carrier Grade NAT
- Como las direcciones IP móviles son compartidas por hasta cientos de miles de usuarios legítimos en grandes ciudades, en la práctica es difícil bloquearlas
- Como ejemplo, considera que Instagram no va a bloquear a 200 mil personas en LA por culpa de algunos usuarios de spam
- Cita un documento de Ofcom según el cual, si se bloquea una dirección IPv4 en CGN, eso puede afectar a toda la base de suscriptores
- Considera que en IPv6 el espacio de direcciones es tan amplio que la mayoría de las empresas antibot asignan poca o ninguna reputación a las direcciones IPv6
Puntos de detección y carga operativa de una arquitectura con dispositivos reales
- Si los dispositivos reales se dejan todo el día sobre el piso, permanecerán sin rotación ni movimiento, por lo que habría que falsificar a nivel de kernel los eventos JavaScript
deviceorientationydevicemotion- Los sitios web pueden acceder a los datos de rotación y aceleración de Android sin pedir permiso
- Salvo por ese problema, considera que no está claro cómo un sistema de detección de bots podría bloquear esta arquitectura
- La carga operativa no es menor
- Hay que comprar 500 dispositivos Android
- Hay que alquilar espacio de almacenamiento en ciudades importantes, con su costo correspondiente
- Se necesita gente en 5 ciudades para resolver problemas en la granja de dispositivos
- Hay que lidiar con hardware y pueden surgir problemas de forma continua
- Considera que esta arquitectura se convierte en un proyecto grande, cuyo mantenimiento puede costar miles de dólares
La alternativa del emulador de Android
- Considera mejor usar emuladores de Android en vez de dispositivos Android reales
- Puede reducir costos, pero las empresas antibot podrían detectar el entorno emulado
- Hay varias formas posibles de detección
- Un red pill basado en navegador puede revelar que el navegador está corriendo en un entorno emulado
- Con escaneo de puertos basado en navegador se pueden encontrar puertos o servicios como
adbque solo corren en dispositivos Android emulados - Google puede establecer un ID de publicidad en todos los dispositivos móviles, y si ese ID no existe o siempre es el mismo, podría ser una señal sospechosa
- Mediante Social Media Login Detection se puede comprobar si hay sesión iniciada en cuentas de Gmail o YouTube, y la ausencia de una cuenta de Google iniciada en Android podría verse como sospechosa
- Además de eso, puede haber muchas otras técnicas para detectar dispositivos Android emulados
- Es muy probable que los emuladores de Android sean imperfectos, y esa imperfección puede quedar expuesta a través de la enorme superficie de APIs JavaScript del navegador móvil
- Aun así, prefiere el enfoque de emulación y propone una configuración con unas pocas máquinas servidor potentes conectadas a dongles 4G
- proxidize.com ofrece proxies móviles 4G, pero como los proxies son detectables por sí mismos, dice que preferiría usar directamente dongles 4G desde emuladores de Android
- La arquitectura final toma la forma de estaciones de scraping por región
- En una ubicación geográfica se instala 1 servidor de scraping potente conectado a 50 dongles 4G
- En cada servidor se ejecutan entre 50 y 100 dispositivos Android emulados
- Estas estaciones se distribuyen en 5 ciudades importantes
- Un servidor simple de comando y control orquesta las 5 estaciones de scraping
1 comentarios
Opiniones de Hacker News
En la mayoría de los casos, esos datos tampoco son realmente “sus” datos en un sentido jurídicamente reconocible. Por eso, la ética del web scraping y las cuestiones legales relacionadas no son tan simples. Un artículo que escribí sobre esto el otoño pasado también llamó la atención aquí: https://news.ycombinator.com/item?id=37264676
Al final, impiden que otros usen los mismos métodos que ellos usaron para crecer
Da la impresión de que la comunicación humana siempre ha funcionado así desde que existe. En cambio, las cuestiones legales parecen una tela improvisada para proteger a los negocios establecidos mediante la amenaza de la violencia estatal; no tienen nada de nuevo y pertenecen a una categoría lamentable pero predecible. Más ampliamente, también resulta muy forzado intentar empaquetar esto como un asunto de propiedad intelectual y colgarlo del tema de proteger a artistas y creadores
Hay mucho SaaS de web scraping y servicios relacionados, además de decenas de proveedores de proxies residenciales. La mayoría de los mecanismos anti-bot evolucionan tan rápido que incluso dentro de un rol tradicional de ingeniería de software se puede ganar bastante bien dedicándose solo a técnicas para evadirlos. Por la velocidad de estos cambios, es más estable trabajar en una empresa de web scraping que tener el scraping como profesión por cuenta propia. A los scrapers se les paga por proyecto, lo cual es inestable a largo plazo; el scraping avanzado requiere inversión operativa como proxies residenciales y renta de servidores; y los trabajos baratos pagan muy poco. Con solo ver que Brightdata organiza conferencias de web scraping, se nota lo rentable que es vender servicios de scraping a gran escala
Me pregunto si para estos fines suelen usarse dispositivos IoT inseguros o hardware de consumo infectado con malware. No parece rentable ni viable conseguir IP residenciales cooperando con los ISP, así que en el caso de los servicios de proxies residenciales, solo me imagino métodos bastante discretos
No tenía experiencia en este campo, pero comparando lo que presumían las empresas no fue difícil, y además tenía un propósito práctico: automatizar apuestas deportivas. Mi trabajo real también estaba más o menos cerca de eso, y me ayudó a aprender a programar rápido a finales de mis veintes. Pero casi de inmediato empezaron a llover solicitudes de operadores chinos de bots para sneakers y de gente que escribía un inglés raro, como si no fuera su idioma nativo. Bajé el código no por amenazas legales, sino porque no quería hacer soporte al cliente ni trabajar para otros, y me costaba creer que alguien aceptara la mayoría de las propuestas, que eran del tipo “si tú trabajas, compartimos las ganancias”. Como internet es para siempre, quizá todavía ande por ahí parte del código que imitaba Cyberfed-Akamai 0.8~2.3. Si el código que subí en menos de tres años después de aprender a programar a mediados de mis veintes funcionaba, entonces las empresas de ciberseguridad que cobran caro por productos así deberían sentir vergüenza. No estudié matemáticas desde segundo de preparatoria, y por el ADHD no puedo ver videos ni leer por mucho tiempo, así que básicamente aprendí copiando de servicios parecidos a GitHub hasta que algo funcionó. Sospecho que en esta industria deben venderse muchas soluciones de humo
Los actores de amenazas usan servicios como Cloudflare para bloquear el acceso a cargas maliciosas. Para clientes que intentan encontrar y detectar suplantación de marca o phishing de credenciales, esto es un gran problema, pero Cloudflare no ayuda en nada y simplemente no le importa
Curiosamente, casi no vemos phishing detrás de Akamai. Nosotros también trabajamos en este ámbito, así que tenemos interés en poder seguir detectando estas amenazas
Es divertido porque hay que resolver problemas del mundo real y encontrar nuevas formas de hacer cosas. El desarrollo de exploits es igual. Estas personas no son inadaptados; son personas normales haciendo algo que les apasiona. La idea de que “la gente que hace algo que a mí no me gusta son inadaptados” es la que de verdad resulta completamente rara
El procedimiento es claro, no tiene riesgos de privacidad ni trucos raros, y aunque falle, falla de una forma en que al menos una persona puede verlo y reportarlo. Es mejor que parecer una falla desconocida
Estaba pensando cómo manejar los casos en que me rechacen, y tal vez un dispositivo Android barato podría cubrir ese hueco