Evitar la restricción de acceso de Cloudflare (Cloudflare’s anti-bot page) con el módulo cloudflare-scrape de Python

En este HowTo explico como evitar la restricción de accesos de Cloudflare (Cloudflare’s anti-bot page), para así poder obtener información de servidores que usen dicha protección.

Cloudflare y DDoS

Para entender porqué se origina esta restricción de acceso, primero debemos conocer tres conceptos: Cloudflare, DDoS y Anti-Bot.

  • Cloudflare es un servicio de proxy inverso que proporciona protección DDoS. Está diseñado especialmente para aplicaciones web (HTTP y HTTPS), aunque también aporta protección para otros servicios como pueden ser FTP, SSH, etc …
  • DDoS es un ataque por denegación de servicio y su objetivo es inhabilitar un servidor. Básicamente lo que hace es saturar el ancho de banda o agotar los recursos de la máquina, impidiendo que pueda responder a más peticiones.
  • Anti-Bot, permite detectar ataques, denegando accesos que no sean humanos (bots).

Reproducción del problema

Vamos a reproducir el problema realizando una solicitud a un servidor con protección Cloudflare. Para ello utilizamos el módulo requests de Python.

Y lo que obtenemos es el siguiente resultado.

El módulo cfscrape de Python

Para que el servidor no nos trate como un BOT, vamos a utilizar el módulo cloudflare-scrape de Python en su versión 2.1.1.

Otra opción es instalar el módulo de Python cloudscraper, pero personalmente prefiero el primero, ya que su único requerimiento de dependencias es tener el módulo requests instalado, por lo que evitamos problemas si estamos corriendo una versión inferior de Python.

Modo de Uso

Tan sólo tenemos que importar el módulo y llamar al método create_scraper(). El resto funciona igual que el modo requests, por lo que cualquier petición que hagamos, evitará la protección anti Bots de Cloudflare.

Para poder tratar su contenido sin necesidad de realizar otra petición con cada ejecución, podemos guardarlo en un fichero.

Si el fichero contiene HiperTexto (HTML), con el fin de conseguir la información, podemos filtrar su contenido utilizando el módulo de Python Beautiful Soup. Para obtener una documentación completa de este módulo podéis seguir el siguiente enlace.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.