
Sora Fujimoto
AI Solutions Architect

Node.jsの自動化スクリプトが常にクラウドフレアによってブロックされていますか?あなたは一人ではありません。クラウドフレアの強力なセキュリティメジャー、例えばJavaScriptチャレンジや「I'm Under Attack」モードは、ボットを停止するのに効果的ですが、正当なウェブスクリーピングやデータ抽出タスクも停止する可能性があります。これらのセキュリティチェックは、自動化されたスクリプトがよく失敗するバックグラウンドテストを実行して、訪問者を検証します。
このガイドでは、この障害を乗り越える方法を紹介します。Node.jsと**CapSolver**サービスを使用して、クラウドフレアチャレンジを効率的に解決し、シームレスなアクセスに必要なcf_clearanceトークンを取得する、明確なステップバイステップのプロセスを説明します。
開始する前に、以下の準備が整っていることを確認してください:
まず、HTTPリクエストを行うためにaxiosライブラリをインストールする必要があります。ターミナルを開き、次のコマンドを実行してください:
npm install axios
Node.jsとCapSolver APIを使用してクラウドフレアチャレンジを解決し、cf_clearanceトークンを取得するためのサンプルコードを以下に示します。このコードは、AntiCloudflareTaskを作成し、解決を待って結果を取得する方法を示しています。
このコードは、カップソルバー公式ドキュメントの最新の実践を組み込み、よりクリーンな構造と必要なコメントを備えています。
const axios = require('axios');
// -------------------PLEASE MODIFY THESE VALUES-------------------
// http://username:password@ip:portの形式でプロキシの詳細を入力してください
const PROXY = 'http://username:password@ip:port';
// カップソルバーのダッシュボードから取得したAPIキー
const CAPSOLVER_API_KEY = 'YourAPIKEY';
// クラウドフレアチャレンジを解決したいターゲットウェブサイトのURL
const PAGE_URL = 'https://www.yourwebsite.com';
// ----------------------------------------------------------------
/**
* カップソルバーAPIを使用してクラウドフレアチャレンジを解決するタスクを作成します。
* @param {string} websiteURL - ターゲットウェブサイトのURL
* @param {string} proxy - 使用するプロキシ
* @returns {Promise<string|null>} - タスクID、または作成に失敗した場合null
*/
async function createCloudflareTask(websiteURL, proxy) {
console.log('クラウドフレアタスクを作成しています...');
try {
const response = await axios.post('https://api.capsolver.com/createTask', {
clientKey: CAPSOLVER_API_KEY,
task: {
type: 'AntiCloudflareTask',
websiteURL: websiteURL,
proxy: proxy
}
});
if (response.data.errorId > 0) {
console.error(`タスクの作成に失敗しました: ${response.data.errorDescription}`);
return null;
}
console.log(`タスクが正常に作成されました。タスクID: ${response.data.taskId}`);
return response.data.taskId;
} catch (error) {
console.error(`タスクの作成中にエラーが発生しました: ${error}`);
return null;
}
}
/**
* タスク結果をポーリングします。
* @param {string} taskId - カップソルバーから返されたタスクID
* @returns {Promise<object|null>} - 解決オブジェクト、または失敗した場合null
*/
async function getTaskResult(taskId) {
console.log(`タスクID ${taskId}の結果を取得しています...`);
let solution = null;
while (!solution) {
await new Promise(resolve => setTimeout(resolve, 3000)); // 3秒待機
try {
const response = await axios.post('https://api.capsolver.com/getTaskResult', {
clientKey: CAPSOLVER_API_KEY,
taskId: taskId
});
if (response.data.errorId > 0) {
console.error(`結果の取得に失敗しました: ${response.data.errorDescription}`);
return null;
}
if (response.data.status === 'ready') {
console.log('解決が正常に取得されました!');
solution = response.data.solution;
} else if (response.data.status === 'processing') {
console.log('タスクはまだ処理中です、お待ちください...');
} else if (response.data.status === 'failed') {
console.error(`タスクの処理に失敗しました: ${response.data.errorDescription}`);
return null;
}
} catch (error) {
console.error(`結果の取得中にエラーが発生しました: ${error}`);
return null;
}
}
return solution;
}
/**
* 全てのプロセスを実行するメイン関数
*/
async function main() {
console.log('クラウドフレアチャレンジを解決し始めます...');
const taskId = await createCloudflareTask(PAGE_URL, PROXY);
if (!taskId) {
console.log('タスクの作成に失敗しました、終了します。');
return;
}
const solution = await getTaskResult(taskId);
if (!solution) {
console.log('解決の取得に失敗しました、終了します。');
return;
}
console.log('解決の詳細を取得しました:');
console.log(solution);
// 今後、取得したクッキーとUser-Agentを使用してターゲットウェブサイトにアクセスできます。
// 解決オブジェクトには'URL'、'status'、'headers'、'cookies'、'User-Agent'が含まれます。
// 例: 取得したクッキーとUser-Agentを使用してリクエストを行う方法
try {
const cfCookie = solution.cookies.map(cookie => `${cookie.name}=${cookie.value}`).join('; ');
console.log('\n取得したクッキーとUser-Agentを使用してターゲットページにアクセスしています...');
const pageResponse = await axios.get(PAGE_URL, {
headers: {
'User-Agent': solution.userAgent,
'Cookie': cfCookie
},
// 以降のリクエストに専用のプロキシ対応のaxiosインスタンスを使用することを推奨します。
proxy: false,
});
console.log(`\n正常にアクセスできました!ページのステータスコード: ${pageResponse.status}`);
// console.log('ページのコンテンツ:', pageResponse.data); // コンテンツを確認するにはコメントを外してください
} catch (error) {
console.error(`解決を使用してページにアクセス中にエラーが発生しました: ${error.response ? error.response.status : error.message}`);
}
}
main();
コードを実行する前に、次の変数を変更する必要があります:
PROXY: ここにプロキシサーバーのアドレスと資格情報を置き換えてください。形式はhttp://username:password@ip:portです。CAPSOLVER_API_KEY: カップソルバーのダッシュボード でAPIキーを取得してください。PAGE_URL: クラウドフレアで保護されているターゲットウェブサイトのURLに置き換えてください。カップソルバーを統合することで、開発者はNode.jsアプリケーション内でクラウドフレアチャレンジの複雑なプロセスを自動化できます。このアプローチは高い成功率を持ち、常に変化するセキュリティポリシーに対処する必要がありません。単にAPIを呼び出すだけで、cf_clearanceトークンと一致するUser-Agentを取得でき、ターゲットウェブサイトへのシームレスなアクセスが可能になります。この戦略は、安定した大規模なデータ収集を必要とするプロジェクトにとって不可欠です。詳細を知りたい場合は、クラウドフレア5秒チャレンジの解決方法に関するガイドをご覧ください。
Q1: なぜプロキシを使用する必要がありますか?
A1: クラウドフレアはIPアドレスを異常な活動に対して監視しています。1つのIPアドレスが多くのリクエストを送信すると、ボットとしてマークされる可能性があります。高品質なローテーションプロキシ(住宅プロキシやISPプロキシなど)を使用することで、リアルユーザーの行動を模倣し、成功確率を大幅に向上させることができます。
Q2: cf_clearanceトークンの有効期限はどのくらいですか?
A2: cf_clearanceトークンは通常、数時間有効です。ただし、正確な有効期間はウェブサイトのクラウドフレア設定によります。期限切れになると、新しいトークンを取得するためにプロセスを再度実行する必要があります。
Q3: 取得したクッキーをスクリーパーで使用できますか?
A3: はい。カップソルバーから解決を取得した後、すべての後続のHTTPリクエストにcf_clearanceクッキーと一致するUser-Agentを含める必要があります。解決に使用した同じプロキシIPを使用することが重要です。このガイドはNode.jsに焦点を当てていますが、他の言語でも同様の原則が適用されます。たとえば、PythonとSeleniumでクラウドフレアCAPTCHAを解決する方法については、別の投稿で説明しています。
Q4: カップソルバーは他の種類のCAPTCHAを処理できますか?
A4: カップソルバーはクラウドフレアに加え、さまざまなバージョンのreCAPTCHAや画像ベースのCAPTCHAをサポートしています。最新の解決策について知りたい場合は、2026年のクラウドフレアチャレンジソルバーのトップ10の性能ランキングをチェックしてください。サポートされているタイプの完全なリストについては、公式のカップソルバードキュメントを参照してください。
Cloudflareエラー1005:アクセスが拒否されました。ウェブスクリーピング中にこれを修正する方法を学びましょう。リジデンシャルプロキシ、ブラウザファイントラッキング、CAPTCHA用のCapSolverなどの解決策を発見してください。データ抽出を最適化してください。

Cloudflare TurnstileをAIワークフローで効果的に処理する方法を学び、Playwrightのステルス手法とCapSolverを活用して信頼性の高いキャプチャ解決を実現します。実用的な統合戦略と、途切れることのないオートメーションのためのベストプラクティスを学びましょう。
