5 Posibles Bloqueos en tu Scraping
Cuando estás haciendo web scraping de un sitio pequeño lo más probable es que no tengas ningún problema de bloqueo. Pero esto cambia completamente cuando pretendemos extraer datos de un sitio grande como puede ser Google, Amazon, Instagram… en estos casos tus peticiones corren el riesgo de ser bloqueadas sino sigue una serie de prácticas.
En este artículo os vamos a mostrar varias técnicas recomendadas para evitar que tu scraping sea bloqueado. Aunque la idea fundamental que se reducen todos estos consejos es lograr tener un patrón lo más natural posible para evitar sitios con mecanismos avanzados anti scraping nos bloqueen las peticiones.
IP
Cuando estamos scrapeando una web, esta recibe una llamada desde una IP, si esta es siempre la misma es un claro patrón de peticiones automatizadas y por tanto de bloqueo por parte del sitio web.
Un patrón humano se entiende que no realizaría desde una misma IP más de 100 peticiones cada hora, por lo tanto si superas el umbral de lo considerado natural es muy probable que te bloqueen el resto de peticiones.
SOLUCIÓN: emplear un servicio de proxies rotativos como Scraping.Link o cualquier otro servicio. Y así estamos ocultando nuestra verdadera IP y estamos usando IPs diferentes en cada petición. Esto nos servirá en la mayoría de sitios.
User Agent y Cabeceras HTTP
En una petición HTTP/HTTPS uno de los parámetros que enviamos en nuestra cabecera es el user agent que indica que tipo de navegador estamos utilizando.
Puedes ver tu cadena de User Agent de tu navegador actual entrando en:
http://www.whatsmyuseragent.com/
Con el User Agent ocurre algo similar que con las IPs, si siempre estamos enviando el mismo, es muy probable que nos detecten que se tratan de peticiones automatizadas y por tanto nos bloqueen.
Además del User Agent hay otros parámetros en la cabecera de una petición, como puede ser Referer que indica la URL de referencia desde la que has llegado. Es posible que mecanismos anti scraping más avanzados tomen en cuenta más parámetros a parte del User Agent para encontrar patrones de peticiones automatizadas.
SOLUCIÓN: emplear una lista de User Agents actual para que vayamos empleando de manera rotativa en cada una de nuestras peticiones. Otro opción interesante es utilizar el UserAgent de un bot importante como puede ser Googlebot o Ahrefsbot (aunque esta técnica igualmente no siempre resulta, ya que hay formas de verificar que efectivamente es el bot ya que estos bots tan populares incluyen mecanismos de verificación por rangos de IPs). En Python hay una librería que ya se encarga de simular diferentes navegadores en cada petición se llama fake-useragents.
Contenido dinámico
Cada vez es más común que una web cargue de manera contenido en la web a través de JS y todo este nuevo contenido no puede ser extraido del HTML puro que devuelve, sino tenemos que esperar al igual que hace un navegador a que este contenido sea renderizado.
SOLUCIÓN: emplear navegadores en nuestra código como puede ser Selenium (en Python) o Pupperteer (en NodeJS). Una manera sencilla de solucionar esto es usando nuestro servicio de Web Scraping en Scraping.Link
Captcha
Cada vez es más frecuenta que sitios webs ponga medidas anti bots. Para evitar sobrecargar la web. Cuando detecta un patrón de peticiones automatizadas muestran un Captcha para poder continuar navegando por la web.
SOLUCIÓN: evitar tener un patrón reconocible para tus peticiones automatizadas.
Servicios Anti-Scraping
Estos servicios son muy sofisticados, ya que mezclas varios de los posibles bloqueos anteriores, y además utilizan patrones de navegación y comportamiento para detectar bots (o nosotros haciendo scraping).
Es normal encontrar este tipo de servicios en webs de portales de anuncios, portales inmobiliarios.
Algunos de los servicios más conocidos son:
- Bot Manager de Akamai
- DataDome.co
- Netacea
- ShieldSquare
Y hay muchas más… Este tipo de soluciones suelen estar en empresas grandes y donde la información que ponen en su web es su mayor activo y quieren protegerlo.
SOLUCIÓN: usar IPs residenciales, utilizar un chromeless que emule la visita como si fuese de un navegador, rotes los User Agents y muy importante hagas un comportamiento lo más parecido a un humano, si logras esto es muy probable que tengas éxito en tu scraping.
Desde Scraping.link te ofrecemos este servicio de manera transparente y sin necsidad de complicarte y contratar varios servicios como IPs residenciales, VPS con chromeless, con tan sólo pasarnos la URL que deseas scrapear, nosotros haremos el trabajo y te devolveremos el HTML completo.