Обход капчи на Ruby
Быстрое распознавание и обход различных капч с использованием Ruby. Используйте клиент Ruby и API сервиса решения капч для автоматического обхода reCAPTCHA, Arkose captcha, Geetest и других капч.
Быстрый стартУстановка
Пакет скриптов можно установить с помощью установщика пакетов или вручную
Конфигурация
Описание всех необходимых параметров для конфигурирования установленного пакета
Экземпляр класса 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. Определяет, как долго SDK пытается получить ответ от конечной точки API res.php |
| recaptcha_timeout | 600 | Таймаут опроса reCAPTCHA в секундах. Определяет, как долго SDK пытается получить ответ от конечной точки 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'
})