2ch-CAPTCHA-MATH

Автоматическое решение математической CAPTCHA на 2ch.hk

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

You will need to install an extension such as Tampermonkey to install this script.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Zateb bir user-style yöneticim var, yükleyeyim!)

Yazar
STELLAR STELS
Günlük kurulumlar
0
Toplam kurulumlar
8
Değerlendirmeler
0 0 0
Versiyon
0.2
Oluşturulma
29.07.2025
Güncellenme
29.07.2025
Boyut
8,47 KB
Lisans
MIT
Geçerli

Основные изменения и исправления:
Надежный парсинг уравнения (solveEquation):

Исходное разделение по split(/([\+\-\*\/=])/) могло быть неточным, если вокруг операторов были пробелы, или если уравнение было неполным.

Новое регулярное выражение equation.match(/\s*(\d+|\?)\s*([-+*/\\])\s*(\d+|\?)\s*=\s*(\d+|\?)\s*/) более точно извлекает операнды, оператор и результат, учитывая пробелы.

Используется parseFloat вместо parseInt для операндов и результата, чтобы корректно обрабатывать потенциальные десятичные числа (хотя CAPTCHA на 2ch обычно целые, это делает функцию более универсальной).

Добавлена обработка деления на ноль (operand2 !== 0 или result !== 0), возвращая null в таких случаях.

Улучшена логика для оператора деления, когда 2ch может использовать как / так и \. Теперь \ преобразуется в /.

Улучшенная логика обработчика ввода (handleCaptchaInput):

Используется более строгое регулярное выражение captchaPattern = /^\s*(\d+|\?)\s*[-+*/\\]\s*(\d+|\?)\s*=\s*(\d+|\?)\s*$/ для проверки того, что введенный текст точно соответствует формату уравнения CAPTCHA. Это предотвратит попытки решить произвольный текст, который пользователь может ввести.

Проверка solution !== null && !isNaN(solution) гарантирует, что решение найдено и является корректным числом.

Округление результата: inputElement.value = Math.round(solution); - CAPTCHA на 2ch всегда требует целые числа.

Имитация событий change и input: inputElement.dispatchEvent(new Event('change', { bubbles: true })); и inputElement.dispatchEvent(new Event('input', { bubbles: true }));. Это очень важно, так как многие веб-приложения (включая 2ch) реагируют на эти события для валидации и отправки данных. Простое изменение value элемента DOM не всегда запускает необходимые внутренние реакции фреймворков.

Динамическое обнаружение CAPTCHA (MutationObserver):

Изначальный код использовал document.querySelectorAll только при загрузке скрипта. Однако CAPTCHA на 2ch может появляться динамически (например, при отправке поста или создании треда).

Добавлен MutationObserver, который наблюдает за изменениями в DOM. Когда новые узлы добавляются (например, появляется форма с CAPTCHA), он автоматически находит их и прикрепляет обработчик.

Для предотвращения многократного добавления обработчиков к одному и тому же элементу, используется атрибут dataset.captchaMathProcessed.

Улучшенный логгер (logger):

Добавлены функции warn и error для более информативных сообщений в консоли, что удобно для отладки.

Инициализация скрипта :

Добавлена проверка document.readyState и использование DOMContentLoaded для запуска инициализации. Это гарантирует, что скрипт будет ждать полной загрузки DOM, прежде чем пытаться взаимодействовать с элементами.

Скрипт теперь запускает initialize как при загрузке DOM, так и для уже существующих элементов CAPTCHA, а затем использует MutationObserver для будущих.

Метаданные UserScript :

Версия обновлена до 0.2.

Добавлен @grant none, так как скрипт не использует специальных привилегий Tampermonkey/Greasemonkey.

Этот исправленный скрипт должен быть значительно более надежным и эффективным в решении CAPTCHA на 2ch, независимо от того, как и когда она появляется на странице.Я добавил лицензию MIT в метаданные UserScript для скрипта 2ch-CAPTCHA-MATH.СЛАВА УКРАИНА