Goを使ってCAPTCHAをバイパス
Go langモジュールを使ってオンラインでCAPTCHA突破
reCAPTCHA、Arkose captcha、Geetest、その他のCAPTCHAをバイパス、解除する2Captcha CAPTCHA突破サービスのAPIと簡単に統合するためのGolangパッケージ。
クイックスタートインストレーション
スクリプトパッケージはパッケージインストーラーを使うか手動でインストールできます
GitHub
APIクライアントをインストールするにはこちらをご利用ください:
go get -u github.com/2captcha/2captcha-goAPIと簡単に統合するためのライブラリとモジュールが見つかる弊社のGitHubレポジトリをご参照ください。
設定
インストール済みパッケージを設定するのに必要なすべてのパラメータの概要
クライアントインスタンスはこのように作成できます:
client := api2captcha.NewClient('YOUR_API_KEY')あなたも作成済みのインスタンスをカスタマイズする能力をお持ちです。
client.SoftId = 123
client.Callback = "https://your.site/result-receiver"
client.DefaultTimeout = 120
client.RecaptchaTimeout = 600
client.PollingInterval = 100クライアントインスタンスのオプション
| オプション | デフォルトの値 | 概要 |
|---|---|---|
| softId | - | 2Captcha ソフトウェアカタログで投稿した後に入手したソフトウェアID |
| callback | - | CAPTCHA認証結果を受け取るウェブサーバーのURL。URLはご利用のアカウントのpingback設定でまずは登録してください。 |
| defaultTimeout | 120 | reCAPTCHA以外のすべてのタイプのCAPTCHAで数秒経つとポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を入手しようとするか定義付けします。 |
| recaptchaTimeout | 600 | reCAPTCHAでは数秒でポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を取得しようとするかを定義付けします。 |
| pollingInterval | 10 | res.php APIエンドポイントへのリクエストの合間の数秒ごとのインターバル。値を5秒以下にすることは推奨されていません。 |
重要事項: 一旦callbackがクライアントインスタンスに定義付けされると、すべてのメソッドはCAPTCHA IDを返し、結果を取得するためにAPIをポールしません。結果はcallback URLに送信されます。解答を手動で取得するにはgetResultメソッドを使ってください。
CAPTCHAを突破
画像ベースのCAPTCHAを提出する際には2Captchaの作業員が適切に回答するために、追加のオプションを提供することができます。
Captchaオプション
| オプション | デフォルトの値 | 概要 |
|---|---|---|
| numeric | 0 | CAPTCHAが数字や他の記号を含むかどうかを定義付けします。API docでもっと詳しい情報を知りましょう。 |
| minLength | 0 | 解答の最小の長さ |
| maxLength | 0 | 解答の最大の長さ |
| phrase | 0 | 解答が複数の単語を含むかどうかを定義付けします。 |
| caseSensitive | 0 | 解答が大文字と小文字を区別するかどうかを定義付けする |
| calc | 0 | CAPTCHAが計算を要求することを定義付けする |
| lang | - | CAPTCHAの言語を定義付けします。a href='/2captcha-api#language'>対応する言語のリストをご確認ください。 |
| hintImg | - | CAPTCHAで作業者にヒントを示す画像 |
| hintText | - | CAPTCHAで作業者に示されたヒントやタスクテキスト |
基本例
下のサンプルはエラーハンドリングと共に基本的なソルバーコールのサンプルを示します。
cap := api2captcha.Normal{
File: "/path/to/normal.jpg",
}
code, err := client.Solve(cap.ToRequest())
if err != nil {
if err == api2captcha.ErrTimeout {
log.Fatal("Timeout");
} else if err == api2captcha.ErrApi {
log.Fatal("API error");
} else if err == api2captcha.ErrNetwork {
log.Fatal("Network error");
} else {
log.Fatal(err);
}
}
fmt.Println("code "+code)