C#を使ってCAPTCHAをバイパス
自動CAPTCHA入力のためにC#ライブラリを統合しましょう。APIはどのスクリプトにでも統合できます。
reCAPTCHA、Arkose captcha、Geetest、その他のCAPTCHAをバイパス、解除する2CaptchaCAPTCHA突破サービスのAPIと簡単に統合するためのCSharpパッケージ
クイックスタートインストレーション
スクリプトパッケージはパッケージインストーラーを使うか手動でインストールできます
NuGet
ライブラリパッケージを自動インストールするにはCSharpパッケージのスタンダードソリューション、NuGetを使う必要があります。こちらのリンクからダウンロードし、説明に従ってインストールしてください。アプリケーションをインストールした後、要求されるライブラリパッケージをインストールしてください。
弊社のGitHubレポジトリを閲覧してください。APIで簡単に統合するためのライブラリやモジュールが見つかります。
設定
インストール済みパッケージを設定するのに必要なすべてのパラメータの概要
TwoCaptcha
クラスのインスタンスはこのように作成できます:
TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');
あなたも作成済みのインスタンスをカスタマイズする能力をお持ちです。
solver.SoftId = 123;
solver.Callback = "https://your.site/result-receiver";
solver.DefaultTimeout = 120;
solver.RecaptchaTimeout = 600;
solver.PollingInterval = 10;
TwoCaptchaのインスタンスオプション
オプシ ョン | デフォルトの値 | 概要 |
---|---|---|
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
がTwoCaptcha
インスタンスに定義付けされると、 すべてのメソッドは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で作業者に示されたヒントやタスクテキスト |
基本例
下のサンプルはエラーハンドリングと共に基本的なソルバーコールのサンプルを示します。
Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetMinLen(4);
captcha.SetMaxLen(20);
captcha.SetCaseSensitive(true);
captcha.SetLang("en");
try
{
await solver.Solve(captcha);
Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (Exception e)
{
Console.WriteLine("Error occurred: " + e.Message);
}
- Normal Captcha
- Text Captcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- 回転
Normal CAPTCHA(画像の上の歪んだテキスト)をバイパスするには次のメソッドを使ってください。このメソッドは画像のテキストを認証するのにも使われます。
Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetNumeric(4);
captcha.SetMinLen(4);
captcha.SetMaxLen(20);
captcha.SetPhrase(true);
captcha.SetCaseSensitive(true);
captcha.SetCalc(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Type red symbols only");
このメソッドははっきりとしたテキストの中で提供される質問に解答することを要求するCAPTCHAをバイパスするのに使われます。
Text captcha = new Text();
captcha.SetText("If tomorrow is Saturday, what day is today?");
captcha.SetLang("en");
reCAPTCHA V2を突破するのにこのメソッドを使い、保護をバイパスするためにトーク ンを取得しましょう。
ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.SetUrl("https://mysite.com/page/with/recaptcha");
captcha.SetInvisible(true);
captcha.SetAction("verify");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
このメソッドはreCAPTCHA V3ソルバーを提供し、トークンを返します。
ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.SetUrl("https://mysite.com/page/with/recaptcha");
captcha.SetVersion("v3");
captcha.SetDomain("google.com");
captcha.SetAction("verify");
captcha.SetScore(0.3);
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
FunCaptcha (Arkoselabs)突破メソッド。トークンを返します。
FunCaptcha captcha = new FunCaptcha();
captcha.SetSiteKey("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
captcha.SetUrl("https://mysite.com/page/with/funcaptcha");
captcha.SetSUrl("https://client-api.arkoselabs.com");
captcha.SetUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36");
captcha.SetData("anyKey", "anyValue");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
GeeTestパズルCAPTCHAを突破する方法。JSONとしてトークンのセットを返します。
GeeTest captcha = new GeeTest();
captcha.SetGt("f2ae6cadcf7886856696502e1d55e00c");
captcha.SetApiServer("api-na.geetest.com");
captcha.SetChallenge("12345678abc90123d45678ef90123a456b");
captcha.SetUrl("https://mysite.com/captcha.html");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
KeyCAPTCHAを突破するトークンベースの方法
KeyCaptcha captcha = new KeyCaptcha();
captcha.SetUserId(10);
captcha.SetSessionId("493e52c37c10c2bcdf4a00cbc9ccd1e8");
captcha.SetWebServerSign("9006dc725760858e4c0715b835472f22");
captcha.SetWebServerSign2("2ca3abe86d90c6142d5571db98af6714");
captcha.SetUrl("https://www.keycaptcha.ru/demo-magnetic/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
CapyパズルCAPTCHAをバイパスするためのトークンベースメソッド
Capy captcha = new Capy();
captcha.SetSiteKey("PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v");
captcha.SetUrl("https://www.mysite.com/captcha/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
Gridメソッドは元々はOld reCAPTCHA V2と呼ばれていました。このメソッドは画像でグリッドを適用し、特定のグリッドボックスをクリックすることを要求するタイプのCAPTCHAをバイパスするために使用されます。ボックスの数を返します。
Grid captcha = new Grid();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetRows(3);
captcha.SetCols(3);
captcha.SetPreviousId(0);
captcha.SetCanSkip(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Select all images with an Orange");
Canvasメソッドは画像にあるオブジェクトの周りに線を引く必要があるときに使われます。多角形を描くために、ポイントのセットを返します。
Canvas captcha = new Canvas();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetPreviousId(0);
captcha.SetCanSkip(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Draw around apple");
ClickCaptchaメソッドはCAPTCHA画像上で座標上のポイントを返します。画像の特定のポイントをクリックする必要があるときに使われます。
Coordinates captcha = new Coordinates();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Select all images with an Orange");
このメソッドはアイテムを回転させることを尋ねるCAPTCHAに使用されます。ほとんどの場合FunCaptchaのバイパスに使われます。回転の角度を返します。
Rotate captcha = new Rotate();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetAngle(40);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Put the images in the correct way up");
その他のメソッド
メインスクリプトの作業中に使用される追加の有効なメソッド
send / getResult
このようなメソッドは手動CAPTCHA提出と解答のポーリングに使用されます。
string captchaId = await solver.Send(captcha);
Task.sleep(20 * 1000);
string code = await solver.GetResult(captchaId);
balance
このメソッドを使ってアカウントの残高を入手する。
double balance = await solver.Balance();
report
このメソッドを使ってCAPTCHAの回答が良いか悪いかを報告する。
await solver.Report(captcha.Id, true); // captcha solved correctly
await solver.Report(captcha.Id, false); // captcha solved incorrectly
処理エラー
リクエスト処理中にサービスによって返されたスタンダードエラーの可能なバリアント
CAPTCHAソルバーが例外として提出したエラーについて。この例外を扱うにはtry/catch
を使うことをおすすめします。
try
{
await solver.Solve(captcha);
}
catch (ValidationException e)
{
// invalid parameters passed
}
catch (NetworkException e)
{
// network error occurred
}
catch (ApiException e)
{
// api respond with error
}
catch (TimeoutException e)
{
// captcha is not solved so far
}