• Logo „PHP“
  • Logo „Python“
  • Logo „Java“
  • Logo „C#“
  • Logo „Ruby“
  • Logo „Golang“
  • Logo „JavaScript“
Bypass captcha in Ruby

Bypass captcha in Ruby
Logo „Ruby“
  • Logo „PHP“
  • Logo „Python“
  • Logo „Java“
  • Logo „C#“
  • Logo „Ruby“
  • Logo „Golang“
  • Logo „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.

Szybki start

Instalacja

Pakiet skryptu można zainstalować za pomocą instalatora pakietu lub ręcznie

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.

Konfiguracja

Opis wszystkich niezbędnych parametrów do konfiguracji zainstalowanego pakietu

Instancję klasy Api2Captcha można utworzyć w następujący sposób:

client = Api2Captcha.new('YOUR_API_KEY')

Masz również możliwość dostosowania niektórych opcji dla tworzonej instancji:

client = Api2Captcha.new("YOUR_API_KEY")
client.api_key = "YOUR_API_KEY"
Opcje instancji Api2Captcha
OptionDefault valueDescription
soft_id-Twój identyfikator oprogramowania uzyskany po opublikowaniu w 2Captcha software catalog
callback-Adres URL Twojego serwera WWW, który otrzymuje wynik rozpoznawania captcha. Adres URL należy najpierw zarejestrować w ustawieniach pingback na swoim koncie
default_timeout120Limit czasu odpytywania w sekundach dla wszystkich typów captcha z wyjątkiem reCAPTCHA. Definiuje jak długo moduł próbuje uzyskać odpowiedź z punktu końcowego API res.php
recaptcha_timeout600Limit czasu odpytywania reCAPTCHA w sekundach. Definiuje jak długo moduł próbuje uzyskać odpowiedź z punktu końcowego API res.php
polling_interval10Odstęp w sekundach między żądaniami do punktu końcowego API res.php, ustawianie wartości mniejszych niż 5 sekund nie jest zalecane
WAŻNE: po zdefiniowaniu callback dla instancji Api2Captcha wszystkie metody zwracają tylko identyfikator captcha i NIE odpytuj interfejsu API, aby uzyskać wynik. Wynik zostanie wysłany na adres URL wywołania zwrotnego. Aby uzyskać odpowiedź ręcznie, użyj metody getResult

Rozwiąż test captcha

Gdy przesyłasz obraz captcha, użycie captcha może zapewnić dodatkowe opcje, które pomogą pracownikom 2Captcha w prawidłowym rozwiązaniu problemu

Opcje captcha
OpcjaDomyślna wartośćOpis
numeric0Określa, czy captcha zawiera symbole numeryczne lub inne zobacz więcej informacji w dokumentacji interfejsu API
min_len0minimalna długość odpowiedzi
max_len0maksymalna długość odpowiedzi
phrase0określa, czy odpowiedź zawiera wiele słów, czy nie
case_sensitive0określa, czy w odpowiedzi jest rozróżniana wielkość liter
calc0definiuje captcha wymaga obliczeń
lang-definiuje język captcha, zobacz listę obsługiwanych języków
hint_image-obrazek z podpowiedzią pokazywany pracownikom za pomocą captcha
hint_text-podpowiedź lub tekst zadania pokazywany pracownikom za pomocą captcha
simpleCaptcha

Aby ominąć normalne captcha (zniekształcony tekst na obrazie), użyj następującej metody. Ta metoda może być również używana do rozpoznawania dowolnego tekstu na obrazie.

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

Ta metoda może służyć do ominięcia captcha, która wymaga odpowiedzi na pytanie podane w postaci zwykłego tekstu.

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

Użyj tej metody, aby rozwiązać reCAPTCHA V2 i uzyskać token, aby ominąć ochronę.

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

Ta metoda zapewnia solver reCAPTCHA V3 i zwraca token.

result = client.recaptcha_v3({
  googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  pageurl: 'https://mysite.com/page/with/recaptcha_v3',
  version: 'v3',
  score: 0.3,
  action: 'verify'
})
funCaptcha

Metoda rozwiązywania FunCaptcha (Arkoselabs). Zwraca token.

result = client.funcaptcha({
  publickey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
  pageurl: "https://mysite.com/page/with/funcaptcha",
  surl: "https://client-api.arkoselabs.com"
})
geeTest

Metoda rozwiązywania GeeTest puzzle captcha. Zwraca zestaw tokenów w formacie JSON.

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

Oparta na tokenach metoda rozwiązywania 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

Oparta na tokenach metoda ominięcia Capy puzzle captcha.

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

Metoda siatki jest pierwotnie nazywana starą metodą reCAPTCHA V2. Metodę można wykorzystać do pominięcia dowolnego typu captcha, w którym można zastosować siatkę do obrazu i kliknąć określone pola siatki. Zwraca numery pudełek.

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

Metodę Canvas można zastosować, gdy trzeba narysować linię wokół obiektu na obrazie. Zwraca zestaw współrzędnych punktów do narysowania wielokąta.

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

Metoda ClickCaptcha zwraca współrzędne punktów na obrazie captcha. Może być użyty, jeśli musisz kliknąć w określone punkty na obrazie.

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

Tej metody można użyć do rozwiązania captcha, które prosi o obrócenie obiektu. Używany głównie do ominięcia FunCaptcha. Zwraca kąt obrotu.

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'
})

Inne metody

Dodatkowe poprawne metody stosowane podczas pracy nad głównymi skryptami

send / get_result

Te metody mogą być używane do ręcznego przesyłania captcha i odpytywania odpowiedzi.

# 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

Użyj tej metody, aby uzyskać saldo swojego konta.

balance = client.get_balance

report

Użyj tej metody, aby zgłosić dobrą lub złą odpowiedź captcha.

client.report(captcha_id, True) # captcha solved correctly
client.report(captcha_id, False) # captcha solved incorrectly

Obsługa błędów

Możliwe warianty standardowych błędów zwracanych przez usługę podczas przetwarzania żądań

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

Inne języki do integracji z API usługi