Это самый простой способ быстро интегрировать 2Captcha в ваш код и автоматизировать решение любого типа капчи. Примеры API-запросов для различных типов капч доступны на странице Ruby captcha solver.
- Ruby 2Captcha API Client (captcha solver)
- Установка
- Настройка
- Решение капчи
- Обычная капча
- Текстовая капча
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- GeeTest V4
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
- Amazon WAF
- Cloudflare Turnstile
- Lemin Cropped Captcha
- Распознавание аудио
- CyberSiARA
- DataDome
- MTCaptcha
- Friendly captcha
- Cutcaptcha
- Tencent
- atbCAPTCHA
- Prosopo
- Captchafox
- Temu
- VK Captcha
- Altcha Captcha
- Другие методы
- Прокси
- Обработка ошибок
- Примеры
- Свяжитесь с нами
- Присоединяйтесь к команде 👪
- Лицензия
Автоматическая установка гема с помощью Bundler. Добавьте следующую строку в ваш Gemfile:
gem 'ruby-2captcha'Затем выполните следующую команду в терминале:
bundle installИли установите его самостоятельно, выполнив следующую команду в терминале:
gem install ruby-2captchaМы также приглашаем вас ознакомиться с нашим репозиторием на GitHub, где вы можете найти библиотеки и модули для простой интеграции с нашим API.
Описание всех необходимых параметров для настройки установленного гема.
Экземпляр класса Api2Captcha можно создать следующим образом:
require 'api_2captcha'
client = Api2Captcha.new("YOUR_API_KEY")У вас также есть возможность настроить некоторые параметры экземпляра Api2Captcha:
client.soft_id(123)
client.domain("https://rucaptcha.com/")
client.callback("https://your.site/result-receiver")
client.default_timeout(120)
client.polling_interval(10)Important
После определения обратного вызова для экземпляра, все методы возвращают только идентификатор капчи и НЕ запрашивают результат у API. Результат будет отправлен на URL обратного вызова.
Чтобы получить ответ вручную, используйте метод get_result.
При отправке любой капчи, основанной на изображении, вы можете предоставить дополнительные параметры, чтобы помочь работникам 2Captcha правильно её решить.
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
| numeric | 0 | Определяет, содержит ли капча числа или другие символы подробнее см. в документации по API |
| min_len | 0 | Минимальная длина ответа length |
| max_len | 0 | Максимальная длина ответа length |
| phrase | 0 | Определяет, содержит ли ответ несколько слов или нет |
| case_sensitive | 0 | Определяет, учитывается ли регистр в ответе |
| calc | 0 | Определяет, требуется ли вычисление в решении капчи |
| lang | - | Определяет язык капчи, см. список поддерживаемых языков |
| hint_image | - | Изображение с подсказкой, показываемое работникам с капчей, переведенное из параметра API instructionsimg |
| hint_text | - | Подсказка или текст задания, показываемые работникам с капчей |
Ниже вы найдете основные примеры для каждого типа капчи. Ознакомьтесь с кодом ниже.
Для обхода обычной капчи (искаженный текст на картинке) используйте следующий метод. Этот метод также может использоваться для распознавания любого текста на картинке.
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:'Если завтра суббота, то какой сегодня день?',
lang: "ru"
})Используйте этот метод для решения reCAPTCHA v2 и получения токена для обхода защиты.
result = client.recaptcha_v2({
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
pageurl: 'https://mysite.com/page/with/recaptcha_v2',
invisible: 1
})Этот метод предоставляет решение для 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/'
})Используйте этот метод для решения GeeTest v4. Он возвращает ответ в формате JSON.
result = client.geetest_v4({
captcha_id: 'e392e1d7fd421dc63325744d5a2b9c73',
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.
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',
recaptcharows: 3,
recaptchacols: 3,
previous_id: 0,
lang: 'en',
imginstructions: 'path/to/hint.jpg',
textinstructions: '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'
})Используйте этот метод для решения задания Lemin. Он возвращает JSON-ответ с указанными значениями: ответ (answer) и идентификатор задания (challenge_id).
result = client.lemin({
captcha_id: 'CROPPED_1abcd2f_a1234b567c890d12ef3a456bc78d901d',
div_id: 'lemin-cropped-captcha',
pageurl: 'https://www.site.com/page/',
api_server: "https://api.leminnow.com/"
})Используйте этот метод для решения задачи Cloudflare Turnstile. Он возвращает JSON с токеном.
result = client.turnstile({
sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
pageurl: 'http://mysite.com/'
})Используйте этот метод для решения Captcha Amazon WAF, также известного как AWS WAF Captcha, который является частью интеллектуальной защиты от угроз для Amazon AWS. Он возвращает JSON с токеном.
result = client.amazon_waf({
sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
iv: 'CgAHbCe2GgAAAAAj',
context: '9BUgmlm48F92WUoqv97a49ZuEJJ50TCk9MVr3C7WMtQ0X6flVbufM4n8mjFLmbLVAPgaQ1Jydeaja94iAS49ljb+sUNLoukWedAQZKrlY4RdbOOzvcFqmD/ZepQFS9N5w15Exr4VwnVq+HIxTsDJwRviElWCdzKDebN/mk8/eX2n7qJi5G3Riq0tdQw9+C4diFZU5E97RSeahejOAAJTDqduqW6uLw9NsjJBkDRBlRjxjn5CaMMo5pYOxYbGrM8Un1JH5DMOLeXbq1xWbC17YSEoM1cRFfTgOoc+VpCe36Ai9Kc=',
pageurl: 'https://non-existent-example.execute-api.us-east-1.amazonaws.com/latest',
challenge_script: "https://41bcdd4fb3cb.610cd090.us-east-1.token.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/challenge.js",
captcha_script: "https://41bcdd4fb3cb.610cd090.us-east-1.captcha.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/captcha.js"
})Этот метод можно использовать как для решения аудио капчи, так и для распознавания любой аудиозаписи.
Поддерживаемые языки: "en", "ru", "de", "el", "pt", "fr".
result = client.audio({
audio: 'path/to/audio.mp3',
lang: "en"
})Метод решения CyberSiARA. Он возвращает токен для обхода капчи.
result = client.cyber_siara({
pageurl: "https://test.com",
master_url_id: "12333-3123123"
})Метод решения DataDome вернет cookies для обхода капчи.
Important
Чтобы решить капчу DataDome вы должны обязательно использовать прокси. Рекомендуется использовать резидентные прокси.
result = client.data_dome({
pageurl: "https://test.com",
captcha_url: "https://test.com/captcha/",
proxytype: "http",
proxy: "proxyuser:strongPassword@123.123.123.123:3128"
})Метод решения MTCaptcha. Он возвращает токен для обхода капчи.
result = client.mt_captcha({
pageurl: "https://service.mtcaptcha.com/mtcv1/demo/index.html",
sitekey: "MTPublic-DemoKey9M"
})Метод решения Friendly captcha. Он возвращает токен для обхода капчи.
Important
Чтобы успешно использовать полученный токен, виджет капчи не должен быть загружен на странице. Для этого необходимо прервать запрос к /friendlycaptcha/...module.min.js на странице. Если виджет капчи уже загружен на странице, существует высокая вероятность, что полученный токен не будет работать.
result = client.friendly({
pageurl: "https://example.com",
sitekey: "2FZFEVS1FZCGQ9"
})Метод решения Cutcaptcha. Он возвращает токен для обхода капчи.
result = client.cutcaptcha({
misery_key: "a1488b66da00bf332a1488993a5443c79047e752",
api_key: "SAb83IIB",
pageurl: "https://example.cc/foo/bar.html"
})Основанный на токенах метод автоматизированного решения капчи Tencent.
result = client.tencent({
app_id: "197326679",
pageurl: "https://mysite.com/page/with/tencent"
})Основанный на токенах метод автоматизированного решения капчи atbCAPTCHA.
result = client.atb_captcha({
app_id: "197326679",
api_server: "api.atb_captcha.com",
pageurl: "https://mysite.com/page/with/atb_captcha"
})Основанный на токенах метод автоматизированного решения капчи Prosopo.
result = client.prosopo({
pageurl: "https://www.twickets.live/",
sitekey: "5EZVvsHMrKCFKp5NYNoTyDjTjetoVo1Z4UNNbTwJf1GfN6Xm"
})Основанный на токенах метод автоматизированного решения капчи Captchafox.
result = client.captchafox({
sitekey: "sitekey",
pageurl: "https://pageurl/",
api_server: "https://mam.example.com",
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/131.0.0.0 Safari/537.36",
proxytype: "socks5",
proxy: "proxyuser:strongPassword@123.123.123.123:3128"
})Основанный на токенах метод автоматизированного решения капчи Temu.
result = client.temu({
body: bodyStr,
part1: part1Str,
part2: part2Str,
part3: part3Str,
### VK Image
<sup>[API описание метода.](https://2captcha.com/2captcha-api#vkcaptcha)</sup>
Мы используем текст (изображение в формате base64) или файл (изображение как файл) и параметры steps.
Вы можете получить оба значения из ответа на запрос https://api.vk.com/method/captchaNotRobot.getContent?v={API_VER} при загрузке виджета captcha на страницу.
```ruby
result = client.vkimage({
image: '/9j/4AAQSkZJRgABAQAAAQABAAD/2...',
steps: '[5,19,14,14,6,4,8...]'
})Для метода, основанного на токенах, требуется параметр redirect_uri, а также прокси-сервер и UserAgent. Значение параметра redirect_uri можно найти в ответах на запросы к VK API, которые возвращают captcha.
result = client.vkcaptcha({
redirect_uri: 'https://id.vk.com/not_robot_captcha?domain=vk.com&session_token=eyJ....HGsc5B4LyvjA&variant=popup&blank=1',
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
})Используйте этот метод для решения капчи Altcha. В ответ возвращается токен.
result = client.altcha({
pageurl: 'https://mysite.com/page/with/altcha',
challenge: '{"algorithm":"SHA-256","challenge":"a4c9d8e7f1b23a6c...","signature":"7b3e2a9d5c8f1046e2d91c3a..."}'
# или:
# challenge_url: 'https://example.com/altcha-challenge'
})Эти методы могут быть использованы для ручного отправления капчи и получения результата.
# пример для обычной капчи
captcha_id = client.send('path/to/captcha.jpg')
# или для любой другой капчи
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)
# Получить готовый результат
result = client.get_result(captcha_id)Используйте этот метод, чтобы посмотреть баланс в вашем аккаунте.
balance = client.get_balanceИспользуйте этот метод для отправки отчета о правильном или неправильном ответе на капчу.
client.report(captcha_id, True) # капча решена правильно
client.report(captcha_id, False) # капча решена неправильноВы можете передать свой прокси-сервер в качестве дополнительного аргумента для методов: recaptcha, funcaptcha, geetest, geetest v4, keycaptcha, capy puzzle, lemin, turnstile, amazon waf, Cutcaptcha, Friendly captcha, MTCaptcha, DataDome, CyberSiARA и других. Передынный Прокси-сервер будет перенаправлен в API и будет использован для загрузки капчи.
У нас есть свои собственные прокси-серверы, которые мы можем вам предложить. Купить резидентские прокси чтобы избежать ограничений и блокировок. Быстрый старт.
Пример решения reCAPTCHA V2 с использованием прокси-сервера:
result = client.recaptcha_v2({
googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
pageurl: 'https://mysite.com/page/with/recaptcha_v2',
invisible: 1,
proxytype: "https",
proxy: "proxyuser:strongPassword@123.123.123.123:3128"
})В случае ошибки при решении капчи генерируется исключение. Важно правильно обрабатывать такие случаи. Мы рекомендуем использовать конструкцию begin rescue для обработки.
begin
result = client.text('Если завтра суббота, то какой сегодня день?')
rescue Api2Captcha::ValidationException => e
# переданы недопустимые параметры
puts(e)
rescue Api2Captcha::NetworkException => e
# возникла сетевая ошибка
puts(e)
rescue Api2Captcha::ApiException => e
# ошибка ответа от API
puts(e)
rescue Api2Captcha::TimeoutException => e
# капча до сих пор не решена
puts(e)
endПримеры решения поддерживаемых типов капчи находятся в директории examples.
Есть много способов внести свой вклад, и разработка - лишь один из них! Найдите свою следующую работу. Открытые вакансии: AI experts, scrapers, developers, technical support, и многое другое! 😍
Код в этом репозитории лицензируется по лицензии MIT. Более подробную информацию см. в файле LICENSE.
Графика и товарные знаки, включенные в этот репозиторий, не подпадают под действие лицензии MIT. За разрешениями на использование этих материалов обращайтесь в службу поддержки.