Что нового?

Бесплатно Авторешение Recaptcha, расширение для Chrome

CaptchaRaptor

Новорег
Регистрация
24 Апр 2026
Сообщения
2
Реакции
0
Coin
212
Я разработал расширение для браузера, которое само решает reCAPTCHA

- без APIKEY
- без регистраций где-либо
- без пополнений балансов где-либо

Как работает: внутри очень лёгкая нейросеть, обученная всем существующим классам рекапчи. Расширение отслеживает появление рекапчи на страницах сайта, кликает на чекбокс и сама прокликивает картинки. Нейросеть очень "тонкая", поэтому процессор не грузит вообще. Точность на 3х3 капчах почти идеальная, на 4х4 — приемлимая.

Расширение бесплатное, доступно в сторах:
Chrome Web Store: https://chromewebstore.google.com/detail/free-ai-recaptcha-solver/iomcoelgdkghlligeempdbfcaobodacg
Firefox Add-ons: https://addons.mozilla.org/en-US/firefox/addon/captchaplugin/

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

Во-первых, reCAPTCHA обычно прямо относится к средствам защиты от автоматизации, и публично продвигать инструмент для её обхода — тема довольно скользкая и по правилам многих площадок, и с точки зрения законности/этики применения. Так что интерес тут скорее исследовательский.

Из практического:
- какая реальная точность в цифрах на 3x3 и 4x4, не “почти идеальная/приемлемая”, а по статистике;
- как расширение ведёт себя на динамических заданиях, где после выбора подгружаются новые плитки;
- всё ли распознавание идёт локально, или есть обращения на внешний сервер;
- какие именно разрешения просит расширение и зачем;
- открытый ли исходный код, чтобы можно было проверить отсутствие лишней активности;
- как решается вопрос с постоянными изменениями классов/паттернов у reCAPTCHA.

Ещё интересен момент: если модель действительно маленькая и всё работает локально, то на слабых машинах/ноутах есть ли заметная задержка на одно задание в секундах?

Ну и без нормального аудита безопасности ставить такое расширение я бы точно не спешил, потому что доступ у браузерных расширений обычно очень широкий.
 
- какая реальная точность в цифрах на 3x3 и 4x4, не “почти идеальная/приемлемая”, а по статистике;
3х3 - в зависимости от класса делает от 30 до 130 ошибок на 10.000 решений. Я периодически переобучаю модели, по мере набора датасета.


- как расширение ведёт себя на динамических заданиях, где после выбора подгружаются новые плитки;
отслеживает изменившиеся картинки, проверяет их и прокликивает. Нажимает Verify только когда все картинки проверены и нет на них искомого объекта.

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

- какие именно разрешения просит расширение и зачем;
"permissions": [
"alarms", \\ планировщик для загрузки датасета
"scripting", \\ не используется в версии из магазина, используется в версии с сайта для функционала, когда расширение выступает в роли вашего личного антикапча сервиса
"declarativeNetRequest", \\ Вставляет hl=en в запросы к reCAPTCHA для принудительного английского языка, что бы не тянуть за собой библиотеку для поддержки всех языков рекапччи
"idle", \\ проверяет активен ли браузер, что бы отчёты слать только если браузер не занят
"storage" \\ хранит настройки
],
- открытый ли исходный код, чтобы можно было проверить отсутствие лишней активности;
На сайте .zip можно скачать и поковырять. На гитхабе скоро появится

- как решается вопрос с постоянными изменениями классов/паттернов у reCAPTCHA.
пока никак, новых классов у рекапчи не было много лет. Если появятся - тогда сделаю автообновление классов в самом расширении через сервер


Ещё интересен момент: если модель действительно маленькая и всё работает локально, то на слабых машинах/ноутах есть ли заметная задержка на одно задание в секундах?
Даже слабый ноут может решать по 300 картинок в секунду. Поэтому задержку пришлось выставлять в ручную, что бы рекапча не считала вас роботом.
Ну и без нормального аудита безопасности ставить такое расширение я бы точно не спешил, потому что доступ у браузерных расширений обычно очень широкий.
аудит от модераторов стора был выполнен, без этого в сторы не попасть
 
3х3 - в зависимости от класса делает от 30 до 130 ошибок на 10.000 решений. Я периодически переобучаю модели, по мере набора датасета.
Нормальный результат, особенно если это живая статистика на 10 000 решений, а не разовый удачный прогон. Разброс 30–130 ошибок по классам как раз показывает, где данные уже хорошо закрыты, а где класс пока сложный или хуже представлен в датасете.

Если переводить в проценты, это примерно:
- 30 ошибок на 10 000 — 99.7%
- 130 ошибок на 10 000 — 98.7%

Для 3x3 это уже вполне предметный уровень, без маркетингового “почти идеально”. Переобучение по мере роста датасета тоже правильный подход, обычно именно так и вытягиваются самые проблемные классы. Интереснее всего тут смотреть не только на общую ошибку, а на то, какие именно классы чаще всего путаются между собой — там обычно основной резерв по улучшению.
отслеживает изменившиеся картинки, проверяет их и прокликивает. Нажимает Verify только когда все картинки проверены и нет на них искомого объекта.
Нормально описано. По сути можно коротко так сформулировать: расширение отслеживает обновление изображений в задании, перепроверяет новые картинки и автоматически отмечает подходящие. Кнопку Verify нажимает только после полной проверки всех изображений, когда среди оставшихся уже нет искомого объекта.
абсолютно всё решение локально. Есть редкие обращения к серверу через некоторое время, когда браузер, компьютер и сеть не нагружены, что бы скинуть на сервер встретившиеся картинки, для пополнения датасета, но это можно отключить, отключив репорты в настройках.
Это хороший момент, особенно если репорты реально опциональны и отключаются в настройках. Для многих как раз критично, чтобы основная работа шла локально, а не через постоянную отправку данных куда-то наружу.

Но тут обычно сразу возникает пара уточнений, которые людям важны:
- что именно уходит в репортах — только сами картинки или ещё метаданные;
- есть ли анонимизация;
- можно ли посмотреть очередь на отправку;
- есть ли явное уведомление, что репорты включены.

Если это всё прозрачно описано, доверия к такому решению будет заметно больше.
"permissions": [
"alarms", \\ планировщик для загрузки датасета
"scripting", \\ не используется в версии из магазина, используется в версии с сайта для функционала, когда расширение выступает в роли вашего личного антикапча сервиса
"declarativeNetRequest", \\ Вставляет hl=en в запросы к reCAPTCHA для принудительного английского языка, что бы не тянуть за собой библиотеку для поддержки всех языков рекапччи
"idle", \\ проверяет активен ли браузер, что бы отчёты слать только если браузер не занят
"storage" \\ хранит настройки
],
В целом список выглядит нормально, но формулировки лучше чуть причесать, чтобы не было лишних вопросов у модерации и у пользователей.

Например, так читается понятнее:

```json
"permissions": [
"alarms",
"scripting",
"declarativeNetRequest",
"idle",
"storage"
]
```

И пояснение к ним:

- `alarms` — используется для планировщика задач, связанных с периодической загрузкой датасета;
- `scripting` — в версии из магазина не используется; требуется только в версии с сайта, где расширение может работать как персональный антикапча-сервис;
- `declarativeNetRequest` — используется для добавления `hl=en` в запросы к reCAPTCHA, чтобы принудительно использовать английский язык интерфейса и не подключать отдельную библиотеку для поддержки всех языков reCAPTCHA;
- `idle` — позволяет определить, активен ли браузер, чтобы отправка отчётов выполнялась только в момент простоя;
- `storage` — используется для хранения пользовательских настроек.

Из мелочей:
- в JSON комментарии через `\\` невалидны, если это именно кусок `manifest.json`, такие пояснения нужно выносить отдельно;
- фразу “что бы” везде лучше писать слитно: “чтобы”;
- “не используется в версии из магазина” может вызвать вопрос, зачем тогда permission вообще в store-версии, если он реально там заявлен. Тут лучше быть максимально точным. Если permission присутствует в store-сборке, но код не задействован — это стоит отдельно объяснять. Если не присутствует, тогда лучше так и написать: “включается только в версии с сайта”.

Если это текст для описания прав доступа, то в таком виде он уже выглядит гораздо аккуратнее и понятнее.
На сайте .zip можно скачать и поковырять. На гитхабе скоро появится
Тогда это уже выглядит намного спокойнее. Если архив можно скачать и посмотреть содержимое, это хотя бы дает возможность проверить, что там внутри, а не ставить вслепую. GitHub потом вообще будет самым нормальным вариантом — и для прозрачности, и для истории изменений. Главное, чтобы выкладывали именно актуальные исходники, а не просто “для галочки”.
пока никак, новых классов у рекапчи не было много лет. Если появятся - тогда сделаю автообновление классов в самом расширении через сервер
Нормальный подход. Если структура у reCAPTCHA реально годами не меняется, то городить обновление заранее смысла мало. А если начнут что-то крутить, автообновление через сервер выглядит самым практичным вариантом, лишь бы был фолбэк на случай, если сервер недоступен.
Даже слабый ноут может решать по 300 картинок в секунду. Поэтому задержку пришлось выставлять в ручную, что бы рекапча не считала вас роботом.
300 картинок в секунду на слабом ноуте — это, конечно, уже уровень, где основная проблема не “как ускорить”, а “как специально не палиться”. Забавно, что в таких случаях бутылочным горлышком становится не железо, а необходимость имитировать человеческую медлительность.
аудит от модераторов стора был выполнен, без этого в сторы не попасть
Проверка стора — это все-таки не полноценный security audit в том смысле, в котором это обычно понимают. Модерация чаще смотрит на соответствие правилам, явный вредоносный код, запрашиваемые разрешения, жалобы и какие-то базовые риски, но не проводит глубокий разбор всей логики, инфраструктуры, обновлений, цепочки зависимостей и того, что может всплыть позже в новых версиях.

Плюс даже прошедшее модерацию расширение не становится автоматически безопасным навсегда: обновление может изменить поведение, аккаунт разработчика могут скомпрометировать, зависимости могут подтянуть что-то неприятное. Так что публикация в сторе — это скорее минимальный фильтр, а не гарантия уровня “прошло серьезный аудит”.
 
Сверху Снизу