Bypass captcha in Ruby
Ruby gem for easy integration with the API of captcha solving service to bypass reCAPTCHA, Arkose captcha, Geetest and solve any other captchas. This is the easiest way to quickly integrate 2Captcha solving service into code and automate solving of any type of captcha.
クイックスタートインストレーション
スクリプトパッケージはパッケージインストーラーを使うか手動でインストールできます
設定
インストール済みパッケージを設定するのに必要なすべてのパラメータの概要
Api2Captcha
クラスのインスタンスはこのように作成できます:
client = Api2Captcha.new('YOUR_API_KEY')
あなたも作成済みのインスタンスをカスタマイズする能力をお持ちです。
client = Api2Captcha.new("YOUR_API_KEY")
client.api_key = "YOUR_API_KEY"
Api2Captchaのインスタンスオプション
オプション | デフォルトの値 | 概要 |
---|---|---|
soft_id | - | 2Captcha ソフトウェアカタログで投稿した後に入手したソフトウェアID |
callback | - | CAPTCHA認証結果を受け取るウェブサーバーのURL。URLはご利用のアカウントのpingback設定でまずは登録してください。 |
default_timeout | 120 | reCAPTCHA以外のすべてのタイプのCAPTCHAで数秒経つとポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を入手しようとするか定義付けします。 |
recaptcha_timeout | 600 | reCAPTCHAでは数秒でポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を取得しようとするかを定義付けします。 |
polling_interval | 10 | res.php APIエンドポイントへのリクエストの合間の数秒ごとのインターバル。値を5秒以下にすることは推奨されていません。 |
重要事項: 一旦callback
がApi2Captcha
インスタンスに定義付けされると、 すべてのメソッドはCAPTCHA IDのみを返し、結果を得るためにAPIをポールしません。結果はcallback URLに送られます。解答を手動で入手するにはgetResultメソッドをご利用ください。
CAPTCHAを突破
画像ベースのCAPTCHAを提出する際には2Captchaの作業員が適切に回答するために、追加のオプションを提供することができます。
Captchaオプション
オプション | デフォルトの値 | 概要 |
---|---|---|
numeric | 0 | CAPTCHAが数字や他の記号を含むかどうかを定義付けします。API docでもっと詳しい情報を知りましょう。 |
min_len | 0 | 解答の最小の長さ |
max_len | 0 | 解答の最大の長さ |
phrase | 0 | 解答が複数の単語を含むかどうかを定義付けします。 |
case_sensitive | 0 | 解答が大文字と小文字を区別するかどうかを定義付けする |
calc | 0 | CAPTCHAが計算を要求することを定義付けする |
lang | - | CAPTCHAの言語を定義付けします。a href='/2captcha-api#language'>対応する言語のリストをご確認ください。 |
hint_image | - | CAPTCHAで作業者にヒントを示す画像 |
hint_text | - | CAPTCHAで作業者に示されたヒントやタスクテキスト |
- Normal Captcha
- Text Captcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- 回転
Normal CAPTCHA(画像の上の歪んだテキスト)をバイパスするには次のメソッドを使ってください。このメソッドは画像のテキストを認証するのにも使われます。
result = client.normal({ image: 'path/to/captcha.jpg'})
# OR
result = client.normal({
image: 'https://site-with-captcha.com/path/to/captcha.jpg'
})
このメソッドははっきりとしたテキストの中で提供される質問に解答することを要求するCAPTCHAをバイパスするのに使われます。
result = client.text({
textcaptcha:'If tomorrow is Saturday, what day is today?',
lang: "en"
})
reCAPTCHA V2を突破するのにこのメソッドを使い、保護をバイパスするためにトークンを取得しましょう。
result = client.recaptcha_v2({
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
pageurl: 'https://mysite.com/page/with/recaptcha_v2'
})
このメソッドはreCAPTCHA V3ソルバーを提供し、トークンを返します。
result = client.recaptcha_v3({
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
pageurl: 'https://mysite.com/page/with/recaptcha_v3',
version: 'v3',
score: 0.3,
action: 'verify'
})
FunCaptcha (Arkoselabs)突破メソッド。トークンを返します。
result = client.funcaptcha({
publickey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
pageurl: "https://mysite.com/page/with/funcaptcha",
surl: "https://client-api.arkoselabs.com"
})
GeeTestパズルCAPTCHAを突破する方法。JSONとしてトークンのセットを返します。
result = client.geetest({
gt: 'f1ab2cdefa3456789012345b6c78d90e',
api_server: 'api-na.geetest.com',
challenge: '12345678abc90123d45678ef90123a456b',
pageurl: 'https://www.site.com/page/'
})
KeyCAPTCHAを突破するトークンベースの方法
result = client.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',
pageurl: 'https://www.keycaptcha.ru/demo-magnetic/'
})
CapyパズルCAPTCHAをバイパスするためのトークンベースメソッド
result = client.capy({
sitekey: 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
pageurl: 'http://mysite.com/',
api_server: 'https://jp.api.capy.me/'
})
Gridメソッドは元々はOld reCAPTCHA V2と呼ばれていました。このメソッドは画像でグリッドを適用し、特定のグリッドボックスをクリックすることを要求するタイプのCAPTCHAをバイパスするために使用されます。ボックスの数を返します。
result = client.grid({
image: 'path/to/captcha.jpg',
rows: 3,
cols: 3,
previous_id: 0,
lang: 'en',
hint_image: 'path/to/hint.jpg',
hint_text: 'Select all images with an Orange'
})
Canvasメソッドは画像にあるオブジェクトの周りに線を引く必要があるときに使われます。多角形を描くために、ポイントのセットを返します。
result = client.canvas({
image: 'path/to/captcha.jpg',
previous_id: 0,
lang: 'en',
hint_image: 'path/to/hint.jpg',
hint_text: 'Draw around apple'
})
ClickCaptchaメソッドはCAPTCHA画像上で座標上のポイントを返します。画像の特定のポイントをクリックする必要があるときに使われます。
result = client.coordinates({
image: 'path/to/captcha.jpg',
lang: 'en',
hint_image: 'path/to/hint.jpg',
hint_text: 'Connect the dots'
})
このメソッドはアイテムを回転させることを尋ねるCAPTCHAに使用されます。ほとんどの場合FunCaptchaのバイパスに使われます。回転の角度を返します。
result = client.rotate({
image: 'path/to/captcha.jpg',
angle: 40,
lang: 'en',
hint_image: 'path/to/hint.jpg',
hint_text: 'Put the images in the correct way'
})
その他のメソッド
メインスクリプトの作業中に使用される追加の有効なメソッド
send / get_result
このようなメソッドは手動CAPTCHA提出と解答のポーリングに使用されます。
# example for normal captcha
captcha_id = client.send('path/to/captcha.jpg')
# or for another captcha, for example for lemin
captcha_id = client.send({
method:"lemin",
captcha_id: "CROPPED_3dfdd5c_d1872b526b794d83ba3b365eb15a200b",
api_server: "api.leminnow.com",
div_id: "lemin-cropped-captcha",
pageurl: "https://www.site.com/page/"
})
time.sleep(20)
# Get result
result = client.get_result(captcha_id)
get_balance
このメソッドを使ってアカウントの残高を入手する。
balance = client.get_balance
report
このメソッドを使ってCAPTCHAの回答が良いか悪いかを報告する。
client.report(captcha_id, True) # captcha solved correctly
client.report(captcha_id, False) # captcha solved incorrectly
処理エラー
リクエスト処理中にサービスによって返されたスタンダードエラーの可能なバリアント
If case of an error captcha solver throws an exception. It's important to properly handle these cases. We recommend to use begin/rescue
to handle exceptions.
begin
result = client.text('If tomorrow is Saturday, what day is today?')
rescue Api2Captcha::ValidationException => e
# invalid parameters passed
puts(e)
rescue Api2Captcha::NetworkException => e
# network error occurred
puts(e)
rescue Api2Captcha::ApiException => e
# api respond with error
puts(e)
rescue Api2Captcha::TimeoutException => e
# captcha is not solved so far
puts(e)
end