7 puntos por GN⁺ 2024-04-28 | 1 comentarios | Compartir por WhatsApp
  • 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 = 4000 IP 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 4000 IP públicas
    • Aunque eran IP compartidas de datacenter, alcanzaban para recolectar cientos de miles de Google SERP por semana
  • 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 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 deviceorientation y devicemotion
    • 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 adb que 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

 
GN⁺ 2024-04-28
Opiniones de Hacker News
  • Como abogado que trabaja en el campo del web scraping, siempre me da risa ver hilos como este. Casi todas las empresas o sus afiliadas que hoy vemos como monopolios tecnológicos usaron scraping mientras crecían, y ahora esas mismas empresas prohíben el scraping de datos por parte de startups y competidores
    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
    • Facebook y la información de identidad son parecidos. Si mal no recuerdo, Facebook creció al principio aprovechando la libreta de direcciones de Google, pero si alguien intenta almacenar a largo plazo los datos del grafo social de Facebook y usarlos fuera de su jardín cerrado, lo bloquean agresivamente
      Al final, impiden que otros usen los mismos métodos que ellos usaron para crecer
    • La ética del web scraping en realidad parece muy simple. Basta con algo como: “tú puedes responder a mi solicitud HTTP como quieras, y yo puedo interpretar esa respuesta como quiera”
      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
  • Antes fui web scraper profesional y todavía sigo de cerca cómo va la industria. Hoy en día no gano dinero haciendo web scraping en sí, sino vendiéndoles servicios a quienes hacen web scraping
    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
    • Desde hace tiempo pienso que los proxies residenciales son indispensables para el scraping o para operar grandes redes de bots, pero nunca los he usado personalmente, así que no he podido confirmar cómo se usan a escala real
      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
    • Si hay alguna conferencia que sea lo más cercana posible al scraping en general, me gustaría que me la recomendaran. Hasta donde sé, casi no hay conferencias dedicadas al scraping ni una comunidad fuerte, y quiero aprender y mejorar
    • Llevo años escribiendo scrapers en Upwork, pero me cansé del trabajo por proyecto y quisiera trabajar en un SaaS de scraping o iniciar uno yo mismo. Me gustaría recibir consejos
    • Al principio no sabía que esto fuera tan fácil, así que publiqué el código como open source. Evité GitHub porque parecía el tipo de lugar donde Akamai mandaría un DMCA rápidamente, así que lo subí a Gitee, una especie de GitHub chino, aprovechando la diferencia de jurisdicción
      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
    • Me da curiosidad cómo haces para seguir al día con la industria
  • Tengo sentimientos encontrados con este problema. La tecnología anti-bot se está convirtiendo en un gran dolor de cabeza en la investigación de seguridad, y como trabajo en este campo, tengo que enfrentarme a esos sistemas
    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
    • De acuerdo. Se ha vuelto demasiado fácil evitar la detección porque los actores de amenazas pueden abrir una cuenta gratuita de Cloudflare y esconder un sitio de phishing en un dominio creado hace dos horas detrás de un escudo respaldado por una empresa de 20 mil millones de dólares
      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
    • Al final, creo que terminaremos llegando a algún tipo de mecanismo de micropagos para resolver este problema
  • La expresión “inadaptados” y “gente normal” es rara. La razón por la que hacen esto es que resulta mucho más interesante y divertido que hacer por vigésima vez un sitio web corporativo aburrido en React
    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
    • Todo ese párrafo era una broma. Por eso tiene un pequeño guiño al final
  • La tecnología anti-bot también parece una amenaza de seguridad y una amenaza a la privacidad. Si usas una máquina virtual, algunos sitios bloquean el acceso, hacen escaneo de puertos o recopilan distintos tipos de huellas digitales
    • Un enfoque mejor sería una prueba algorítmica que haga usar CPU a los nuevos visitantes
      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
  • También se discutió en su momento: Scrape like the big boys - https://news.ycombinator.com/item?id=29117022 - noviembre de 2021, 189 comentarios
  • ¿“Todos los sitios web pueden acceder a los datos de rotación y velocidad de Android sin pedir permiso”? Eso sí está completamente fuera de lugar
  • Interesante. Ahora mismo estoy construyendo un proyecto que necesita scraping de baja frecuencia
    Estaba pensando cómo manejar los casos en que me rechacen, y tal vez un dispositivo Android barato podría cubrir ese hueco