2ch-CAPTCHA-MATH

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

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

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

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

Autore
STELLAR STELS
Installazioni giornaliere
0
Installazioni totali
8
Valutazione
0 0 0
Versione
0.2
Creato il
29/07/2025
Aggiornato il
29/07/2025
Dimensione
8,47 KB
Licenza
MIT
Applica a

Основные изменения и исправления:
Надежный парсинг уравнения (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.СЛАВА УКРАИНА