Cómo usar node-fetch para Web Scraping

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
npm install node-fetch
o
bash
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
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
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
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
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
npm install https-proxy-agent
Ejemplo con un proxy:
javascript
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
npm install fetch-cookie
Ejemplo:
javascript
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
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
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!

Aloísio Vítor
25-Apr-2025

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.

Aloísio Vítor
07-Mar-2025

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.

Aloísio Vítor
28-Feb-2025

¿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.

Aloísio Vítor
27-Feb-2025

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.

Aloísio Vítor
20-Feb-2025

¿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.

Aloísio Vítor
20-Feb-2025