{"id":26295565,"url":"https://github.com/aitorroma/cloudflare-laliga-bypass","last_synced_at":"2026-05-20T02:50:11.509Z","repository":{"id":282420208,"uuid":"948528204","full_name":"aitorroma/cloudflare-laliga-bypass","owner":"aitorroma","description":"Automatización para gestionar los bloqueos de Cloudflare durante transmisiones deportivas en España, permitiendo la continuidad de servicios web legítimos.","archived":false,"fork":false,"pushed_at":"2025-03-14T14:08:47.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T15:22:49.724Z","etag":null,"topics":["automation","businesscontinuity","bypass","cloudflare","isp","laliga","n8n","o2","python","telefonica"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aitorroma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-14T13:51:11.000Z","updated_at":"2025-03-14T14:08:51.000Z","dependencies_parsed_at":"2025-03-14T15:22:52.484Z","dependency_job_id":"1dece184-692a-466a-a2ca-0b2d852e6a86","html_url":"https://github.com/aitorroma/cloudflare-laliga-bypass","commit_stats":null,"previous_names":["aitorroma/cloudflare-laliga-bypass"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorroma%2Fcloudflare-laliga-bypass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorroma%2Fcloudflare-laliga-bypass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorroma%2Fcloudflare-laliga-bypass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitorroma%2Fcloudflare-laliga-bypass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aitorroma","download_url":"https://codeload.github.com/aitorroma/cloudflare-laliga-bypass/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243681077,"owners_count":20330155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","businesscontinuity","bypass","cloudflare","isp","laliga","n8n","o2","python","telefonica"],"created_at":"2025-03-15T04:14:25.678Z","updated_at":"2026-05-20T02:50:11.501Z","avatar_url":"https://github.com/aitorroma.png","language":"Python","funding_links":["https://ko-fi.com/J3J64AN17"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![[image-20210506104427925](https://t.me/aitorroma)](https://tva1.sinaimg.cn/large/008i3skNgy1gq8sv4q7cqj303k03kweo.jpg)\n\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/J3J64AN17)\n\n  \n  \u003cbr\u003e\n\n  \u003ca href=\"https://t.me/aitorroma\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Telegram-informational?style=for-the-badge\u0026logo=telegram\u0026logoColor=white\" alt=\"Telegram Badge\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\n# Monitor de Estado de Cloudflare para Bloqueos de LaLiga\n\nEste proyecto proporciona una automatización para gestionar los bloqueos de Cloudflare durante las transmisiones de partidos de fútbol de LaLiga. El sistema monitorea automáticamente el estado de tu sitio web y gestiona la activación/desactivación de Cloudflare según sea necesario.\n\n## Contexto\n\nEn España, los proveedores de servicios de Internet (ISPs) como Telefónica y O2 están implementando bloqueos a Cloudflare como medida para combatir la transmisión ilegal de contenido deportivo, especialmente durante los partidos de fútbol. Sin embargo, esta medida está teniendo efectos colaterales no deseados:\n\n- Afecta a sitios web legítimos de comercio electrónico\n- Impacta a webs corporativas y blogs personales\n- Interrumpe servicios que no tienen relación alguna con la piratería\n\nEsta situación ha creado la necesidad de desarrollar soluciones que permitan a los sitios web legítimos mantener su servicio activo durante los períodos de bloqueo.\n\n## Funcionamiento\n\n- **Monitoreo Continuo**: El script monitorea check.aitorroma.com para verificar si Cloudflare está activo.\n- **Detección de Bloqueos**: Cuando LaLiga implementa bloqueos durante partidos de fútbol, el sistema lo detecta automáticamente.\n- **Gestión Automática**: \n  - Desactiva automáticamente Cloudflare cuando se detectan bloqueos\n  - Reactiva Cloudflare cuando el sitio vuelve a estar disponible\n- **Notificaciones**: Utiliza webhooks para mantener informado sobre los cambios de estado\n\n## Beneficios\n\n- Minimiza el tiempo de inactividad durante las transmisiones de fútbol\n- Elimina la necesidad de gestionar manualmente los bloqueos de Cloudflare\n- Proporciona una solución automatizada para mantener el servicio disponible\n- Asegura la continuidad del servicio para sitios web legítimos\n\n## Requisitos\n\n- Python 3.x\n- uv (gestor de paquetes, recomendado)\n- Docker y Docker Compose (opcional, para ejecutar en contenedor)\n\n### Instalación de Python\n\n#### Windows\n1. Visita [Python.org](https://www.python.org/downloads/windows/)\n2. Descarga la última versión de Python 3.x (64-bit)\n3. Ejecuta el instalador\n4. **¡IMPORTANTE!** Marca la casilla \"Add Python to PATH\" durante la instalación\n5. Haz clic en \"Install Now\"\n\n#### macOS\n1. Visita [Python.org](https://www.python.org/downloads/macos/)\n2. Descarga la última versión de Python 3.x\n3. Ejecuta el instalador .pkg\n4. Sigue las instrucciones del instalador\n\n#### Linux\nLa mayoría de distribuciones Linux ya incluyen Python. Si no está instalado:\n\n**Ubuntu/Debian:**\n```bash\nsudo apt update\nsudo apt install python3 python3-pip\n```\n\n**Fedora:**\n```bash\nsudo dnf install python3 python3-pip\n```\n\n**Arch Linux:**\n```bash\nsudo pacman -S python python-pip\n```\n\n### Instalación de Docker (Opcional)\n\n#### Windows\n1. Descarga [Docker Desktop para Windows](https://www.docker.com/products/docker-desktop)\n2. Ejecuta el instalador\n3. Reinicia tu computadora cuando se te solicite\n4. Abre Docker Desktop y espera a que inicie\n\n#### macOS\n1. Descarga [Docker Desktop para Mac](https://www.docker.com/products/docker-desktop)\n2. Arrastra Docker.app a la carpeta de Aplicaciones\n3. Abre Docker desde Aplicaciones\n4. Sigue las instrucciones de configuración\n\n#### Linux\n\n**Ubuntu/Debian:**\n```bash\n# Actualizar paquetes\nsudo apt update\n\n# Instalar dependencias\nsudo apt install apt-transport-https ca-certificates curl software-properties-common\n\n# Añadir repositorio de Docker\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list \u003e /dev/null\n\n# Instalar Docker\nsudo apt update\nsudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin\n\n# Añadir usuario al grupo docker (opcional, para ejecutar sin sudo)\nsudo usermod -aG docker $USER\n```\n\n**Fedora:**\n```bash\nsudo dnf install docker docker-compose\nsudo systemctl start docker\nsudo systemctl enable docker\nsudo usermod -aG docker $USER\n```\n\n**Arch Linux:**\n```bash\nsudo pacman -S docker docker-compose\nsudo systemctl start docker\nsudo systemctl enable docker\nsudo usermod -aG docker $USER\n```\n\n## Requisitos de Implementación\n\n### Ubicación del Monitoreo\n\n- El script debe ejecutarse desde un proveedor de Internet afectado por los bloqueos (como Telefónica u O2)\n- **IMPORTANTE**: Debes usar los DNS del ISP (Telefónica: 80.58.61.250 y 80.58.61.254). Si usas DNS alternativos (Google, Cloudflare, etc.), saltarás el bloqueo y el script NO detectará cuando hay bloqueos activos\n- La web de monitoreo (check.aitorroma.com) se mantiene siempre activa con Cloudflare\n- Este diseño permite detectar de forma fiable cuando los bloqueos están activos en tu red\n\n### Configuración de n8n\n\n- El servidor de n8n NO debe estar detrás de Cloudflare\n- Esto es crucial para que pueda recibir y procesar las notificaciones incluso durante los bloqueos\n- Se recomienda hospedar n8n en un servidor con acceso directo a Internet\n\n### Diagrama de Funcionamiento\n\n```\n[Script Monitor] ---(ISP bloqueado)---\u003e [check.aitorroma.com] ---(Cloudflare siempre activo)\n       |\n       |--(Notificación)---\u003e [n8n Server] ---(Sin Cloudflare)---\u003e [Gestión de Cloudflare]\n```\n\n## Configuración\n\n1. Crea un archivo `config.ini` en el mismo directorio que el script con el siguiente contenido:\n```ini\n[settings]\nwebhook_url = TU_URL_WEBHOOK\ndomain_to_report = TU_DOMINIO\n```\n\n**Nota:** Puedes usar `config.example.ini` como plantilla.\n\n## Configuración del Workflow en n8n\n\n### Importar el Workflow\n\n1. En tu instancia de n8n, ve al menú lateral y haz clic en \"Workflows\"\n2. Haz clic en el botón \"Import from File\"\n3. Navega hasta el directorio `n8n-workflow` de este proyecto\n4. Selecciona el archivo del workflow y haz clic en \"Import\"\n\n### Configurar Credenciales de Cloudflare\n\n1. Una vez importado el workflow, haz clic en el nodo de Configuración\n2. En la pestaña de configuración del nodo, verás dos campos importantes:\n   - **Email Address**: Introduce el correo electrónico asociado a tu cuenta de Cloudflare\n   - **Global API Key**: Introduce tu Global API Key de Cloudflare\n\nPara obtener tu Global API Key:\n1. Inicia sesión en [Cloudflare](https://dash.cloudflare.com)\n2. Ve a \"Mi Perfil\" (icono de usuario en la esquina superior derecha)\n3. Navega a la sección \"API Tokens\"\n4. Desplázate hasta encontrar \"Global API Key\"\n5. Haz clic en \"Ver\" y copia la clave\n\n### Activar el Workflow\n\n1. Una vez configuradas las credenciales, haz clic en el botón \"Save\" para guardar los cambios\n2. Activa el workflow usando el switch \"Active\" en la parte superior derecha\n3. Haz clic en \"Save\" nuevamente para guardar el workflow completo\n4. Abre el nodo webhook y copia la URL de producción en config.ini\n\n## Instalación de Dependencias\n\n### Linux y macOS\n\n```bash\n# Instalar uv si no está instalado\npip install uv\n\n# Instalar dependencias\nuv pip install -r requirements.txt\n```\n\n### Windows\n\nEjecuta el archivo `build.bat` que instalará automáticamente uv si no está presente y todas las dependencias necesarias.\n\n## Ejecución\n\n### Opción 1: Docker (Recomendado)\n\nLa forma más sencilla de ejecutar el proyecto es usando Docker:\n\n```bash\n# Construir y ejecutar el contenedor\ndocker-compose up -d\n\n# Ver los logs\ndocker-compose logs -f\n\n# Detener el contenedor\ndocker-compose down\n```\n\n**Ventajas de usar Docker:**\n- No necesitas instalar Python ni dependencias\n- El contenedor se reinicia automáticamente si falla\n- Fácil de desplegar en cualquier servidor\n- Aislamiento completo del sistema host\n- **Preconfigurado con DNS de Telefónica** (80.58.61.250 y 80.58.61.254) - esencial para detectar bloqueos correctamente\n\n📖 **Para más información sobre Docker, consulta [DOCKER.md](DOCKER.md)** que incluye:\n- Configuración avanzada\n- Despliegue en servidor\n- Solución de problemas\n- Monitoreo y logs\n\n### Opción 2: Python Nativo\n\n#### Linux y macOS\n\n```bash\n# Ejecutar directamente con Python\npython cloudflare.py\n\n# O usando uv\nuv run python cloudflare.py\n```\n\n#### Windows\n\nTienes dos opciones:\n\n1. Ejecutar directamente con Python (igual que en Linux/macOS)\n2. Usar el ejecutable compilado (cloudflare.exe) que se encuentra en la carpeta `dist` después de ejecutar `build.bat`\n\n## Compilar Ejecutable (Windows)\n\n1. Ejecuta `build.bat`\n2. El ejecutable se creará en la carpeta `dist`\n\nSi recibes advertencias del antivirus, puedes:\n1. Añadir una exclusión en Windows Defender para la carpeta `dist` o el archivo `cloudflare.exe`\n2. Usar el comando alternativo que se muestra al final de la ejecución de `build.bat`\n\n## Notas\n\n- El script requiere conexión a Internet para funcionar\n- Asegúrate de tener los permisos necesarios para escribir en el directorio donde se ejecuta el script\n- En caso de problemas con el ejecutable en Windows, intenta ejecutar el script directamente con Python\n\n### Agradecimientos\n\nUn agradecimiento especial a [Oriol Rius](https://oriolrius.me) por su valiosa ayuda en la compilación para Windows en la creación del archivo cloudflare.spec.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faitorroma%2Fcloudflare-laliga-bypass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faitorroma%2Fcloudflare-laliga-bypass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faitorroma%2Fcloudflare-laliga-bypass/lists"}