Como Usar node-fetch para Web Scraping

Aloísio Vítor
Image Processing Expert
27-Sep-2024
O que é node-fetch?
node-fetch é uma biblioteca JavaScript leve que traz a API window.fetch para o Node.js. É frequentemente utilizada para fazer solicitações HTTP de um ambiente Node.js, fornecendo uma maneira moderna e flexível de lidar com operações de rede de forma assíncrona.
Recursos:
- Baseado em Promises: Utiliza Promises JavaScript para gerenciar operações assíncronas de maneira simples.
- Suporte ao Node.js: Projetado especificamente para ambientes Node.js.
- Suporte a Streams: Suporta streams, tornando-o altamente adequado para lidar com dados volumosos.
- Pequeno e Eficiente: Design minimalista, focando em desempenho e compatibilidade com recursos modernos do JavaScript.
Pré-requisitos
Antes de usar node-fetch, certifique-se de que você tenha:
Instalação
Para usar node-fetch, você precisa instalá-lo usando npm ou yarn:
bash
npm install node-fetch
ou
bash
yarn add node-fetch
Exemplo Básico: Fazendo uma Solicitação GET
Aqui está como executar uma simples solicitação GET usando node-fetch:
javascript
const fetch = require('node-fetch');
fetch('https://httpbin.org/get')
.then(response => response.json())
.then(data => {
console.log('Corpo da Resposta:', data);
})
.catch(error => {
console.error('Erro:', error);
});
Exemplo de Web Scraping: Obtendo Dados JSON de uma API
Vamos obter dados de uma API e registrar os 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('Erro:', error);
});
Lidando com Captchas com CapSolver e node-fetch
Nesta seção, integraremos o CapSolver com o node-fetch para lidar com captchas. O CapSolver fornece APIs para resolver captchas como ReCaptcha V3 e captcha, permitindo a automação de tarefas que exigem a resolução desses captchas.
Exemplo: Resolvendo ReCaptcha V3 com CapSolver e node-fetch
Primeiro, instale node-fetch e CapSolver:
bash
npm install node-fetch
npm install capsolver
Agora, aqui está como resolver um ReCaptcha V3 e usar a solução em sua solicitação:
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('Erro ao criar tarefa 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('Erro ao obter resultado CAPTCHA:', error);
throw error;
}
}
async function main() {
console.log('Criando tarefa CAPTCHA...');
const taskId = await createTask(PAGE_URL, PAGE_KEY, PAGE_ACTION);
console.log(`ID da Tarefa: ${taskId}`);
console.log('Recuperando resultado CAPTCHA...');
const solution = await getTaskResult(taskId);
const token = solution.gRecaptchaResponse;
console.log(`Solução do 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(`Pontuação: ${response.score}`);
}
main().catch(err => {
console.error(err);
});
Lidando com Proxies com node-fetch
Para direcionar suas solicitações através de um proxy com node-fetch, você precisará de um agente de proxy como https-proxy-agent. Aqui está como implementá-lo:
bash
npm install https-proxy-agent
Exemplo com um 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('Corpo da Resposta:', data);
})
.catch(error => {
console.error('Erro:', error);
});
Lidando com Cookies com node-fetch
Para o tratamento de cookies em node-fetch, você pode usar uma biblioteca como fetch-cookie. Aqui está como usá-lo:
bash
npm install fetch-cookie
Exemplo:
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('Erro:', error);
});
Uso Avançado: Cabeçalhos Personalizados e Solicitações POST
Você pode personalizar cabeçalhos e executar solicitações POST com node-fetch:
javascript
const fetch = require('node-fetch');
const headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'en-US,en;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('Resposta JSON:', data);
})
.catch(error => {
console.error('Erro:', error);
});
Código Bônus
Reivindique seu Código Bônus para as principais soluções de captcha em CapSolver: scrape. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitado.

Conclusão
Com node-fetch, você pode gerenciar efetivamente solicitações HTTP em Node.js. Ao integrá-lo com CapSolver, você pode resolver captchas como ReCaptcha V3 e captcha, fornecendo acesso a conteúdo restrito. Além disso, node-fetch oferece personalização através de cabeçalhos, suporte a proxy e gerenciamento de cookies, tornando-o uma ferramenta versátil para web scraping e automação.
Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.
Mais

Qual é a melhor extensão para resolver CAPTCHA 2026?
No mundo em constante evolução da segurança online, os desafios CAPTCHA tornaram-se uma barreira comum para os usuários da internet...

Sora Fujimoto
12-Dec-2025

Lumiproxy: Proxy Premium para Scraping de Web e Coleta de Dados
Neste artigo, mostraremos o que é Lumiproxy e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

Genlogin: Revolutionar sua experiência de automação da web
Neste artigo, vamos mostrar para você o que é o Genlogin e os serviços que eles oferecem.

Rajinder Singh
12-Dec-2025

Proxys.io: Proxies individuais para qualquer tarefa
Neste artigo, vamos mostrar para você o que é o Proxys.io e os serviços que eles oferecem.

Rajinder Singh
12-Dec-2025

Tabproxy: Bom custo proxy residencial internacional
Neste artigo, vamos mostrar para você o que é o Tabproxy e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

O que são erros 402, 403, 404 e 429 em raspagem de web? Um Guia Completo
Domine o tratamento de erros de raspagem de web entendendo o que são os erros 402, 403, 404 e 429. Aprenda a corrigir o erro 403 Proibido, implementar soluções para o erro de limitação de taxa 429 e tratar o código de status Payment Required emergente 402.

Lucas Mitchell
12-Dec-2025

