Как обойти reCAPTCHA V2, reCAPTCHA V3 различными способами?

Сколько бы не писали о том, что капча давно себя изжила и в уже не работает так эффективно, как хотелось бы изначально их разработчикам, однако, владельцы интернет ресурсов продолжают защищать свои проекты именно капчей, а какая наиболее популярная капча современности? Это reCAPTCHA.

Уточнение – весь код, который будет представлен в указанной статье подготовлен на основании документации АПИ сервиса распознавания капчи 2капча

ReCAPTCHA V2, V3 и т.п. reCAPTCHA, которые созданы компанией Гугл в далеком 2007 году. Прошло уже много лет с момента появления первой reCAPTCHA, но она продолжает удерживать пальму первенства, периодически немного сдавая позиции конкурентам и отвоевывая их обратно. Но ни разу reCAPTCHA не занимала 2 место по популярности, несмотря на все ее несовершенство перед нейросетями.

Было огромное количество попыток сделать «убийцу рекапчи», какие-то были менее успешными, какие-то только выглядели как угроза reCAPTCHA, а на деле оказывались пшиком, но факт остается фактом, желание конкурентов сделать что-то лучше и надежнее reCAPTCHA демонстрирует ее популярность.

Виды reCAPTCHA

ReCAPTCHA можно классифицировать по трем версиям

  • reCAPTCHA V1
  • reCAPTCHA V2
  • reCAPTCHA V3

Каждая из них – это улучшенная версия предыдущей reCAPTCHA. Давайте разберемся подробнее:

Как распознать reCAPTCHA V1? Легко!

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

Юзеру предлагалось ввести текст в специальном окне, сейчас что-то подобное еще можно встретить на старых ресурсах, но на нормальных площадках уже никто не использует reCAPTCHA V1.

ReCAPTCHA V1 была первой версией, представленной в 2007 году. Она использовала искаженный текст из сканированных книг, который пользователи должны были ввести, чтобы доказать, что они не боты. Эта система использовала ввод пользователей для оцифровки книг, газет и старых радиошоу.

Именно в период, когда Гугл внедрил первую версию reCAPTCHA начали появляться auto recaptcha solvers, которые без особого труда обходили текстовую капчу. Сперва их обучали на массиве и после чего запускали в работу, со временем такие солверы делали все меньше и меньше ошибок и экономили владельцу кучу времени и средств.

С текстовой капчей хорошо справляются всевозможные приложения для распознования капчи, например в Хроме.

reCAPTCHA v2 – Как распознать картинки? Где текст?

После осознания того, что текстовые капчи больше не работают, была создана новая V2 капча, которая была призвана убрать раздражение юзеров от навязчивости первой версии, повысить безопасность при защите проектов и в целом, улучшить пользовательский опыт.

Вторая версия reCAPTCHA представляет собой пустое поле, при клике по которому появляется галочка, что капча пройдена, либо выскакивает окно со светофорами, которые требовалось найти. Светофоры, это конечно же метафора, вместо светофоров нужно было искать различные предметы. Уверен, вы все понимаете о чем идет речь.

Флажок («Я не робот»): Самый простой вид проверки, где пользователю нужно просто нажать на флажок. Система анализирует поведение пользователя, чтобы определить, человек это или бот.

Задачи с изображениями: Если система сомневается, она предлагает пользователям выбрать определенные объекты на изображениях (например, «Выберите все изображения с светофорами»).

И для того, чтобы распознать reCaptcha v2 старых способов не хватало, и многие авторешатели прекратили нормально работать, рынок начал перестраиваться и продолжает развиваться даже сейчас, так как появляются все новые и новые параметры, которые учитываются при решении reCAPTCHA.

Несмотря на новизну, вторая версия также сильно раздражала обычных людей и негатив никуда не делся. Система была несовершенна, что побудило компанию Гугл идти вперед и создавать новые продукты.

Гугл reCAPTCHA v3 как обойти, то что невидно?

Решение не раздражать пользователя преследовало компанию Гугл на всех этапах создания reCAPTCHA, но как этого добиться? Путем скрытия reCAPTCHA, так третья версия стала невидимой. Она работает в фоновом режиме, непрерывно отслеживая действия пользователя на сайте и присваивая им оценку риска (от 0.0 до 1.0) на основе их поведения.

Веб-сайты могут устанавливать пороги для оценок риска, определяя уровень взаимодействия или проверки в зависимости от предполагаемого риска. Если владелец хочет максимально улучшить пользовательский опыт, он выставляет менее высокий score и наоборот. Таким образом компания Гугл предоставила владельцам выбор между пользовательским опытом и защитой, найти баланс в этом случае не так и сложно.

Обход reCAPTCHA

Зачем в принципе нужно обходить reCAPTCHA? Если ты рядовой пользователь и просто посещаешь веб ресурс, ты можешь решить эту проблему самостоятельно, но другой вопрос, когда тебе необходимо анализировать и тестировать системы своего ресурса на устойчивость к нагрузкам либо для улучшения пользовательского опыта, или для автоматизации рутинных задач.

Большой объем капчи решить вручную не получится. Для этого разработчики создают всевозможные программы, модули, библиотеки, скрипты и тп для того чтобы обойти reCAPTCHA. Выкладывают свои наработки на githab и другие площадки. Я рассмотрел три основных языка программирования, которые считаются наиболее популярными для автоматизации рутинных задач и собрал топ модулей для распознавания капчи, а также описал как решить reCAPTCHA вручную (без использования готовых модулей)

Python и reCAPTCHA, как решать reCAPTCHA на python?

Наиболее популярный язык программирования, безусловно Python, код для этого языка программирования ищут в 5 из 10 случаев, когда гуглят «Как обойти рекапчу» в интернете (не учитывая запросов, которые содержат приставку python, типа таких – «как обойти рекапчу на питоне» и тп.

Проще всего это все будет реализовать с использованием модулей, которые нужно просто подключить в исполняемом файле, изучив интернет я выделил следующие популярные модули, с помощью которых можно распознать reCAPTCHA (кстати, с помощью всех этих модулей можно распознать и другие типы капч):

Модуль для Python 2капча для обхода reCAPTCHA

Официальный модуль от сервиса распознавания капчи 2капча, разработан для легкой интеграции с их АПИ, модуль обладает расширенным функционалом и поддерживает настройку прокси. Модуль поддерживается и регулярно обновляется, может быть использован при парсинге веб-ресурсов и автоматизации.

Сервис идеален для пользователей, которые делают упор в распознавании капчи на надежность, а также кому требуется официальная поддержка от сервиса 2капча.

Модуль поддерживает асинхронные операции.

Модуль для распознавания Google reCAPTCHA для Питон

Модуль для решения reCAPTCHA и некоторых других популярных капч (ReCaptcha (v2, v3), FunCaptcha и hCaptcha). Основное отличие его от предыдущего модуля в том, что он более узконаправленный (поддерживает меньшее количество капч) и может менее гибко реагировать на обновления со стороны reCAPTCHA, по сравнению с предыдущим официальным модулем.

2Captcha-solver поддерживает настройку прокси и особенно полезен для задач, требующих высокой производительности, благодаря поддержке асинхронных операций, что позволяет одновременно решать несколько reCAPTCHA.

Модуль написанный под Python - решатель Рекапчи

Многофункциональный модуль, основной упор которого делается на поддержку нескольких сервисов распознавания капчи. Функционал модуля примерно похож на предыдущие два, он поддерживает настройку прокси и асинхронные операции.

Исходя из того, что модуль позволяет интегрировать распознавание капчи через несколько сервисов, то у него есть уникальная функция — перебор сервисов. То есть, вы можете использовать один сервис в качестве остального, а другие в качестве резервных, и когда у вас, к примеру, закончаться средства на основном сервисе, или если основной сервис не справился с задачей, капча уйдет в резервный и будет решена. Таким образом ваш скрипт будет более автоматизированным и не будет зависить от стабильности одного конкретного сервиса.

Модуль для распознавания рекапчи на Python (для Селениума)

Это узконаправленный модуль, который используется для легкой интеграции с Selenium и Playwright, и поддерживает все виды reCAPTCHA.

Модуль можно использовать без необходимости установки дополнительных расширений и для начала потребуется только ключ АПИ.

Его главное отличие от предыдущих модулей — то что twocaptcha-extension-python будет сложно использовать для вопросов автоматизации, где не используется Selenium или Playwright, так как используется исключительно для перечисленных сервисов.

Модуль для распознавания reCAPTCHA V2 и V3 на Питон

Модуль который напоминает по функционалу captchatools, и его можно назвать аналогом указанного сервиса. То есть, вы можете использовать один из них на выбор.

Все характеристики совпадают: поддержка нескольких сервисов, перебор сервисов в процессе распознавания капчи, асинхронные операции, настройка прокси. Все это есть и тут. Различается лишь разработчик.

Ну и предположение от меня, скорее всего оба эти сервиса будут чуть медленнее реагировать на изменения, которые происходят в сервисах распознавания капчи и которые делают разработчики капч, чем официальные модули.

Хочется также отметить, что все перечисленные сервисы (а не только Twocaptcha-extension-python) могут использоваться вместе с Selenium и Playwright, отличие будет лишь в подключении и синхронизации.

Как обойти reCAPTCHA используя Python (пример кода)

Если не доверяете никаким сторонним модулям, я подготовил максимально универсальный код, который можно с небольшими доработками вставить в ваш скрипт, написанный на Питоне и решать reCAPTCHA автоматически. Вот сам код:

import requests import time API_KEY = 'ваш_ключ_API_2Captcha' def solve_recaptcha_v2(site_key, url): payload = { 'key': API_KEY, 'method': 'userrecaptcha', 'googlekey': site_key, 'pageurl': url, 'json': 1 } response = requests.post('https://2captcha.com/in.php', data=payload) result = response.json() if result['status'] != 1: raise Exception(f"Ошибка при отправке капчи: {result['request']}") captcha_id = result['request'] while True: time.sleep(5) response = requests.get(f"https://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1") result = response.json() if result['status'] == 1: print("Капча решена успешно.") return result['request'] elif result['request'] == 'CAPCHA_NOT_READY': print("Капча еще не решена, ожидаем...") continue else: raise Exception(f"Ошибка при решении капчи: {result['request']}") def solve_recaptcha_v3(site_key, url, action='verify', min_score=0.3): payload = { 'key': API_KEY, 'method': 'userrecaptcha', 'googlekey': site_key, 'pageurl': url, 'version': 'v3', 'action': action, 'min_score': min_score, 'json': 1 } response = requests.post('https://2captcha.com/in.php', data=payload) result = response.json() if result['status'] != 1: raise Exception(f"Ошибка при отправке капчи: {result['request']}") captcha_id = result['request'] while True: time.sleep(5) response = requests.get(f"https://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1") result = response.json() if result['status'] == 1: print("Капча решена успешно.") return result['request'] elif result['request'] == 'CAPCHA_NOT_READY': print("Капча еще не решена, ожидаем...") continue else: raise Exception(f"Ошибка при решении капчи: {result['request']}") # Пример использования для reCAPTCHA v2 site_key_v2 = 'ваш_site_key_v2' url_v2 = 'https://example.com' recaptcha_token_v2 = solve_recaptcha_v2(site_key_v2, url_v2) print(f"Полученный токен для reCAPTCHA v2: {recaptcha_token_v2}") # Пример использования для reCAPTCHA v3 site_key_v3 = 'ваш_site_key_v3' url_v3 = 'https://example.com' recaptcha_token_v3 = solve_recaptcha_v3(site_key_v3, url_v3) print(f"Полученный токен для reCAPTCHA v3: {recaptcha_token_v3}")

Однако, перед тем как использовать предоставленный скрипт, внимательно ознакомьтесь с рекомендациями сервиса, по распознаванию того или иного типа reCAPTCHA, чтобы иметь представление о том, как работает этот код.

Также, не забудьте подставить в коде ваш ключ АПИ и конечно же, установить необходимые модули.

JavaScript и reCAPTCHA, как распознать reCAPTCHA на javascript с помощью модулей

Второй по популярности язык, для которого пользователи ищут способы обхода reCAPTCHA – node js, примерно 3 из 10 запросов по обходу reCAPTCHA приходятся на этот язык программирования.

Как и в случае с Python проще всего распознать reCAPTCHA через специальные модули, тем более, что сервисы распознавания капчи заинтересованы в упрощении работы для своих клиентов и многие создают и поддерживают такие модули, вот список наиболее популярных из них.

Модуль для распознавания reCAPTCHA с использованием Javascript

Официальный модуль для node js от сервиса распознавания капчи 2капча, поддерживает большинство известных типов капчи, в том числе reCAPTCHA. Важное отличие этого модуля от остальных — поддержка TypeScript что делает его удобным для разработки различных приложений.

Все базовые настройки, включая асинхронные операции, настройка прокси и т. п в модуле присутсвуют, что делают его универсальным модулем для решения большиства типов капчи. Ну и факт того, что модуль создан сервисом 2капча позволяет сделать вывод о его надежности.

Javascript модуль 2captcha для обхода reCAPTCHA

Также явлется официальным модулем для распознавания основных видов капчи от сервиса 2капча и поддерживает все те же настройки, что и предыдущий модуль (за исключение поддержки TypeScript), но мне показалось, что он создан больше с упором на простоту интеграции и быстрое начало работы.

Он более легкий, чем предыдущий и он как и его предшественник решает главную задачу — обходит reCAPTCHA. Так что если вам просто необходимо, чтобы ваш скрипт (программа), написанная на node js решала reCAPTCHA, используйте этот модуль, а если нужна более глубокая интеграция, присмотритесь к предыдущему модулю.

Модуль для обхода Рекапчи на Javascript

Модуль заточенный для интеграции с Puppeteer и позволяет решать reCAPTCHA и другие популярные виды капчи.

Помимо того, что этот модуль заточен под Puppeteer, он предоставляет возможность выбора провайдера, решающего капчу, что также позволяет настроить перебор сервисов (как было описано в блоке про модули для Python).

Хочется отметить, что два предыдущих модуля могут быть интегрированы в Puppeteer, но captcha-solver предоставлет решение «из коробки», то есть поставил и забыл, тогда как в случае с 2captcha и 2captcha-javascript может потребоваться ручная обработка результатов или настройка этой обработки.

Javascript модуль чтоы обойти reCAPTCHA

Модуль от сторонних рабработчиков, который поддерживает решение reCAPTCHA, а также некоторых других популяных типов капчи. В модуле интегрировано несколько сервисов распознавания капчи, что позволяет настроить перебор сервисов (один сделать главным, а остальные резервными)

Сервис является альтернативой 2captcha и 2captcha-javascript, но возможны задержки в обновлении, так как модуль поддерживается не официальными сервисами, а в остальном функционал у него похож на конкурентов.

Как обойти reCAPTCHA на Node js

Как в случе с Python, для тех, кто не любит уже готовые решения, ниже приведу скрипт для решения капчи с использованием языка программирования node js. Напоминаю, не забудьте установить необходимые модули для работы кода, в том числе:

axios

Установить его можно с помощью такой команды –

npm install axios

Вот и сам код:

const axios = require('axios'); const sleep = require('util').promisify(setTimeout); const API_KEY = 'ВАШ_API_КЛЮЧ_2CAPTCHA'; // Замените на ваш реальный API ключ // Функция для решения reCAPTCHA v2 async function solveReCaptchaV2(siteKey, pageUrl) { try { // Отправляем запрос на решение капчи const sendCaptchaResponse = await axios.post(`http://2captcha.com/in.php`, null, { params: { key: API_KEY, method: 'userrecaptcha', googlekey: siteKey, pageurl: pageUrl, json: 1 } }); if (sendCaptchaResponse.data.status !== 1) { throw new Error(`Ошибка при отправке капчи: ${sendCaptchaResponse.data.request}`); } const requestId = sendCaptchaResponse.data.request; console.log(`Капча отправлена, ID запроса: ${requestId}`); // Ожидаем решение капчи while (true) { await sleep(5000); // Ждем 5 секунд перед следующим запросом const getResultResponse = await axios.get(`http://2captcha.com/res.php`, { params: { key: API_KEY, action: 'get', id: requestId, json: 1 } }); if (getResultResponse.data.status === 1) { console.log('Капча решена успешно.'); return getResultResponse.data.request; } else if (getResultResponse.data.request === 'CAPCHA_NOT_READY') { console.log('Капча еще не решена, ожидаем...'); } else { throw new Error(`Ошибка при решении капчи: ${getResultResponse.data.request}`); } } } catch (error) { console.error(`Произошла ошибка: ${error.message}`); } } // Функция для решения reCAPTCHA v3 async function solveReCaptchaV3(siteKey, pageUrl, action = 'verify', minScore = 0.3) { try { // Отправляем запрос на решение капчи const sendCaptchaResponse = await axios.post(`http://2captcha.com/in.php`, null, { params: { key: API_KEY, method: 'userrecaptcha', googlekey: siteKey, pageurl: pageUrl, version: 'v3', action: action, min_score: minScore, json: 1 } }); if (sendCaptchaResponse.data.status !== 1) { throw new Error(`Ошибка при отправке капчи: ${sendCaptchaResponse.data.request}`); } const requestId = sendCaptchaResponse.data.request; console.log(`Капча отправлена, ID запроса: ${requestId}`); // Ожидаем решение капчи while (true) { await sleep(5000); // Ждем 5 секунд перед следующим запросом const getResultResponse = await axios.get(`http://2captcha.com/res.php`, { params: { key: API_KEY, action: 'get', id: requestId, json: 1 } }); if (getResultResponse.data.status === 1) { console.log('Капча решена успешно.'); return getResultResponse.data.request; } else if (getResultResponse.data.request === 'CAPCHA_NOT_READY') { console.log('Капча еще не решена, ожидаем...'); } else { throw new Error(`Ошибка при решении капчи: ${getResultResponse.data.request}`); } } } catch (error) { console.error(`Произошла ошибка: ${error.message}`); } } // Пример использования для reCAPTCHA v2 (async () => { const siteKeyV2 = 'ВАШ_SITE_KEY_V2'; // Замените на реальный site key const pageUrlV2 = 'https://example.com'; // Замените на реальный URL страницы const tokenV2 = await solveReCaptchaV2(siteKeyV2, pageUrlV2); console.log(`Полученный токен для reCAPTCHA v2: ${tokenV2}`); })(); // Пример использования для reCAPTCHA v3 (async () => { const siteKeyV3 = 'ВАШ_SITE_KEY_V3'; // Замените на реальный site key const pageUrlV3 = 'https://example.com'; // Замените на реальный URL страницы const action = 'homepage'; // Замените на соответствующее действие const minScore = 0.5; // Задайте минимальный допустимый балл const tokenV3 = await solveReCaptchaV3(siteKeyV3, pageUrlV3, action, minScore); console.log(`Полученный токен для reCAPTCHA v3: ${tokenV3}`); })();

Не забудьте, также, подставить в код свой ключ АПИ, вместо

«'ВАШ_API_КЛЮЧ_2CAPTCHA'»

PHP и reCAPTCHA, как распознать reCAPTCHA на php с помощью модулей

И третий по популярности язык, для которого пользователи ищут способ обхода reCAPTCHA – php. Предлагаю начать с модулей, как и в первых двух случаях и закончить кодом. Итак, наболее популярные модули для решения reCAPTCHA на PHP следующие:

Модуль для обхода reCAPTCHA в Хроме

Этот модуль позволяет легко интегрировать API 2Captcha в ваш PHP-код для решения CAPTCHA. Он поддерживает такие типы CAPTCHA, как ReCaptcha, FunCaptcha, GeeTest, и другие. Модуль предназначен для быстрой настройки и использования, включая поддержку текстовых CAPTCHA и ReCaptcha v3. Он также поддерживает различные методы для работы с изображениями и аудиофайлами.

Как распознать reCAPTCHA используя PHP

Модуль, предоставляющий удобный интерфейс для интеграции с различными CAPTCHA-сервисами, включая 2Captcha. Поддерживает различные типы CAPTCHA, такие как reCAPTCHA и FunCaptcha. Этот модуль ориентирован на легкость использования и быструю настройку.

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

Как распознать reCAPTCHA на PHP

Ну и для тех, кто не привык использовать готовые модули, вот код для интеграции напрямую. Код использует стандартные функции PHP, такие как file_get_contents и json_decode, вот сам код:

<?php function solveRecaptchaV2($apiKey, $siteKey, $url) { $requestUrl = "http://2captcha.com/in.php?key={$apiKey}&method=userrecaptcha&googlekey={$siteKey}&pageurl={$url}&json=1"; $response = file_get_contents($requestUrl); $result = json_decode($response, true); if ($result['status'] != 1) { throw new Exception("Ошибка при отправке капчи: " . $result['request']); } $captchaId = $result['request']; while (true) { sleep(5); $resultUrl = "http://2captcha.com/res.php?key={$apiKey}&action=get&id={$captchaId}&json=1"; $response = file_get_contents($resultUrl); $result = json_decode($response, true); if ($result['status'] == 1) { return $result['request']; } elseif ($result['request'] == 'CAPCHA_NOT_READY') { continue; } else { throw new Exception("Ошибка при решении капчи: " . $result['request']); } } } function solveRecaptchaV3($apiKey, $siteKey, $url, $action = 'verify', $minScore = 0.3) { $requestUrl = "http://2captcha.com/in.php?key={$apiKey}&method=userrecaptcha&googlekey={$siteKey}&pageurl={$url}&version=v3&action={$action}&min_score={$minScore}&json=1"; $response = file_get_contents($requestUrl); $result = json_decode($response, true); if ($result['status'] != 1) { throw new Exception("Ошибка при отправке капчи: " . $result['request']); } $captchaId = $result['request']; while (true) { sleep(5); $resultUrl = "http://2captcha.com/res.php?key={$apiKey}&action=get&id={$captchaId}&json=1"; $response = file_get_contents($resultUrl); $result = json_decode($response, true); if ($result['status'] == 1) { return $result['request']; } elseif ($result['request'] == 'CAPCHA_NOT_READY') { continue; } else { throw new Exception("Ошибка при решении капчи: " . $result['request']); } } } // Пример использования для reCAPTCHA v2 $apiKey = 'ВАШ_API_КЛЮЧ_2CAPTCHA'; $siteKeyV2 = 'ВАШ_SITE_KEY_V2'; $urlV2 = 'https://example.com'; try { $tokenV2 = solveRecaptchaV2($apiKey, $siteKeyV2, $urlV2); echo "Полученный токен для reCAPTCHA v2: {$tokenV2}\n"; } catch (Exception $e) { echo "Ошибка: " . $e->getMessage() . "\n"; } // Пример использования для reCAPTCHA v3 $siteKeyV3 = 'ВАШ_SITE_KEY_V3'; $urlV3 = 'https://example.com'; $action = 'homepage'; // Укажите соответствующее действие $minScore = 0.5; // Укажите минимальный допустимый балл try { $tokenV3 = solveRecaptchaV3($apiKey, $siteKeyV3, $urlV3, $action, $minScore); echo "Полученный токен для reCAPTCHA v3: {$tokenV3}\n"; } catch (Exception $e) { echo "Ошибка: " . $e->getMessage() . "\n"; } ?>

Также напоминаю о необходимости заменить некоторые параметры в коде, в частности:

$apiKey = 'ВАШ_API_КЛЮЧ_2CAPTCHA'; $siteKeyV2 = 'ВАШ_SITE_KEY_V2'; $urlV2 = 'https://example.com';

Таким образом, используя приведенные примеры, вы можете закрыть большую часть вопросов, связанных с распознаванием reCAPTCHA. Можете задавать вопросы в комментариях, если они остались!

11
1 комментарий

Ты сломал капчу

Ответить