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

¿Es legal el web scraping? La guía completa para 2025
¿Es legal el scraping web? La guía completa para 2025

Desafíos Legales del Web Scraping en 2025: Regulaciones Clave, Cumplimiento y Estudios de Caso

Logo of CapSolver

Aloísio Vítor

24-Jan-2025

Los 5 mejores solucionadores de CAPTCHA para el reconocimiento de reCAPTCHA en 2025
Los 5 mejores solucionadores de CAPTCHA para el reconocimiento de reCAPTCHA en 2025

Explora los 5 mejores solucionadores de CAPTCHA de 2025, incluyendo CapSolver impulsado por IA para un rápido reconocimiento de reCAPTCHA. Compara velocidad, precios y precisión aquí.

Logo of CapSolver

Rajinder Singh

23-Jan-2025

¿Qué es el reconocimiento reCAPTCHA? Una guía para principiantes
¿Qué es el Reconocimiento reCAPTCHA? Una guía para principiantes

¿Problemas con las cuadrículas de imágenes de reCAPTCHA? Descubre cómo el reconocimiento con IA de Capsolver resuelve los desafíos de "Seleccionar todo" al instante. Aprende la integración de API, extensiones de navegador y consejos profesionales para automatizar la resolución de CAPTCHA con una precisión superior al 95%.

Logo of CapSolver

Rajinder Singh

23-Jan-2025

¿Qué es una clave de sitio reCAPTCHA y cómo encontrarla?
¿Qué es una clave de sitio reCAPTCHA y cómo encontrarla?

Aprenda a encontrar una clave de sitio reCAPTCHA manualmente o con herramientas como Capsolver. Solucione problemas comunes y automatice la resolución de CAPTCHA para desarrolladores y raspado web.

Logo of CapSolver

Emma Foster

23-Jan-2025

Cómo eludir el desafío de Cloudflare durante el web scraping en 2025
Cómo sortear el desafío de Cloudflare durante el web scraping en 2025

Aprenda a omitir el desafío de Cloudflare y Turnstile en 2025 para un raspado web sin problemas. Descubra la integración de Capsolver, consejos sobre huellas dactilares TLS y soluciones para errores comunes para evitar el infierno del CAPTCHA. Ahorre tiempo y escale su extracción de datos.

Logo of CapSolver

Emma Foster

23-Jan-2025

Cómo resolver CAPTCHAs de imagen en el web scraping: Una guía completa para 2025
Cómo resolver CAPTCHAs de imagen en el web scraping: Una guía completa para 2025

Aprende a resolver CAPTCHAs de imagen eficazmente con CapSolver en 2025

Logo of CapSolver

Aloísio Vítor

23-Jan-2025