PHPでCAPTCHAをバイパス

CAPTCHAバイパス自動化ソリューションのためのPHPパッケージを統合。最高確率のCAPTCHA認証。

reCAPTCHAhCaptchaArkose captchaGeetest、その他のCAPTCHAをバイパスする2Captcha CAPTCHA突破サービスを簡単に統合するためのPHPパッケージ。

クイックスタート

インストレーション

スクリプトパッケージはパッケージインストーラーを使うか手動でインストールできます

Composer

ライブラリのパッケージを自動でインストールするには、PHPパッケージの標準ソリューション、Composerを使う必要があります。こちらのリンクからダウンロードし、説明に従ってインストールしてください。アプリケーションをインストールした後は次のコマンドをご利用ください。:

composer require 2captcha/2captcha

マニュアル

srcフォルダのコンテンツをプロジェクトにダウンロードし、コマンドを使ってsrc/autoloader.phpのオートローダーを有効化しましょう:

require 'path/to/autoloader.php';

弊社のGitHubレポジトリをご参照ください。弊社のAPIとの簡単統合のためのライブラリとモジュールが見つかります。

設定

インストール済みパッケージを設定するのに必要なすべてのパラメータの概要

TwoCaptchaクラスのインスタンスはこのように作成できます:

$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');

あなたも作成済みのインスタンスをカスタマイズする能力をお持ちです。

$solver = new \TwoCaptcha\TwoCaptcha([
    'apiKey'           => 'YOUR_API_KEY',
    'softId'           => 123,
    'callback'         => 'https://your.site/result-receiver',
    'defaultTimeout'   => 120,
    'recaptchaTimeout' => 600,
    'pollingInterval'  => 10,
]);
TwoCaptchaのインスタンスオプション
オプションデフォルトの値概要
softId-2Captcha ソフトウェアカタログで投稿した後に入手したソフトウェアID
callback-CAPTCHA認証結果を受け取るウェブサーバーのURL。URLはご利用のアカウントのpingback設定でまずは登録してください。
defaultTimeout120reCAPTCHA以外のすべてのタイプのCAPTCHAで数秒経つとポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を入手しようとするか定義付けします。
recaptchaTimeout600reCAPTCHAでは数秒でポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を取得しようとするかを定義付けします。
pollingInterval10res.php APIエンドポイントへのリクエストの合間の数秒ごとのインターバル。値を5秒以下にすることは推奨されていません。
重要事項: 一旦callbackTwoCaptchaインスタンスに定義付けされると、 すべてのメソッドはCAPTCHA IDのみを返し、結果を得るためにAPIをポールしません。結果はcallback URLに送られます。解答を手動で入手するにはgetResultメソッドをご利用ください。

CAPTCHAを突破

画像ベースのCAPTCHAを提出する際には2Captchaの作業員が適切に回答するために、追加のオプションを提供することができます。

Captchaオプション
オプションデフォルトの値概要
numeric0CAPTCHAが数字や他の記号を含むかどうかを定義付けします。API docでもっと詳しい情報を知りましょう。
minLength0解答の最小の長さ
maxLength0解答の最大の長さ
phrase0解答が複数の単語を含むかどうかを定義付けします。
caseSensitive0解答が大文字と小文字を区別するかどうかを定義付けする
calc0CAPTCHAが計算を要求することを定義付けする
lang-CAPTCHAの言語を定義付けします。a href='/api-docs#language'>対応する言語のリストをご確認ください。
hintImg-CAPTCHAで作業者にヒントを示す画像
hintText-CAPTCHAで作業者に示されたヒントやタスクテキスト

Normal CAPTCHA(画像の上の歪んだテキスト)をバイパスするには次のメソッドを使ってください。このメソッドは画像のテキストを認証するのにも使われます。

$result = $solver->normal('path/to/captcha.jpg');

このメソッドははっきりとしたテキストの中で提供される質問に解答することを要求するCAPTCHAをバイパスするのに使われます。

$result = $solver->text('If tomorrow is Saturday, what day is today?');

reCAPTCHA V2を突破するのにこのメソッドを使い、保護をバイパスするためにトークンを取得しましょう。

$result = $solver->recaptcha([
    'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
    'url'     => 'https://mysite.com/page/with/recaptcha',
]);

このメソッドはreCAPTCHA V3ソルバーを提供し、トークンを返します。

$result = $solver->recaptcha([
    'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
    'url'     => 'https://mysite.com/page/with/recaptcha',
    'version' => 'v3',
]);

FunCaptcha (Arkoselabs)突破メソッド。トークンを返します。

$result = $solver->funcaptcha([
    'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
    'url'     => 'https://mysite.com/page/with/funcaptcha',
]);

GeeTestパズルCAPTCHAを突破する方法。JSONとしてトークンのセットを返します。

$result = $solver->geetest([
    'gt'        => 'f1ab2cdefa3456789012345b6c78d90e',
    'challenge' => '12345678abc90123d45678ef90123a456b',
    'url'       => 'https://www.site.com/page/',
]);

このメソッドを使ってhCaptchaチャレンジをチッパします。CAPTCHAをバイパスするためのトークンが返されます。

$result = $solver->hcaptcha([
    'sitekey'   => '10000000-ffff-ffff-ffff-000000000001',
    'url'       => 'https://www.site.com/page/',
]);

KeyCAPTCHAを突破するトークンベースの方法

$result = $solver->keycaptcha([
    's_s_c_user_id'          => 10,
    's_s_c_session_id'       => '493e52c37c10c2bcdf4a00cbc9ccd1e8',
    's_s_c_web_server_sign'  => '9006dc725760858e4c0715b835472f22-pz-',
    's_s_c_web_server_sign2' => '2ca3abe86d90c6142d5571db98af6714',
    'url'                    => 'https://www.keycaptcha.ru/demo-magnetic/',
]);

CapyパズルCAPTCHAをバイパスするためのトークンベースメソッド

$result = $solver->capy([
    'sitekey' => 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
    'url'     => 'http://mysite.com/',
    'api_server' => 'https://jp.api.capy.me/',
]);

Gridメソッドは元々はOld reCAPTCHA V2と呼ばれていました。このメソッドは画像でグリッドを適用し、特定のグリッドボックスをクリックすることを要求するタイプのCAPTCHAをバイパスするために使用されます。ボックスの数を返します。

$result = $solver->grid('path/to/captcha.jpg');

Canvasメソッドは画像にあるオブジェクトの周りに線を引く必要があるときに使われます。多角形を描くために、ポイントのセットを返します。

$result = $solver->canvas('path/to/captcha.jpg');

ClickCaptchaメソッドはCAPTCHA画像上で座標上のポイントを返します。画像の特定のポイントをクリックする必要があるときに使われます。

$result = $solver->coordinates('path/to/captcha.jpg');

このメソッドはアイテムを回転させることを尋ねるCAPTCHAに使用されます。ほとんどの場合FunCaptchaのバイパスに使われます。回転の角度を返します。

$result = $solver->rotate('path/to/captcha.jpg');

その他のメソッド

メインスクリプトの作業中に使用される追加の有効なメソッド

send / getResult

このようなメソッドは手動CAPTCHA提出と解答のポーリングに使用されます。

$id = $solver->send(['file' => 'path/to/captcha.jpg', ...]);

sleep(20);

$code = $solver->getResult($id);

balance

このメソッドを使ってアカウントの残高を入手する。

$balance = $solver->balance();

report

このメソッドを使ってCAPTCHAの回答が良いか悪いかを報告する。

$solver->report($id, true); // captcha solved correctly
$solver->report($id, false); // captcha solved incorrectly

処理エラー

リクエスト処理中にサービスによって返されたスタンダードエラーの可能なバリアント

エラーが発生した場合CAPTCHAソルバーが例外を投げます。このようなケースを適切に処理することが必要です。例外に対処するにはtry/catchを使うことをおすすめします。

try {
    $result = $solver->text('If tomorrow is Saturday, what day is today?');
} catch (\TwoCaptcha\Exception\ValidationException $e) {
    // invalid parameters passed
} catch (\TwoCaptcha\Exception\NetworkException $e) {
    // network error occurred
} catch (\TwoCaptcha\Exception\ApiException $e) {
    // api respond with error
} catch (\TwoCaptcha\Exception\TimeoutException $e) {
    // captcha is not solved so far
}

サービスAPIと統合するための他の言語