Puppeteer を聞喘して PHP で Web スクレイピングを佩うHの reCAPTCHA の盾Q圭隈

Sora Fujimoto
AI Solutions Architect
28-Aug-2024

ウェブスクレイピング嶄にreCAPTCHAにぶつかってしまったことはありますか針修盻UYがあります。これらのCAPTCHAチャレンジは、gなスクレイピングタスクを寄きな嬾墾に笋┐訖苗榻圓あります。しかし伉塘しないでください。これらの嬾謁を融篤するのに叨羨つ盾Q貨があります。
このブログでは、薦なNode.jsライブラリであるPuppeteerを聞喘して、reCAPTCHAチャレンジに函りMむ圭隈をB初します。その瘁、PHPとy栽して、ウェブスクレイピングタスクをよりスム`ズかつ紳糞弔砲靴泙后reCAPTCHAにIして、シ`ムレスにデ`タを返に秘れる笋呂任ましたか進爾瓩泙靴腓Γ
ウェブスクレイピングにおけるreCAPTCHAとは
コンテキストをcえるために、reCAPTCHAは、ウェブサイトを徭啝された喘から隠oするためにOされたシステムです。ユ`ザ`は、箸離ブジェクトを蒙協したり、チェックボックスをオンにするなど、繁gにとってはgだがボットにとってはyしいタスクを頼阻するよう箔められます。これらのチャレンジはセキュリティに叨羨ちますが、ウェブスクレイピングにとっては愚初なものとなる辛嬬來があります。參和は、壟囑する辛嬬來のある児云議なタイプです。
- reCAPTCHA v2: このバ`ジョンは、仝暴はロボットではありません々チェックボックスと鮫颯扎`スのチャレンジで岑られています。ユ`ザ`は、鮫颪鬟リックしたり、蒙協のアクションをg佩したりして、繁gであることを^苧する駅勣がある栽があります。これは、gHのユ`ザ`とボットを曝eする貧で森議です。

- reCAPTCHA v3: このバ`ジョンはバックグラウンドで嘛します。ユ`ザ`の荷恬を勣箔するのではなく、サイト畠悶のユ`ザ`の佩咾魴嵶して、リスクスコアを護り輝てます。このスコアは、ウェブサイトが、ユ`ザ`がボットである辛嬬來に児づいて、アクセスをS辛するかブロックするかを登僅するのに叨羨ちます。
- reCAPTCHA Enterprise: より互業なセキュリティ勣周を隔つ二I鬚韻法reCAPTCHA Enterprise は、牢された{璃にする互業な隠oを戻工します。晒されたリスク蛍裂、カスタマイズ辛嬬なスコア原け、およびスケ`ラビリティの鯢呂覆匹C嬬を笋┐討り、C畜秤鵑籌慴な荷恬をQうMにmしています。
愚初なCAPTCHAを頼畠に盾Qできないことが採業もRり卦されて是っていますか
CapsolverのAI喜dの徭Webアンブロックテクノロジ`で、シ`ムレスな徭CAPTCHA盾QをgFしましょう
トップレベルのCAPTCHAソリュ`ションのためのボ`ナスコ`ドを@誼しましょうCapSolver: WEBS. コ`ドを旋喘すると、チャ`ジごとに5%のボ`ナスが弖紗で原嚥されます。o崙
これらのバ`ジョンを尖盾することで、reCAPTCHAのn}を森議に針捲できます。PuppeteerとCapSolverを聞喘して、これらのn}にIし、Webスクレイピングの函りMみを紳併する圭隈についてしくていきましょう。
CapSolverがreCAPTCHAの盾Qをどのように屶址するか
CapSolverは、reCAPTCHAを根むCAPTCHAのn}にIするための薦なソリュ`ションです。CapSolverをワ`クフロ`にy栽して、CAPTCHAの盾Qを殆晒する圭隈を參和に幣します。
- サイトキ`を函誼する
- ブラウザの勣箔ログで、
/recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf
のような勣箔を碧します。k=
パラメ`タは、駅勣なサイトキ`です。 - g`ったキ`を峺協した栽、肝のようなエラ`メッセ`ジが燕幣されます。
Solve failed! response: {"errorId":1,"errorCode":"ERROR_INVALID_TASK_DATA","errorDescription":"Invalid site key","taskId":"1cd1e687-96dd-4f14-b8ef-18b5d144d9b8","status":"failed"}
- ブラウザの勣箔ログで、
- 屎しいreCAPTCHAバ`ジョンV2またはV3を聞喘していないか、タ`ゲットサイトのNとAPIリクエストのNが匯崑しない栽、肝のようなエラ`が燕幣されることがあります。
Solve failed! response: {"errorId":1,"errorCode":"ERROR_CAPTCHA_SOLVE_FAILED","errorDescription":"Failed to solve the captcha: 1001","taskId":"da450cbc-ff9d-439d-908a-77e7eb8852dd","status":"failed"}
-
h廠O協
- 駅勣なパッケ`ジをインスト`ルします。bash
npm install axios puppeteer-core
- 駅勣なパッケ`ジをインスト`ルします。
-
y栽コ`ドの峰
php
<?php
require_once 'vendor/autoload.php';
use Nesk\Puphpeteer\Puppeteer;
use Nesk\Rialto\Data\JsFunction;
use GuzzleHttp\Client;
$puppeteer = new Puppeteer;
$browser = $puppeteer->launch();
// TODO: 撹をO協する
$api_key = "YOUR_API_KEY"; // CapSolverのAPIキ`
$site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"; // タ`ゲットサイトのサイトキ`
$site_url = "https://www.google.com/recaptcha/api2/demo"; // タ`ゲットサイトのペ`ジURL
function capsolver()
{
global $api_key, $site_key, $site_url;
$client = new Client();
$payload = [
'clientKey' => $api_key,
'task' => [
'type' => 'ReCaptchaV2TaskProxyLess',
'websiteKey' => $site_key,
'websiteURL' => $site_url,
]
];
try {
$response = $client->post("https://api.capsolver.com/createTask", [
'json' => $payload
]);
$data = json_decode($response->getBody(), true);
$task_id = $data['taskId'] ?? null;
if (!$task_id) {
echo "タスクの恬撹に払,靴泙靴: " . json_encode($data) . PHP_EOL;
return null;
}
echo "taskIdを函誼しました: " . $task_id . PHP_EOL;
while (true) {
sleep(1);
$getResultPayload = [
'clientKey' => $api_key,
'taskId' => $task_id
];
$resp = $client->post("https://api.capsolver.com/getTaskResult", [
```php
<?php
function capsolver() {
global $api_key, $site_key;
try {
$client = new \GuzzleHttp\Client();
$resp = $client->post('https://api.capsolver.com/createTask', [
'json' => [
'clientKey' => $api_key,
'task' => [
'type' => 'recaptchaV2',
'websiteURL' => 'https://www.google.com/recaptcha/api2/demo',
'websiteKey' => $site_key,
'userAgent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
'proxy' => 'http://127.0.0.1:8118', // Replace with your own proxy
'proxyType' => 'socks5' // Replace with your proxy type
]
]
]);
$data = json_decode($resp->getBody(), true);
$taskId = $data['taskId'];
while (true) {
$resp = $client->post('https://api.capsolver.com/getTaskResult', [
'json' => [
'clientKey' => $api_key,
'taskId' => $taskId
]
]);
$data = json_decode($resp->getBody(), true);
$status = $data['status'] ?? null;
if ($status === "ready") {
return $data['solution']['gRecaptchaResponse'];
}
if ($status === "failed" || isset($data['errorId'])) {
echo "Solve failed! response: " . json_encode($data) . PHP_EOL;
return null;
}
}
} catch (\Exception $e) {
echo "Error: " . $e->getMessage() . PHP_EOL;
return null;
}
}
function reqSite() {
global $site_url, $browser;
$token = capsolver();
if ($token === null) {
return;
}
echo $token . PHP_EOL;
$page = $browser->newPage();
$page->goto($site_url);
$evaluate_script = <<<EOD
document.getElementById("g-recaptcha-response").value="$token";
onSuccess("$token");
EOD;
$page->evaluate(JsFunction::createWithBody($evaluate_script));
$product_element = $page->querySelector('#recaptcha-demo-submit');
if ($product_element instanceof ElementHandle) {
$product_element->click();
} else {
echo 'Element not found.' . PHP_EOL;
}
}
reqSite();
reCAPTCHA v2、v3、またはEnterpriseのいずれをQっているかにvわらず、CapSolverをPuppeteerとy栽することで、ワ`クフロ`を殆晒し、スクレイピング紳覆鯱鯢呂気擦襪海箸できます。}がk伏した栽や弖紗のサポ`トが駅勣な栽は、CapSolverとPuppeteerのI圭が淫凄議なドキュメントとサポ`トを戻工しており、あらゆるn}を針捲するお返擦い鬚靴泙后
コンプライアンス窒並 このブログで戻工される秤鵑蓮秤麑畊のみを朕議としています。CapSolverは、すべてのm喘される隈舵およびヨ討臨駟悗謀めています。CapSolverネットワ`クの音隈、p遁、または喘の朕議での聞喘は鯉に鋤峭され、{砲気譴泙后K修燭舛離ャプチャ盾Qソリュ`ションは、巷慌デ`タのクロ`リング嶄にキャプチャの}を盾QするHに100%のコンプライアンスを_隠しながら、ユ`ザ`エクスペリエンスを鯢呂気擦泙后K修燭舛蓮▲稀`ビスの販ある聞喘をX遒靴泙后Tについては、サ`ビス旋喘シsおよびプライバシ`ポリシ`をごEください。
もっとる

reCAPTCHA Enterprise v2、v2インビジブル、v3、v3エンタ`プライズ 0.9スコアのあらゆるバ`ジョンをどう盾Qするか
CapSolverでreCaptchaのあらゆるバ`ジョンを盾くスキルをマスタ`: このガイドは、reCaptchaを森議に盾Qするためのステップバイステップのチュ`トリアルを戻工し、械に屎_なY惚をgFします。

Sora Fujimoto
11-Oct-2025

reCaptcha v2 インビジブルの盾Q圭隈
このブログは、Capsolverを聞喘してreCaptcha v2の掲燕幣を盾Qするための淫凄議なガイドです。駅勣な秤鵑Capsolverに戻竃し、Y惚を編^するまでのステップバイステップのウォ`クスル`を戻工しています。このブログは、尖盾しやすく、g佩しやすいようにOされており、ウェブサイトでreCaptcha v2の掲燕幣をg廾および盾Qするプロセスを儻堀かつ紳糞弔砲靴泙后これは鏡徭でされたガイドであり、广恬愬嶌Δ覆靴釦i宀がプロセスを頼畠に尖盾できるようにしています。

Nikolai Smirnov
11-Oct-2025

reCaptchaのコ`ルバックv気量修祁
reCAPTCHAのコ`ルバックをつけるには、reCAPTCHAが屎械に盾Qされた瘁にg佩されるJavaScriptv気鯡惷┐靴泙后J幎の古勣を參和に幣します。

Sora Fujimoto
23-Sep-2025

reCaptcha v2 の盾き圭
この並では、reCaptchaとは採か、そしてCapSolverを聞ってreCaptcha v2をgに盾Qする圭隈をh苧します。

Nikolai Smirnov
23-Sep-2025

reCaptcha v3を盾いて繁gらしいスコア(0.7゛0.9參貧)を誼る圭隈
CapsolverでreCaptcha v3を森議に盾Qする圭隈を僥びましょう。このガイドでは、O協からCAPTCHAの盾QまでをW_し、互スコアとスム`ズなWebナビゲ`ションを隠^します。

Sora Fujimoto
23-Sep-2025

2025定のウェブスクレイピングにおける恷mなreCAPTCHA v2およびv3ソルバ`は採ですか
2025定、互業晒されたボット貨システムにより、佚mできるreCAPTCHAソルバ`をつけることがデ`タ渇竃撹孔のIとなっています。

Sora Fujimoto
17-Jan-2025