Skip to content

Latest commit

 

History

History
591 lines (435 loc) · 26 KB

README.ru.md

File metadata and controls

591 lines (435 loc) · 26 KB

Ruby 2Captcha API Client (captcha solver)

Это самый простой способ быстро интегрировать 2Captcha в ваш код и автоматизировать решение любого типа капчи. Примеры API-запросов для различных типов капч доступны на странице Ruby 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 - Подсказка или текст задания, показываемые работникам с капчей

Ниже вы найдете основные примеры для каждого типа капчи. Ознакомьтесь с кодом ниже.

Обычная капча

Описание метода API.

Для обхода обычной капчи (искаженный текст на картинке) используйте следующий метод. Этот метод также может использоваться для распознавания любого текста на картинке.

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

Текстовая капча

Описание метода API.

Этот метод может использоваться для обхода капчи, которая требует ответить на вопрос, представленный в явном виде.

result = client.text({
  textcaptcha:'Если завтра суббота, то какой сегодня день?',
  lang: "ru"
})

reCAPTCHA v2

Описание метода API.

Используйте этот метод для решения reCAPTCHA v2 и получения токена для обхода защиты.

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

reCAPTCHA v3

Описание метода API.

Этот метод предоставляет решение для 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

Описание метода API.

Метод решения 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

Описание метода API.

Метод для решения головоломки GeeTest captcha. Он возвращает набор токенов в формате JSON.

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

GeeTest v4

Описание метода API.

Используйте этот метод для решения GeeTest v4. Он возвращает ответ в формате JSON.

result = client.geetest_v4({
  captcha_id: 'e392e1d7fd421dc63325744d5a2b9c73',
  pageurl: 'https://www.site.com/page/'
})

KeyCaptcha

Описание метода API.

Метод на основе токенов для решения 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

Описание метода API.

Метод основан на использовании токенов для обхода паззла Capy.

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

Grid

Описание метода API.

Метод сетки изначально называется методом 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

Описание метода API.

Метод 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

Описание метода API.

Метод ClickCaptcha возвращает координаты точек на изображении капчи. Может быть использован, если вам необходимо кликнуть по определенным точкам на изображении.

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

Rotate

Описание метода API.

Этот метод может быть использован для решения капчи, которая просит повернуть объект. В основном используется для обхода 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 Cropped Captcha

Описание метода API.

Используйте этот метод для решения задания 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

Описание метода API.

Используйте этот метод для решения задачи Cloudflare Turnstile. Он возвращает JSON с токеном.

result = client.turnstile({
  sitekey: '0x1AAAAAAAAkg0s2VIOD34y5',
  pageurl: 'http://mysite.com/'
})

Amazon WAF

Описание метода API.

Используйте этот метод для решения 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"
})

Распознавание аудио

Описание метода API.

Этот метод можно использовать как для решения аудио капчи, так и для распознавания любой аудиозаписи.

Поддерживаемые языки: "en", "ru", "de", "el", "pt", "fr".

result = client.audio({
  audio: 'path/to/audio.mp3',
  lang: "en"
})

CyberSiARA

Описание метода API.

Метод решения CyberSiARA. Он возвращает токен для обхода капчи.

result = client.cyber_siara({
  pageurl: "https://test.com",
  master_url_id: "12333-3123123"
})

DataDome

Описание метода API.

Метод решения 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

Описание метода API.

Метод решения MTCaptcha. Он возвращает токен для обхода капчи.

result = client.mt_captcha({
  pageurl: "https://service.mtcaptcha.com/mtcv1/demo/index.html",
  sitekey: "MTPublic-DemoKey9M"
})

Friendly captcha

Описание метода API.

Метод решения Friendly captcha. Он возвращает токен для обхода капчи.

Important

Чтобы успешно использовать полученный токен, виджет капчи не должен быть загружен на странице. Для этого необходимо прервать запрос к /friendlycaptcha/...module.min.js на странице. Если виджет капчи уже загружен на странице, существует высокая вероятность, что полученный токен не будет работать.

result = client.friendly({
  pageurl: "https://example.com",
  sitekey: "2FZFEVS1FZCGQ9"
})

Cutcaptcha

Описание метода API.

Метод решения Cutcaptcha. Он возвращает токен для обхода капчи.

result = client.cutcaptcha({
  misery_key: "a1488b66da00bf332a1488993a5443c79047e752",
  api_key: "SAb83IIB",
  pageurl: "https://example.cc/foo/bar.html"
})

Tencent

Описание метода API.

Основанный на токенах метод автоматизированного решения капчи Tencent.

result = client.tencent({
  app_id: "197326679",
  pageurl: "https://mysite.com/page/with/tencent"
})

atbCAPTCHA

Описание метода API.

Основанный на токенах метод автоматизированного решения капчи atbCAPTCHA.

result = client.atb_captcha({
  app_id: "197326679",
  api_server: "api.atb_captcha.com",
  pageurl: "https://mysite.com/page/with/atb_captcha"
})

Другие методы

send / get_result

Эти методы могут быть использованы для ручного отправления капчи и получения результата.

# пример для обычной капчи
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)

Баланс

Описание метода API.

Используйте этот метод, чтобы посмотреть баланс в вашем аккаунте.

balance = client.get_balance

Отчет

Описание метода API.

Используйте этот метод для отправки отчета о правильном или неправильном ответе на капчу.

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. За разрешениями на использование этих материалов обращайтесь в службу поддержки.