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 | - | ваш ID програмного забезпечення, отриманий після публікації в каталог програм 2Captcha |
callback | - | URL вашого веб-сервера, який отримує результат розпізнавання капчі. URL повинен бути спочатку зареєстрований у налаштуваннях pingback вашого облікового запису |
default_timeout | 120 | Таймаут опитування за секунди для всіх типів капчі, крім reCAPTCHA. Визначає, як довго модуль намагається отримати відповідь кінцевої точки API res.php |
recaptcha_timeout | 600 | Таймаут опитування reCAPTCHA за секунди. Визначає, як довго модуль намагається отримати відповідь кінцевої точки API res.php |
polling_interval | 10 | Інтервал у секундах між запитами до кінцевої точки API res.php , встановлення значень менше 5 секунд не рекомендується |
ВАЖЛИВО: як тількиcallback
визначено для одного екземпляра класуApi2Captcha
, всі інші методи повертають тільки ID капчі та НЕ опитують API для отримання результату. Результат буде надіслано на Callback URL. Щоб отримати відповідь вручну, використовуйте метод getResult
Рішення капчі
Коли ви відправляєте будь-яку графічну капчу, ви можете передавати додаткові параметри, які допоможуть працівникам 2Captcha вирішити її швидко та правильно.
Опції капчі
Опція | Значення за замовчуванням | Опис |
---|---|---|
numeric | 0 | визначає, чи містить капча числові або інші символи, докладніше див. у документац ії API |
min_len | 0 | мінімальна довжина відповіді |
max_len | 0 | максимальна довжина відповіді |
phrase | 0 | визначає, чи містить відповідь кілька слів чи ні |
case_sensitive | 0 | визначає, чи чутлива відповідь до регістру |
calc | 0 | визначає капчу, яка потребує розрахунку |
lang | - | визначає мову капчі, дивіться список мов, що підтримуються |
hint_image | - | зображення з підказкою, показане працівникам за допомогою капчі |
hint_text | - | підказка або текст завдання, що показується працівникам за допомогою капчі |
- Проста капча
- Текстова капча
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
Щоб обійти звичайну капчу (перекручений текст на зображенні), використовуйте наступний метод. Цей метод можна також використовувати для розпізнавання будь-якого тексту на зображенні.
result = client.normal({ image: 'path/to/captcha.jpg'})
# OR
result = client.normal({
image: 'https://site-with-captcha.com/path/to/captcha.jpg'
})
Цей метод можна використовувати для обходу капчі, яка вимагає відповіді на запитання у вигляді відкритого тексту
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 (Аркоселабс). Повертає токен для обходу капчі
result = client.funcaptcha({
publickey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
pageurl: "https://mysite.com/page/with/funcaptcha",
surl: "https://client-api.arkoselabs.com"
})
Метод вирішення капчі головоломки GeeTest. Повертає набір токенів у форматі 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 puzzle
result = client.capy({
sitekey: 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
pageurl: 'http://mysite.com/',
api_server: 'https://jp.api.capy.me/'
})
Цей метод спочатку називався Old reCAPTCHA V2. Його можна використовувати для обходу будь-якого типу капчі, коли ви можете застосувати сітку до зображення і потрібно клацнути певні поля сітки. Повертає кількість осередків сітки
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 повертає координати точок на зображенні капчі. Може використовуватися, якщо потрібно клацнути певні точки на зображенні.
result = client.coordinates({
image: 'path/to/captcha.jpg',
lang: 'en',
hint_image: 'path/to/hint.jpg',
hint_text: 'Connect the dots'
})
Цей спосіб можна використовуватиме рішення капчі, яка просить повернути об'єкт. В основному використовується для обходу 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
Цей метод можна використовувати для ручної передачі капчі та отримання відповідей.
# 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
Використовуйте цей метод, щоб повідомити про правильне або неправильне рішення капчі.
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