Skip to content

Latest commit

 

History

History
487 lines (388 loc) · 22.1 KB

README.ru.md

File metadata and controls

487 lines (388 loc) · 22.1 KB

Ruby 2Captcha API Client

Это самый простой способ быстро интегрировать 2Captcha в ваш код и автоматизировать решение любого типа капчи. Примеры API-запросов для различных типов капч доступны на странице Ruby captcha solver.

Ruby-клиент для API 2Captcha.

Установка

Автоматическая установка гема с помощью 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)

ВАЖНО: после определения обратного вызова для экземпляра , все методы возвращают только идентификатор капчи и НЕ запрашивают результат у 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

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

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

reCAPTCHA v3

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

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

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

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

hCaptcha

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

result = client.hcaptcha({
  sitekey: '10000000-ffff-ffff-ffff-000000000001',
  pageurl: 'https://www.site.com/page/'
})

KeyCaptcha

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

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

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

Grid

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

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

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

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

Rotate

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

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

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

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

Amazon WAF

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

GeeTest v4

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

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

Audio

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

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

CyberSiARA

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

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

DataDome

Метод решения DataDome вернет токен для обхода капчи. Чтобы решить капчу 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

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

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

Friendly captcha

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

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

Cutcaptcha

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

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

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

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)

Баланс

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

balance = client.get_balance

Отчет

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

client.report(captcha_id, True) # капча решена правильно
client.report(captcha_id, False) # капча решена неправильно

Прокси

Вы можете передать свой прокси-сервер в качестве дополнительного аргумента для методов: recaptcha, funcaptcha, geetest, geetest v4, hcaptcha, 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

Свяжитесь с нами

Присоединяйтесь к команде 👪

Есть много способов внести свой вклад, и разработка - лишь один из них! Найдите свою следующую работу. Открытые вакансии: AI experts, scrapers, developers, technical support, и многое другое! 😍

Лицензия

Код в этом репозитории лицензируется по лицензии MIT. Более подробную информацию см. в файле LICENSE.

Графика и товарные знаки

Графика и товарные знаки, включенные в этот репозиторий, не подпадают под действие лицензии MIT. За разрешениями на использование этих материалов обращайтесь в службу поддержки.