Это самый простой способ быстро интегрировать 2Captcha в ваш код и автоматизировать решение любого типа капчи. Примеры API-запросов для различных типов капч доступны на странице Ruby captcha solver.
- Ruby 2Captcha API Client (captcha solver)
- Свяжитесь с нами
- Присоединяйтесь к команде 👪
- Лицензия
Автоматическая установка гема с помощью 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:[email protected]: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"
})
Эти методы могут быть использованы для ручного отправления капчи и получения результата.
# пример для обычной капчи
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:[email protected]: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. За разрешениями на использование этих материалов обращайтесь в службу поддержки.