Cómo resolver reCAPTCHA con Puppeteer en PHP para web scraping
Cómo resolver reCAPTCHA con Puppeteer en PHP para la extracción de datos web
Aloísio Vítor
Image Processing Expert
28-Aug-2024
¡Has chocado contra un muro con reCAPTCHA mientras raspas datos? ¡Yo también he estado ahí!
Esos desafíos de CAPTCHA pueden convertir una tarea de raspado simple en un obstáculo importante. Pero no te preocupes, tengo una solución que te ayudará a superar esas barreras con facilidad.
En este blog, te guiaré a través del uso de Puppeteer, una poderosa biblioteca de Node.js, para abordar los desafíos de reCAPTCHA. Luego, integraremos esto con PHP para hacer tus tareas de raspado web más fluidas y eficientes. ¿Listo para abordar reCAPTCHA y obtener tus datos sin problemas? ¡Vamos a entrar!
¿Qué es reCAPTCHA al raspar la web?
Para darte algo de contexto, reCAPTCHA es un sistema diseñado para proteger los sitios web del abuso automatizado. Pide a los usuarios que completen tareas que son fáciles para los humanos pero desafiantes para los bots, como identificar objetos en imágenes o marcar una casilla. Si bien estos desafíos son excelentes para la seguridad, pueden ser un verdadero dolor de cabeza para el raspado web. Estos son los tipos básicos que puedes encontrar:
reCAPTCHA v2: Esta versión es conocida por la casilla "No soy un robot" y los desafíos basados en imágenes. Los usuarios pueden necesitar hacer clic en imágenes o completar acciones específicas para demostrar que son humanos. Es eficaz para distinguir entre usuarios reales y bots.
reCAPTCHA v3: Esta versión opera en segundo plano. En lugar de requerir interacción del usuario, analiza el comportamiento del usuario en todo el sitio y asigna una puntuación de riesgo. Esta puntuación ayuda a los sitios web a determinar si deben otorgar o bloquear el acceso en función de la probabilidad de que el usuario sea un bot.
reCAPTCHA Enterprise: Para empresas con requisitos de seguridad más exigentes, reCAPTCHA Enterprise ofrece protección avanzada contra amenazas sofisticadas. Incluye funciones como análisis de riesgos mejorado, puntuación personalizable y escalabilidad mejorada, lo que lo hace adecuado para organizaciones que manejan información confidencial u operaciones críticas.
¿Te cuesta completar el molesto captcha una y otra vez?
¡Descubre la resolución automática de captcha sin problemas con la tecnología Auto Web Unblock de Capsolver impulsada por IA!
Reclama tu Código de Bono 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!
Comprender estas versiones nos ayudará a navegar los desafíos de reCAPTCHA de manera efectiva. Profundicemos en cómo podemos usar Puppeteer y CapSolver para manejar estos desafíos y optimizar nuestros esfuerzos de raspado web.
Cómo CapSolver puede ayudar a resolver reCAPTCHA
CapSolver es una solución robusta para manejar desafíos de CAPTCHA, incluido reCAPTCHA. A continuación, se muestra cómo puedes integrar CapSolver en tu flujo de trabajo para simplificar la resolución de CAPTCHA:
Recuperar la clave del sitio
Busca en los registros de solicitudes del navegador una solicitud como /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf. El parámetro k= es la clave del sitio que necesitas.
Si proporcionas una clave incorrecta, recibirás un mensaje de error como:
Copy
¡Error al resolver! respuesta: {"errorId":1,"errorCode":"ERROR_INVALID_TASK_DATA","errorDescription":"Clave de sitio no válida","taskId":"1cd1e687-96dd-4f14-b8ef-18b5d144d9b8","status":"failed"}
Si utiliza la versión incorrecta de reCAPTCHA (V2 o V3), o si hay una discrepancia entre el tipo de sitio de destino y el tipo de solicitud de API, es posible que vea:
Copy
¡Resolver fallado! respuesta: {"errorId":1,"errorCode":"ERROR_CAPTCHA_SOLVE_FAILED","errorDescription":"Error al resolver el captcha: 1001","taskId":"da450cbc-ff9d-439d-908a-77e7eb8852dd","status":"failed"}
Configure su entorno
Instale los paquetes necesarios:
bashCopy
npm install axios puppeteer-core
Escriba el código de integración
phpCopy
<?php
require_once 'vendor/autoload.php';
use Nesk\Puphpeteer\Puppeteer;
use Nesk\Rialto\Data\JsFunction;
use GuzzleHttp\Client;
$puppeteer = new Puppeteer;
$browser = $puppeteer->launch();
// TODO: configure su configuración
$api_key = "SU_CLAVE_API"; // su clave API de CapSolver
$site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"; // clave del sitio de su sitio de destino
$site_url = "https://www.google.com/recaptcha/api2/demo"; // URL de la página de su sitio de destino
function capsolver()
{
global $api_key, $site_key, $site_url;
$client = new Client();
$payload = [
'clientKey' => $api_key,
'task' => [
'type' => 'ReCaptchaV2TaskProxyLess',
'websiteKey' => $site_key,
'websiteURL' => $site_url,
]
];
try {
$response = $client->post("https://api.capsolver.com/createTask", [
'json' => $payload
]);
$data = json_decode($response->getBody(), true);
$task_id = $data['taskId'] ?? null;
if (!$task_id) {
echo "Error al crear la tarea: " . json_encode($data) . PHP_EOL;
return null;
}
echo "Obtuvo taskId: " . $task_id . PHP_EOL;
while (true) {
sleep(1);
$getResultPayload = [
'clientKey' => $api_key,
'taskId' => $task_id
];
$resp = $client->post("https://api.capsolver.com/getTaskResult", [
Ya sea que estés trabajando con reCAPTCHA v2, v3 o Enterprise, integrar CapSolver con Puppeteer puede simplificar tu flujo de trabajo y mejorar la eficiencia de tu raspado. Si te encuentras con algún problema o necesitas más ayuda, tanto CapSolver como Puppeteer ofrecen documentación y soporte completos para ayudarte a superar cualquier desafío.
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.