• 「PHP」ロゴ
  • 「Python」ロゴ
  • 「Java」ロゴ
  • 「C#」ロゴ
  • 「Ruby」ロゴ
  • 「Golang」ロゴ
  • 「JavaScript」ロゴ
Bypass captcha in Ruby

Bypass captcha in Ruby
「Ruby」ロゴ
  • 「PHP」ロゴ
  • 「Python」ロゴ
  • 「Java」ロゴ
  • 「C#」ロゴ
  • 「Ruby」ロゴ
  • 「Golang」ロゴ
  • 「JavaScript」ロゴ

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.

クイックスタート

インストレーション

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

Bundler

To install a gem, you can use the bundler package manager. Download it from the link and install according to the instructions.

# Gemfile
gem 'ruby-2captcha'

We invite you to explore our GitHub repository where you can find ruby API client for easy integration with our API.

設定

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

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_timeout120reCAPTCHA以外のすべてのタイプのCAPTCHAで数秒経つとポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を入手しようとするか定義付けします。
recaptcha_timeout600reCAPTCHAでは数秒でポーリングがタイムアウトします。res.php APIエンドポイントからモジュールがどれくらいの時間解答を取得しようとするかを定義付けします。
polling_interval10res.php APIエンドポイントへのリクエストの合間の数秒ごとのインターバル。値を5秒以下にすることは推奨されていません。
重要事項: 一旦callbackApi2Captchaインスタンスに定義付けされると、 すべてのメソッドはCAPTCHA IDのみを返し、結果を得るためにAPIをポールしません。結果はcallback URLに送られます。解答を手動で入手するにはgetResultメソッドをご利用ください。

CAPTCHAを突破

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

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

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

result = client.normal({ image: 'path/to/captcha.jpg'})
# OR
result = client.normal({
  image: 'https://site-with-captcha.com/path/to/captcha.jpg'
})
textCaptcha

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

result = client.text({
  textcaptcha:'If tomorrow is Saturday, what day is today?',
  lang: "en"
})
recaptchaV2

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

result = client.recaptcha_v2({
  googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  pageurl: 'https://mysite.com/page/with/recaptcha_v2'
})
recaptchaV3

このメソッドは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

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

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

result = client.geetest({
  gt: 'f1ab2cdefa3456789012345b6c78d90e',
  api_server: 'api-na.geetest.com',
  challenge: '12345678abc90123d45678ef90123a456b',
  pageurl: 'https://www.site.com/page/'
})
keyCaptcha

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

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

result = client.capy({
  sitekey: 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
  pageurl: 'http://mysite.com/',
  api_server: 'https://jp.api.capy.me/'
})
grid

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

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

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

result = client.coordinates({
  image: 'path/to/captcha.jpg',
  lang: 'en',
  hint_image: 'path/to/hint.jpg',
  hint_text: 'Connect the dots'
})
rotateCaptcha

このメソッドはアイテムを回転させることを尋ねる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

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