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.
Szybki startInstalacja
Pakiet skryptu można zainstalować za pomocą instalatora pakietu lub ręcznie
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
Option | Default value | Description |
---|---|---|
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_timeout | 120 | Limit 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_timeout | 600 | Limit czasu odpytywania reCAPTCHA w sekundach. Definiuje jak długo moduł próbuje uzyskać odpowiedź z punktu końcowego API res.php |
polling_interval | 10 | Odstę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 zdefiniowaniucallback
dla instancjiApi2Captcha
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
Opcja | Domyślna wartość | Opis |
---|---|---|
numeric | 0 | Określa, czy captcha zawiera symbole numeryczne lub inne zobacz więcej informacji w dokumentacji interfejsu API |
min_len | 0 | minimalna długość odpowiedzi |
max_len | 0 | maksymalna długość odpowiedzi |
phrase | 0 | określa, czy odpowiedź zawiera wiele słów, czy nie |
case_sensitive | 0 | określa, czy w odpowiedzi jest rozróżniana wielkość liter |
calc | 0 | definiuje 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 |
- Normal Captcha
- Text Captcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
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'
})
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"
})
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'
})
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'
})
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"
})
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/'
})
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/'
})
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/'
})
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'
})
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'
})
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'
})
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