CAPSOLVER
Blog
Cómo resolver Cloudflare en PHP

Cómo resolver Cloudflare en PHP

Logo of CapSolver

Adélia Cruz

Neural Network Developer

26-Nov-2024

¿Puede Cloudflare detectar tu scraper PHP? ¿Hay alguna manera de solucionar sus poderosas defensas sin ser bloqueado? Cloudflare, conocido por sus fuertes medidas de seguridad, utiliza herramientas como Turnstile CAPTCHA y Bot Management para filtrar bots y actividades sospechosas. Estas protecciones presentan desafíos significativos para los scrapers PHP, ya que se basan en gran medida en la detección de patrones y el bloqueo de cualquier cosa que parezca automatizada.

Profundicemos en los métodos que pueden aumentar tus posibilidades de raspar sitios protegidos por Cloudflare usando PHP, teniendo en cuenta que ninguna solución está garantizada contra este sistema de seguridad en constante evolución.

¿Qué es Cloudflare?

Cloudflare es una red de entrega de contenido (CDN) y seguridad ampliamente utilizada, diseñada para proteger los sitios web de diversas amenazas en línea, incluidos bots, spammers y ataques de denegación de servicio (DoS). Actúa como intermediario entre el servidor de un sitio web y sus visitantes, filtrando las solicitudes según una amplia gama de criterios para garantizar que solo el tráfico legítimo llegue al servidor. La robusta red y las herramientas de seguridad de Cloudflare ayudan a garantizar que los sitios web se carguen más rápido y permanezcan protegidos contra interacciones no deseadas o dañinas.

¿Por qué Cloudflare es un desafío para los scrapers PHP?

Cloudflare se ha convertido en un desafío común para los scrapers PHP debido a sus sofisticados sistemas de detección de bots. Cuando detecta una actividad potencialmente automatizada o sospechosa, Cloudflare puede implementar varias medidas de seguridad para verificar la legitimidad del visitante. Estas medidas incluyen:

Desafíos de JavaScript

Cloudflare a menudo presenta desafíos basados en JavaScript (también conocidos como modo de "Ataque" de JavaScript), que requieren que los usuarios ejecuten JavaScript antes de acceder al sitio. Esto es particularmente desafiante para los scrapers PHP, ya que PHP no maneja nativamente la ejecución de JavaScript. Las soluciones a menudo implican la integración con navegadores headless u otras herramientas que pueden simular la ejecución de JavaScript.

Turnstile CAPTCHA y otros CAPTCHAs

Los CAPTCHAs son otra capa de seguridad que Cloudflare emplea para verificar la interacción humana. Turnstile CAPTCHA, en particular, se utiliza para evitar que los bots automatizados accedan a páginas protegidas. Resolver estos CAPTCHAs requiere servicios de resolución de CAPTCHA o intervención manual, ya que PHP por sí solo carece de la capacidad de interpretar y responder a los CAPTCHAs.

Gestión de Bots

El sistema avanzado de gestión de bots de Cloudflare utiliza el aprendizaje automático para detectar patrones y comportamientos típicos de los bots. Al rastrear detalles como la frecuencia de las solicitudes, la coherencia del agente de usuario y la reputación de la IP, Cloudflare puede identificar y bloquear bots con un alto grado de precisión. Esto hace que sea especialmente difícil para los scrapers que envían solicitudes de alta frecuencia o repetitivas.

Bloqueo basado en IP y limitación de velocidad

Cloudflare monitorea las direcciones IP y aplica la limitación de velocidad para detectar y restringir el tráfico sospechoso. Para los scrapers, esto significa que es probable que las solicitudes repetidas de la misma dirección IP se marquen y bloqueen. Evitar esto requiere una rotación frecuente de IP a través de proxies o servicios de proxy rotativos, lo que puede agregar complejidad y costo.

Gestión de sesiones y cookies

Para verificar aún más a los usuarios, Cloudflare rastrea las sesiones y las cookies. Los scrapers PHP deben administrar las cookies y las sesiones de manera consistente para mantener una sola sesión de usuario en todas las solicitudes, lo que puede ser técnicamente difícil de implementar sin capacidades avanzadas de manejo de cookies.

En resumen, las defensas multicapa de Cloudflare están diseñadas específicamente para detectar y prevenir el tráfico automatizado, lo que hace que los esfuerzos de raspado de PHP sean particularmente desafiantes.

Cómo solucionar Cloudflare en PHP

Cloudflare plantea desafíos significativos para el raspado web debido a sus sólidas medidas de detección de bots y seguridad, como desafíos de JavaScript, CAPTCHAs y sistemas avanzados de gestión de bots. Al intentar raspar sitios web protegidos por Cloudflare usando PHP, los desarrolladores a menudo enfrentan obstáculos como la ejecución de JavaScript, el manejo de sesiones y la resolución de CAPTCHA.

Intento 1: Usar automatización con Selenium Stealth

Un enfoque popular para solucionar las defensas de Cloudflare es usar navegadores headless y herramientas de automatización, como Selenium Stealth. Selenium Stealth es una capa de mejora para Selenium WebDriver, diseñada para reducir la detección simulando un comportamiento de navegación más humano.

- Ejemplo de código: Selenium Stealth en PHP

php Copy
// Cargar bibliotecas necesarias
require_once 'vendor/autoload.php';

use Facebook\WebDriver\Remote\RemoteWebDriver;
use SapiStudio\SeleniumStealth\SeleniumStealth;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Chrome\ChromeOptions;

// URL del servidor Selenium
$serverUrl = 'http://localhost:4444';

// Definir las capacidades y opciones del navegador
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments(['--headless', '--disable-gpu', '--no-sandbox']); // Modo Headless para automatización

$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY_W3C, $chromeOptions);

// Inicializar WebDriver
$driver = RemoteWebDriver::create($serverUrl, $capabilities);

// Mejorar WebDriver con Selenium Stealth
$stealthDriver = (new SeleniumStealth($driver))->usePhpWebriverClient()->makeStealth();

// Maximizar la ventana del navegador
$stealthDriver->manage()->window()->maximize();

// Navegar a la URL de destino
$url = 'https://www.scrapingcourse.com/cloudflare-challenge';
$stealthDriver->get($url);

// Recuperar e imprimir el origen de la página
$html = $stealthDriver->getPageSource();
echo $html;

// Cerrar la sesión del navegador
$stealthDriver->quit();

Desafíos del uso de Selenium Stealth

Si bien Selenium Stealth es un enfoque prometedor, tiene desventajas significativas:

  1. Alto riesgo de detección: Los mecanismos de detección avanzados de Cloudflare aún pueden marcar los navegadores basados en Selenium como bots, especialmente con un uso intensivo.
  2. Problemas de manejo de elementos: La identificación e interacción con los elementos de la página para resolver los desafíos puede ser poco confiable.
  3. Sobrecarga de rendimiento: Ejecutar varios navegadores headless simultáneamente consume una gran cantidad de recursos del sistema, lo que dificulta el escalamiento.

Aunque Selenium Stealth puede resolver defensas simples, no es la mejor solución para manejar las sofisticadas medidas de seguridad de Cloudflare.

Intento 2: Usar la API de CapSolver

CapSolver ofrece un enfoque robusto basado en API para resolver los desafíos de Cloudflare. En lugar de depender de la automatización intensiva de recursos, aprovecha la poderosa tecnología de resolución de CAPTCHA para manejar desafíos de Cloudflare como Turnstile CAPTCHA y desafíos basados en JavaScript.

Beneficios del uso de CapSolver

  1. Eficiencia: Resuelve CAPTCHAs y otros desafíos rápidamente sin intervención manual.
  2. Escalabilidad: Adecuado para operaciones a gran escala, ya que evita la sobrecarga de ejecutar múltiples navegadores.
  3. Simplicidad: Proporciona una integración sencilla con PHP y otros lenguajes de programación.
  4. Fiabilidad: Maneja incluso los desafíos más complejos con alta precisión.

Ejemplo de código: CapSolver en PHP

El siguiente código demuestra cómo usar CapSolver para resolver desafíos de Cloudflare e iniciar sesión en un sitio web protegido.

php Copy
require 'vendor/autoload.php';

use GuzzleHttp\Client;

define("CAPSOLVER_API_KEY", "CAI-API_KEY");
define("PAGE_URL", "https://dash.cloudflare.com/login");
define("SITE_KEY", "0x4AAAAAAAJel0iaAR3mgkjp");

function callCapsolver() {
    $client = new Client();
    $data = [
        "clientKey" => CAPSOLVER_API_KEY,
        "task" => [
            "type" => "AntiTurnstileTaskProxyLess",
            "websiteURL" => PAGE_URL,
            "websiteKey" => SITE_KEY,
            "metadata" => ["action" => "login"]
        ]
    ];

    try {
        // Crear tarea
        $response = $client->post('https://api.capsolver.com/createTask', [
            'json' => $data
        ]);
        $resp = json_decode($response->getBody(), true);
        $taskId = $resp['taskId'] ?? null;

        if (!$taskId) {
            echo "No taskId found: " . $response->getBody() . PHP_EOL;
            return null;
        }

        echo "Created taskId: $taskId" . PHP_EOL;

        // Consultar el resultado de la tarea
        while (true) {
            sleep(1); // Esperar 1 segundo
            $resultResponse = $client->post('https://api.capsolver.com/getTaskResult', [
                'json' => [
                    "clientKey" => CAPSOLVER_API_KEY,
                    "taskId" => $taskId
                ]
            ]);
            $result = json_decode($resultResponse->getBody(), true);
            $status = $result['status'] ?? '';

            if ($status === "ready") {
                echo "Successfully solved: " . $resultResponse->getBody() . PHP_EOL;
                return $result['solution'] ?? null;
            }

            if ($status === "failed" || isset($result['errorId'])) {
                echo "Failed: " . $resultResponse->getBody() . PHP_EOL;
                return null;
            }
        }
    } catch (Exception $e) {
        echo "Error: " . $e->getMessage() . PHP_EOL;
        return null;
    }
}

function login($token, $userAgent) {
    $client = new Client();
    $headers = [
        'Cookie' => "cf_clearance=$token",
        'Host' => 'dash.cloudflare.com',
        'User-Agent' => $userAgent
    ];

    $data = [
        "cf_challenge_response" => $token,
        "email" => "[email protected]",
        "password" => "example_password"
    ];

    try {
        $response = $client->post('https://dash.cloudflare.com/api/v4/login', [
            'headers' => $headers,
            'form_params' => $data
        ]);

        echo "Login Response Status Code: " . $response->getStatusCode() . PHP_EOL;
        if ($response->getStatusCode() !== 403) {
            echo "Login Response: " . $response->getBody() . PHP_EOL;
        }
    } catch (Exception $e) {
        echo "Login Error: " . $e->getMessage() . PHP_EOL;
    }
}

function run() {
    $solution = callCapsolver();
    $token = $solution['token'] ?? null;

    if ($token) {
        login($token, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36");
    }
}

run();

¿Por qué elegir CapSolver sobre Selenium Stealth?

  1. Eficiencia de recursos: No es necesario ejecutar un navegador headless, lo que reduce los costos del servidor y el consumo de memoria.
  2. Facilidad de implementación: Integración API simple sin configuraciones complejas del navegador.
  3. Tasa de éxito: Mayor confiabilidad para evitar las defensas avanzadas de Cloudflare.
  4. Escalable para empresas: Ideal para escenarios que requieren grandes volúmenes de resolución de CAPTCHA.

Para obtener más detalles sobre CapSolver y sus capacidades, visite la documentación de CapSolver.

Reclama tu Código de bonificación para las mejores soluciones de captcha; CapSolver: WEBS. Después de canjearlo, obtendrás un bono adicional del 5% después de cada recarga, Ilimitado

Reflexiones finales

Las defensas de Cloudflare están en constante evolución, lo que dificulta cada vez más que los scrapers PHP las resuelvan. Si bien las herramientas de automatización como Selenium Stealth pueden manejar escenarios básicos, CapSolver proporciona una solución más robusta, eficiente y escalable para abordar desafíos avanzados. Con la API de CapSolver, puedes garantizar resultados más rápidos y confiables sin los dolores de cabeza de administrar la automatización compleja del navegador.

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Reconocimiento de imágenes con IA: Conceptos básicos y cómo resolverlo
Reconocimiento de Imágenes con IA: Conceptos Básicos y Cómo Resolverlo

Dile con adiós a las dificultades de los CAPTCHA de imagen – ¡El motor de visión de CapSolver las resuelve de forma rápida, inteligente y sin problemas!

Logo of CapSolver

Aloísio Vítor

25-Apr-2025

Los Mejores User Agents para Web Scraping y Cómo Usarlos
Los mejores agentes de usuario para web scraping y cómo usarlos

Una guía sobre los mejores agentes de usuario para web scraping y su uso efectivo para evitar la detección. Explore la importancia de los agentes de usuario, sus tipos y cómo implementarlos para un web scraping fluido e indetectable.

Logo of CapSolver

Aloísio Vítor

07-Mar-2025

Huellas dactilares TLS de Cloudflare: Qué son y cómo solucionarlas
Huellas dactilares TLS de Cloudflare: Qué son y cómo solucionarlas

Aprenda sobre el uso de la huella digital TLS de Cloudflare para la seguridad, cómo detecta y bloquea bots, y explore métodos efectivos para solucionarlo para tareas de raspado web y navegación automatizada.

Cloudflare
Logo of CapSolver

Aloísio Vítor

28-Feb-2025

¿Por qué me siguen pidiendo que verifique que no soy un robot?
¿Por qué sigo teniendo que verificar que no soy un robot?

Aprenda por qué Google le solicita que verifique que no es un robot y explore soluciones como el uso de la API de CapSolver para resolver los desafíos de CAPTCHA de manera eficiente.

Logo of CapSolver

Aloísio Vítor

27-Feb-2025

Cómo extraer datos de un sitio web protegido por Cloudflare
Cómo extraer datos de un sitio web protegido por Cloudflare

En esta guía, exploraremos técnicas éticas y efectivas para extraer datos de sitios web protegidos por Cloudflare.

Cloudflare
Logo of CapSolver

Aloísio Vítor

20-Feb-2025

¿Por qué las páginas web piensan que soy un bot? Y cómo solucionarlo
¿Por qué las páginas web piensan que soy un bot? Y cómo solucionarlo

Entiende por qué los sitios web te marcan como bot y cómo evitar la detección. Los desencadenantes clave incluyen los desafíos CAPTCHA, las IP sospechosas y el comportamiento inusual del navegador.

Logo of CapSolver

Aloísio Vítor

20-Feb-2025