PHPでCloudflareを解決する方法

Sora Fujimoto
AI Solutions Architect
26-Nov-2024
CloudflareはあなたのPHPスクレイパーを検出できますか?ブロックされることなく、その強力な防御策を回避する方法はありますか?強力なセキュリティ対策で知られるCloudflareは、Turnstile CAPTCHAやBot Managementなどのツールを使用して、ボットや疑わしいアクティビティをフィルタリングしています。これらの保護機能は、自動化されたものを検出してブロックすることに大きく依存しているPHPスクレイパーにとって大きな課題となっています。
PHPを使用してCloudflareで保護されたサイトをスクレイピングする可能性を高める方法を詳しく見ていきましょう。ただし、常に進化しているこのセキュリティシステムに対して、保証された解決策はないことを念頭に置いてください。
Cloudflareとは?
Cloudflareは、ボット、スパマー、サービス拒否(DoS)攻撃など、さまざまなオンラインの脅威からウェブサイトを保護するために設計された、広く使用されているセキュリティおよびコンテンツ配信ネットワーク(CDN)です。ウェブサイトのサーバーとその訪問者の間の仲介者として機能し、幅広い基準に基づいてリクエストをフィルタリングし、正当なトラフィックのみがサーバーに到達するようにします。Cloudflareの堅牢なネットワークとセキュリティツールは、ウェブサイトの読み込み速度を速め、望ましくない、または有害なやり取りから保護するのに役立ちます。
なぜCloudflareはPHPスクレイパーにとって困難なのか?
Cloudflareは、洗練されたボット検出システムのために、PHPスクレイパーにとって共通の課題となっています。潜在的に自動化された、または疑わしいアクティビティを検出した場合、Cloudflareは訪問者の正当性を検証するためにさまざまなセキュリティ対策を展開できます。これらの対策には以下が含まれます。
JavaScriptチャレンジ
Cloudflareは、多くの場合、JavaScriptベースのチャレンジ(JavaScriptの「攻撃を受けています」モードとも呼ばれます)を提供します。これは、サイトへのアクセスを得る前にユーザーにJavaScriptを実行させることを要求します。これは、PHPがネイティブにJavaScriptの実行を処理しないため、PHPスクレイパーにとって特に困難です。解決策は、多くの場合、JavaScriptの実行をシミュレートできるヘッドレスブラウザやその他のツールとの統合を伴います。
Turnstile CAPTCHAおよびその他のCAPTCHA
CAPTCHAは、Cloudflareが人間の操作を確認するために使用するもう1つのセキュリティレイヤーです。特にTurnstile CAPTCHAは、自動化されたボットが保護されたページにアクセスするのを防ぐために使用されます。これらのCAPTCHAを解決するには、CAPTCHA解決サービスまたは手動による介入が必要です。PHPだけでは、CAPTCHAを解釈して対応する機能がありません。
ボット管理
Cloudflareの高度なボット管理システムは、機械学習を使用して、ボットに典型的なパターンと行動を検出します。リクエストの頻度、ユーザーエージェントの一貫性、IPレピュテーションなどの詳細を追跡することにより、Cloudflareは高い精度でボットを識別してブロックできます。これは、高頻度または繰り返しリクエストを送信するスクレイパーにとって特に困難です。
IPベースのブロックとレート制限
CloudflareはIPアドレスを監視し、レート制限を適用して、疑わしいトラフィックを検出し、制限します。スクレイパーの場合、これは、同じIPアドレスからの繰り返しリクエストはフラグが立てられ、ブロックされる可能性が高いことを意味します。これを回避するには、プロキシまたはローテーションプロキシサービスを通じてIPを頻繁にローテーションする必要がありますが、これには複雑さとコストが追加される可能性があります。
セッションとCookieの管理
ユーザーをさらに検証するために、CloudflareはセッションとCookieを追跡します。PHPスクレイパーは、リクエスト全体で単一のユーザーセッションを維持するために、Cookieとセッションを一貫して管理する必要があります。これは、高度なCookie処理機能なしでは、技術的に実装が困難です。
要約すると、Cloudflareの多層防御は、自動化されたトラフィックを検出して防止するように設計されており、PHPスクレイピングの取り組みを特に困難にしています。
PHPでCloudflareを解決する方法
Cloudflareは、JavaScriptチャレンジ、CAPTCHA、高度なボット管理システムなどの堅牢なボット検出とセキュリティ対策により、Webスクレイピングにとって大きな課題をもたらします。PHPを使用してCloudflareで保護されたWebサイトをスクレイピングしようとすると、開発者はJavaScriptの実行、セッションの処理、CAPTCHAの解決などの問題に直面することがよくあります。
試行1:Selenium Stealthを使用した自動化
Cloudflareの防御策を解決するための一般的なアプローチの1つは、Selenium Stealthなどのヘッドレスブラウザと自動化ツールを使用することです。Selenium Stealthは、より人間らしいブラウジング動作をシミュレートすることで検出を減らすように設計された、Selenium WebDriverの拡張レイヤーです。
- PHPでのSelenium Stealthのコード例
php
// 必要なライブラリをロード
require_once 'vendor/autoload.php';
use Facebook\WebDriver\Remote\RemoteWebDriver;
use SapiStudio\SeleniumStealth\SeleniumStealth;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Chrome\ChromeOptions;
// SeleniumサーバーのURL
$serverUrl = 'http://localhost:4444';
// ブラウザの機能とオプションを定義
$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments(['--headless', '--disable-gpu', '--no-sandbox']); // 自動化のためのヘッドレスモード
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $chromeOptions);
// WebDriverを初期化
$driver = RemoteWebDriver::create($serverUrl, $capabilities);
// Selenium StealthでWebDriverを拡張
$stealthDriver = (new SeleniumStealth($driver))->usePhpWebriverClient()->makeStealth();
// ブラウザウィンドウを最大化
$stealthDriver->manage()->window()->maximize();
// ターゲットURLに移動
$url = 'https://www.scrapingcourse.com/cloudflare-challenge';
$stealthDriver->get($url);
// ページソースを取得して印刷
$html = $stealthDriver->getPageSource();
echo $html;
// ブラウザセッションを閉じる
$stealthDriver->quit();
Selenium Stealthを使用することの課題
Selenium Stealthは有望なアプローチですが、大きな欠点があります。
- 高い検出リスク: Cloudflareの高度な検出メカニズムは、特に大量に使用されている場合、Seleniumベースのブラウザをボットとしてフラグを立てる可能性があります。
- 要素処理の問題: チャレンジを解決するためにページ要素を識別して操作することは、信頼性が低い可能性があります。
- パフォーマンスのオーバーヘッド: 複数のヘッドレスブラウザを同時に実行すると、大量のシステムリソースが消費されるため、スケーリングが困難になります。
Selenium Stealthは単純な防御策を解決できますが、Cloudflareの高度なセキュリティ対策を処理するための最良の解決策ではありません。
試行2:CapSolver APIの使用
CapSolverは、Cloudflareの課題を解決するための堅牢なAPI駆動型アプローチを提供します。リソースを大量に消費する自動化に依存するのではなく、強力なCAPTCHA解決テクノロジーを活用して、Turnstile CAPTCHAやJavaScriptベースのチャレンジなどのCloudflareの課題を処理します。
CapSolverを使用することの利点
- 効率性: 手動による介入なしに、CAPTCHAやその他の課題を迅速に解決します。
- スケーラビリティ: 複数のブラウザを実行するオーバーヘッドがないため、大規模な運用に適しています。
- シンプルさ: PHPやその他のプログラミング言語との簡単な統合を提供します。
- 信頼性: 最も複雑な課題でも高い精度で処理します。
PHPでのCapSolverのコード例
次のコードは、CapSolverを使用してCloudflareの課題を解決し、保護されたWebサイトにログインする方法を示しています。
php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
define("CAPSOLVER_API_KEY", "CAI-API_KEY");
define("PAGE_URL", "https://dash.cloudflare.com/login");
define("SITE_KEY", "0x4AAAAAAAJel0iaAR3mgkjp");
function callCapsolver() {
$client = new Client();
$data = [
"clientKey" => CAPSOLVER_API_KEY,
"task" => [
"type" => "AntiTurnstileTaskProxyLess",
"websiteURL" => PAGE_URL,
"websiteKey" => SITE_KEY,
"metadata" => ["action" => "login"]
]
];
try {
// タスクを作成
$response = $client->post('https://api.capsolver.com/createTask', [
'json' => $data
]);
$resp = json_decode($response->getBody(), true);
$taskId = $resp['taskId'] ?? null;
if (!$taskId) {
echo "No taskId found: " . $response->getBody() . PHP_EOL;
return null;
}
echo "Created taskId: $taskId" . PHP_EOL;
// タスクの結果をポーリング
while (true) {
sleep(1); // 1秒待つ
$resultResponse = $client->post('https://api.capsolver.com/getTaskResult', [
'json' => [
"clientKey" => CAPSOLVER_API_KEY,
"taskId" => $taskId
]
]);
$result = json_decode($resultResponse->getBody(), true);
$status = $result['status'] ?? '';
if ($status === "ready") {
echo "Successfully solved: " . $resultResponse->getBody() . PHP_EOL;
return $result['solution'] ?? null;
}
if ($status === "failed" || isset($result['errorId'])) {
echo "Failed: " . $resultResponse->getBody() . PHP_EOL;
return null;
}
}
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . PHP_EOL;
return null;
}
}
function login($token, $userAgent) {
$client = new Client();
$headers = [
'Cookie' => "cf_clearance=$token",
'Host' => 'dash.cloudflare.com',
'User-Agent' => $userAgent
];
$data = [
"cf_challenge_response" => $token,
"email" => "[email protected]",
"password" => "example_password"
];
try {
$response = $client->post('https://dash.cloudflare.com/api/v4/login', [
'headers' => $headers,
'form_params' => $data
]);
echo "Login Response Status Code: " . $response->getStatusCode() . PHP_EOL;
if ($response->getStatusCode() !== 403) {
echo "Login Response: " . $response->getBody() . PHP_EOL;
}
} catch (Exception $e) {
echo "Login Error: " . $e->getMessage() . PHP_EOL;
}
}
function run() {
$solution = callCapsolver();
$token = $solution['token'] ?? null;
if ($token) {
login($token, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36");
}
}
run();
なぜSelenium StealthよりもCapSolverを選ぶのか?
- リソース効率: ヘッドレスブラウザを実行する必要がないため、サーバーコストとメモリ消費を削減できます。
- 実装の容易さ: 複雑なブラウザ構成なしで、簡単なAPI統合ができます。
- 成功率: Cloudflareの高度な防御策を回避する信頼性の高さが向上します。
- エンタープライズ向けにスケーラブル: 大量のCAPTCHA解決を必要とするシナリオに最適です。
CapSolverとその機能の詳細については、CapSolverのドキュメントをご覧ください。
最高のCAPTCHAソリューションのためのボーナスコードを請求してください。CapSolver: WEBS。それを引き換えた後、各チャージ後に5%の追加ボーナスが受け取れ、無制限です。
結論
Cloudflareの防御策は常に進化しており、PHPスクレイパーがそれらを解決することはますます困難になっています。Selenium Stealthのような自動化ツールは基本的なシナリオを処理できますが、CapSolverは高度な課題に対処するためのより堅牢で効率的でスケーラブルなソリューションを提供します。CapSolverのAPIを使用すると、複雑なブラウザ自動化を管理する手間をかけずに、より迅速で信頼性の高い結果を得ることができます。
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

Webスクレイピングは合法か? 2025年版包括ガイド
2025年ウェブスクレイピングの法的課題:主要な規制、コンプライアンス、および事例研究

Sora Fujimoto
24-Jan-2025

2025年reCAPTCHA認識のためのトップ5 CAPTCHAソルバー
2025年トップ5のCAPTCHAソルバー(AI駆動型CapSolverによる高速reCAPTCHA認識を含む)を探求し、速度、価格、精度を比較しましょう

Anh Tuan
23-Jan-2025

reCAPTCHA認識とは?初心者向けガイド
reCAPTCHA画像グリッドに苦戦していませんか?CapsolverのAI搭載認識機能が「すべて選択」の課題を瞬時に解決する方法をご覧ください。API統合、ブラウザ拡張機能、CAPTCHA解決を95%以上の精度で自動化するためのプロのヒントを学びましょう。

Ethan Collins
23-Jan-2025

reCAPTCHAサイトキーとは何か、そしてどのように見つけるのか?
reCAPTCHAサイトキーを手動またはCapsolverなどのツールを使って見つける方法、よくある問題の解決策、開発者やウェブスクレイピングのためのCAPTCHA自動化について学びましょう。

Anh Tuan
23-Jan-2025

2025年のWebスクレイピングにおけるCloudflareチャレンジの回避方法
2025年におけるCloudflareチャレンジとTurnstileの回避方法を学び、シームレスなウェブスクレイピングを実現しましょう。Capsolverとの統合、TLSフィンガープリンティングのヒント、CAPTCHA地獄を回避するための一般的なエラー修正方法を紹介します。時間を節約し、データ抽出をスケールアップしましょう。

Ethan Collins
23-Jan-2025

Webスクレイピングにおける画像CAPTCHAの解き方:2025年完全ガイド
CapSolverを使って2025年に画像CAPTCHAを効果的に解決する方法を学ぶ

Sora Fujimoto
23-Jan-2025