CAPSOLVER
Blog
Cómo usar node-fetch para Web Scraping

Cómo usar node-fetch para Web Scraping

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

27-Sep-2024

¿Qué es node-fetch?

node-fetch es una librería JavaScript ligera que lleva la API window.fetch a Node.js. Se utiliza a menudo para realizar solicitudes HTTP desde un entorno Node.js, proporcionando una forma moderna y flexible de manejar operaciones de red de forma asíncrona.

Características:

  • Basada en promesas: Utiliza promesas de JavaScript para gestionar operaciones asíncronas de forma sencilla.
  • Compatibilidad con Node.js: Diseñada específicamente para entornos Node.js.
  • Compatibilidad con streams: Admite streams, lo que la hace muy adecuada para manejar grandes cantidades de datos.
  • Pequeña y eficiente: Diseño minimalista, centrado en el rendimiento y la compatibilidad con las características modernas de JavaScript.

Requisitos previos

Antes de usar node-fetch, asegúrate de tener:

Instalación

Para usar node-fetch, necesitas instalarlo usando npm o yarn:

bash Copy
npm install node-fetch

o

bash Copy
yarn add node-fetch

Ejemplo básico: Realizar una solicitud GET

Aquí te mostramos cómo realizar una solicitud GET simple usando node-fetch:

javascript Copy
const fetch = require('node-fetch');

fetch('https://httpbin.org/get')
  .then(response => response.json())
  .then(data => {
    console.log('Cuerpo de la respuesta:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Ejemplo de web scraping: Obtener datos JSON de una API

Vamos a obtener datos de una API y registrar los resultados:

javascript Copy
const fetch = require('node-fetch');

fetch('https://jsonplaceholder.typicode.com/posts')
  .then(response => response.json())
  .then(posts => {
    posts.forEach(post => {
      console.log(`${post.title} — ${post.body}`);
    });
  })
  .catch(error => {
    console.error('Error:', error);
  });

Manejo de captchas con CapSolver y node-fetch

En esta sección, integraremos CapSolver con node-fetch para manejar captchas. CapSolver proporciona APIs para resolver captchas como ReCaptcha V3, permitiendo la automatización de tareas que requieren la resolución de dichos captchas.

Ejemplo: Resolver ReCaptcha V3 con CapSolver y node-fetch

Primero, instala node-fetch y CapSolver:

bash Copy
npm install node-fetch
npm install capsolver

Ahora, aquí te mostramos cómo resolver un ReCaptcha V3 y usar la solución en tu solicitud:

javascript Copy
const fetch = require('node-fetch');
const CAPSOLVER_KEY = 'YourKey';
const PAGE_URL = 'https://antcpt.com/score_detector';
const PAGE_KEY = '6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf';
const PAGE_ACTION = 'homepage';

async function createTask(url, key, pageAction) {
  try {
    const apiUrl = 'https://api.capsolver.com/createTask';
    const payload = {
      clientKey: CAPSOLVER_KEY,
      task: {
        type: 'ReCaptchaV3TaskProxyLess',
        websiteURL: url,
        websiteKey: key,
        pageAction: pageAction
      }
    };
    
    const response = await fetch(apiUrl, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    });
    
    const data = await response.json();
    return data.taskId;

  } catch (error) {
    console.error('Error creando tarea CAPTCHA:', error);
    throw error;
  }
}

async function getTaskResult(taskId) {
  try {
    const apiUrl = 'https://api.capsolver.com/getTaskResult';
    const payload = {
      clientKey: CAPSOLVER_KEY,
      taskId: taskId,
    };

    let result;
    do {
      const response = await fetch(apiUrl, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(payload)
      });

      result = await response.json();
      if (result.status === 'ready') {
        return result.solution;
      }

      await new Promise(resolve => setTimeout(resolve, 5000)); // esperar 5 segundos
    } while (true);

  } catch (error) {
    console.error('Error obteniendo el resultado CAPTCHA:', error);
    throw error;
  }
}

async function main() {
  console.log('Creando tarea CAPTCHA...');
  const taskId = await createTask(PAGE_URL, PAGE_KEY, PAGE_ACTION);
  console.log(`ID de tarea: ${taskId}`);

  console.log('Obteniendo el resultado CAPTCHA...');
  const solution = await getTaskResult(taskId);
  const token = solution.gRecaptchaResponse;
  console.log(`Solución de token: ${token}`);

  const res = await fetch('https://antcpt.com/score_detector/verify.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ 'g-recaptcha-response': token })
  });

  const response = await res.json();
  console.log(`Puntuación: ${response.score}`);
}

main().catch(err => {
  console.error(err);
});

Manejo de proxies con node-fetch

Para enrutar tus solicitudes a través de un proxy con node-fetch, necesitarás un agente proxy como https-proxy-agent. Aquí te mostramos cómo implementarlo:

bash Copy
npm install https-proxy-agent

Ejemplo con un proxy:

javascript Copy
const fetch = require('node-fetch');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyAgent = new HttpsProxyAgent('http://username:password@proxyserver:8080');

fetch('https://httpbin.org/ip', { agent: proxyAgent })
  .then(response => response.json())
  .then(data => {
    console.log('Cuerpo de la respuesta:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Manejo de cookies con node-fetch

Para el manejo de cookies en node-fetch, puedes usar una librería como fetch-cookie. Aquí te mostramos cómo usarla:

bash Copy
npm install fetch-cookie

Ejemplo:

javascript Copy
const fetch = require('node-fetch');
const fetchCookie = require('fetch-cookie');
const cookieFetch = fetchCookie(fetch);

cookieFetch('https://httpbin.org/cookies/set?name=value')
  .then(response => response.json())
  .then(data => {
    console.log('Cookies:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Uso avanzado: Encabezados personalizados y solicitudes POST

Puedes personalizar los encabezados y realizar solicitudes POST con node-fetch:

javascript Copy
const fetch = require('node-fetch');

const headers = {
  'User-Agent': 'Mozilla/5.0 (compatible)',
  'Accept-Language': 'es-ES,es;q=0.5',
};

const data = {
  username: 'testuser',
  password: 'testpass',
};

fetch('https://httpbin.org/post', {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data),
})
  .then(response => response.json())
  .then(data => {
    console.log('Respuesta JSON:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Código de bonificación

Reclama tu Código de bonificación para las mejores soluciones de captcha en CapSolver: scrape. Después de canjearlo, obtendrás un bono adicional del 5% después de cada recarga, un número ilimitado de veces.

Conclusión

Con node-fetch, puedes gestionar eficazmente las solicitudes HTTP en Node.js. Al integrarlo con CapSolver, puedes resolver captchas como ReCaptcha V3 y captcha, proporcionando acceso a contenido restringido. Además, node-fetch ofrece personalización a través de encabezados, soporte de proxy y gestión de cookies, lo que lo convierte en una herramienta versátil para el web scraping y la automatización.

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