🛡️ Stylometry Shredder v4.1 (Stable)
Stylometry Shredder — это легковесный инструмент для анонимизации авторского стиля письма. Он «размывает» ваш цифровой почерк, прогоняя текст через двойной машинный перевод (RU ↔ EN), что делает невозможным автоматическое определение автора по специфическим оборотам, сленгу и синтаксису.
🚀 Как это работает?
Любой текст, который вы пишете, содержит ваш уникальный «отпечаток» (стилиметрию).
Вы вставляете свой «сокровенный» текст.
Нажимаете DEEP SHRED.
Скрипт переводит текст на английский, полностью пересобирая структуру предложений.
Затем переводит его обратно на русский.
На выходе — ваш смысл, но изложенный «нейтральным» языком ИИ. Ваш стиль уничтожен.
🛠️ Технические особенности
Zero-Logs: Весь процесс происходит в вашем браузере. Данные не сохраняются.
Force URL Engine: Использует нативный конструктор URL() для обхода блокировок и ошибок парсинга в старых браузерах.
No Dependencies: Чистый HTML/JS. Не требует установки тяжелого софта.
📦 Инструкция по запуску (ВАЖНО)
Браузеры блокируют внешние запросы из файлов, открытых просто «двойным кликом» (file://). Чтобы всё работало, запустите локальный сервер:
Вариант А (Python — самый быстрый)
Откройте терминал в папке с файлом и введите:
bash
python -m http.server 8000
Используйте код с осторожностью.

Затем перейдите в браузере по адресу: http://localhost:8000
Вариант Б (VS Code)
Установите расширение Live Server и нажмите кнопку Go Live в статус-баре.
Вариант В (Firefox)
Просто откройте файл в браузере Firefox. Он позволяет делать такие запросы без локального сервера.
⚠️ Меры предосторожности (OPSEC)
Лимиты: Публичный API (MyMemory) принимает до 1000 символов за раз. Длинные посты «шинкуйте» по частям.
Связка: Используйте шредер вместе с VPN (VLESS+Reality) и Incognito-режимом браузера.
Cookies: Никогда не пишите сокровенное в браузере, где в соседней вкладке открыты ваши соцсети.
📜 Лицензия
Распространяется свободно. Сделано анонимами для анонимов.

скипируй текст ниже полосочки в файл STYLOMETRY.html , создай просто новый ТХТ файл и переименуй в конце тхт на html


<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Anon Stylist — V4.1 FORCE_URL</title>
<style>
:root { --bg: #050505; --text: #00ff41; --accent: #ff4100; --border: #222; }
body { font-family: 'Consolas', monospace; background: var(--bg); color: var(--text); display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; }
.container { background: #111; padding: 25px; border: 1px solid var(--border); width: 650px; }
textarea { width: 100%; height: 280px; background: #000; border: 1px solid var(--border); color: var(--text); padding: 12px; box-sizing: border-box; font-size: 14px; outline: none; margin-bottom: 15px; }
.btn-group { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }
button { padding: 12px; background: #1a1a1a; border: 1px solid var(--border); color: var(--text); cursor: pointer; text-transform: uppercase; font-size: 10px; font-weight: bold; }
button:hover { background: var(--text); color: #000; }
.btn-deep { border-color: var(--accent); color: var(--accent); }

status { margin-top: 15px; font-size: 10px; color: #555; text-align: center; }

</style>

</head>
<body>

<div class="container">
<div style="font-size: 10px; margin-bottom: 8px; color: #444;">> BUILD_STYLOMETRY_V4.1_FORCE</div>
<textarea id="textInput" placeholder="ВВЕДИТЕ ТЕКСТ..."></textarea>

1
2
3
4
5
6
<div class="btn-group">
    <button onclick="translateOnce('ru', 'en')">RU -> EN</button>
    <button onclick="translateOnce('en', 'ru')">EN -> RU</button>
    <button class="btn-deep" onclick="deepShred()">DEEP SHRED</button>
</div>
<div id="status">READY_FOR_COMMAND</div>

</div>

<script>
async function requestTranslate(text, from, to) {
// Использование встроенного конструктора URL для 100% корректности
const baseUrl = "https://api.mymemory.translated.net";
const url = new URL(baseUrl);
url.searchParams.append("q", text);
url.searchParams.append("langpair", from + "|" + to);
url.searchParams.append("de", "anon@example.com"); // добавляем валидный заголовок

    console.log("Full URL:", url.toString()); // Проверь это в консоли F12!

    const response = await fetch(url.toString());
    if (!response.ok) throw new Error('HTTP_' + response.status);

    const data = await response.json();
    if (data.responseData && data.responseData.translatedText) {
        return data.responseData.translatedText;
    } else {
        throw new Error(data.responseDetails || 'Limit');
    }
}

async function translateOnce(from, to) {
    const input = document.getElementById('textInput');
    const status = document.getElementById('status');
    if (!input.value.trim()) return;
    status.innerText = "WAITING...";
    try {
        input.value = await requestTranslate(input.value.trim(), from, to);
        status.innerText = "DONE.";
    } catch (e) {
        status.innerText = "FAIL: " + e.message;
    }
}

async function deepShred() {
    const input = document.getElementById('textInput');
    const status = document.getElementById('status');
    if (!input.value.trim()) return;
    try {
        status.innerText = "SHREDDING 1/2...";
        const step1 = await requestTranslate(input.value.trim(), 'ru', 'en');
        status.innerText = "SHREDDING 2/2...";
        const step2 = await requestTranslate(step1, 'en', 'ru');
        input.value = step2;
        status.innerText = "SHREDDED SUCCESSFULLY.";
    } catch (e) {
        status.innerText = "FAIL: " + e.message;
    }
}

</script>

</body>
</html>

Edit

Pub: 19 Mar 2026 16:55 UTC

Views: 26