2ch-CAPTCHA-MATH

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

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

Автор
STELLAR STELS
Инсталации дневно
0
Инсталации общо
8
Рейтинг
0 0 0
Версия
0.2
Създаден
29.07.2025
Обновен
29.07.2025
Размер
8 КБ
Лиценз
MIT
Работи на

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