Webスクレイピングにnode-fetchを使用する方法

Nikolai Smirnov
Software Development Lead
27-Sep-2024
node-fetch とは?
node-fetch は、Node.js に window.fetch API を提供する軽量な JavaScript ライブラリです。Node.js 環境からの HTTP リクエストを行うために頻繁に使用され、ネットワーク操作を非同期的に処理するためのモダンで柔軟な方法を提供します。
機能:
- Promise ベース: JavaScript Promise を使用して、非同期操作を簡単に管理します。
- Node.js サポート: Node.js 環境向けに特別に設計されています。
- ストリーム サポート: ストリームをサポートしており、大量のデータを処理するのに適しています。
- 小さく効率的: 最小限のデザインで、パフォーマンスと最新の JavaScript 機能との互換性に重点を置いています。
前提条件
node-fetch を使用する前に、次のものがあることを確認してください。
インストール
node-fetch を使用するには、npm または yarn を使用してインストールする必要があります。
bash
npm install node-fetch
または
bash
yarn add node-fetch
基本的な例: GET リクエストの実行
以下は、node-fetch を使用して単純な GET リクエストを実行する方法です。
javascript
const fetch = require('node-fetch');
fetch('https://httpbin.org/get')
.then(response => response.json())
.then(data => {
console.log('Response Body:', data);
})
.catch(error => {
console.error('Error:', error);
});
ウェブスクレイピングの例: API から JSON データを取得する
API からデータを取得し、結果をログに記録してみましょう。
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);
});
CapSolver と node-fetch を使用して CAPTCHA を処理する
このセクションでは、CapSolver を node-fetch と統合して CAPTCHA を処理します。CapSolver は、ReCaptcha V3 や captcha などの CAPTCHA を解決するための API を提供し、そのような CAPTCHA を解決する必要があるタスクの自動化を可能にします。
例: CapSolver と node-fetch を使用して ReCaptcha V3 を解決する
最初に、node-fetch と CapSolver をインストールします。
bash
npm install node-fetch
npm install capsolver
次に、ReCaptcha V3 を解決し、解決策をリクエストで使用する方法を説明します。
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 creating CAPTCHA task:', 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)); // wait 5 seconds
} while (true);
} catch (error) {
console.error('Error fetching CAPTCHA result:', error);
throw error;
}
}
async function main() {
console.log('Creating CAPTCHA task...');
const taskId = await createTask(PAGE_URL, PAGE_KEY, PAGE_ACTION);
console.log(`Task ID: ${taskId}`);
console.log('Retrieving CAPTCHA result...');
const solution = await getTaskResult(taskId);
const token = solution.gRecaptchaResponse;
console.log(`Token Solution: ${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(`Score: ${response.score}`);
}
main().catch(err => {
console.error(err);
});
node-fetch を使用してプロキシを処理する
node-fetch を使用してプロキシを介してリクエストをルーティングするには、https-proxy-agent などのプロキシエージェントが必要です。実装方法は次のとおりです。
bash
npm install https-proxy-agent
プロキシを使用した例:
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('Response Body:', data);
})
.catch(error => {
console.error('Error:', error);
});
node-fetch を使用して Cookie を処理する
node-fetch で Cookie を処理するには、fetch-cookie のようなライブラリを使用できます。使用方法を説明します。
bash
npm install fetch-cookie
例:
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);
});
詳細な使い方: カスタムヘッダーと POST リクエスト
node-fetch を使用して、ヘッダーをカスタマイズしたり、POST リクエストを実行したりできます。
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('Response JSON:', data);
})
.catch(error => {
console.error('Error:', error);
});
ボーナスコード
CapSolver: scrape で、最高の CAPTCHA ソリューションのボーナスコード を入手してください。コードを適用すると、チャージごとに 5% のボーナスが追加されます。

まとめ
node-fetch を使用すれば、Node.js で HTTP リクエストを効果的に管理できます。CapSolver と統合することで、ReCaptcha V3 や captcha などの CAPTCHA を解決し、制限されたコンテンツにアクセスできます。さらに、node-fetch はヘッダー、プロキシサポート、Cookie 管理を通じてカスタマイズが可能で、ウェブスクレイピングと自動化のための汎用性の高いツールとなっています。
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

CAPTCHA 2026を解くために最適な拡張機能はどれですか?
オンラインセキュリティの進化し続ける世界において、CAPTCHAのチャレンジはインターネットユーザーにとって一般的な障壁となっています...

Nikolai Smirnov
12-Dec-2025

Sample Post
この記事では、Lumiproxyとは何か、および提供しているサービスについて紹介します。

Nikolai Smirnov
12-Dec-2025

Genlogin: 革新するウェブ自動化体験
この記事では、Genloginおよびその提供するサービスについてご紹介します。

Sora Fujimoto
12-Dec-2025

プロクシーズ.io : 個別のプロキシ あらゆるタスクに
本記事では、Proxys.ioとは何なのかと、彼らが提供するサービスについてご紹介します。

Nikolai Smirnov
12-Dec-2025

タブプロキシ: お得な海外住宅用プロキシ
この記事では、Tabproxyとは何か、および彼らが提供するサービスについてご紹介します。

Anh Tuan
12-Dec-2025

IP2World 住宅用プロキシ: リーディンググローバルIPプロキシソリューション
本記事では、IP2Worldとは何かおよび提供するサービスについてご紹介します。

Ethan Collins
12-Dec-2025

