Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ubercookie — Образовательная демонстрация evercookie, показывающая, как методы хранения в браузере и кэширования HTTP могут постоянно повторно идентифицировать посетителя. | Kitploit
Инструменты/GitHubGitHub/elpy1/ubercookie
OSINT (Разведка открытых источников)Обход IDS/IPSВеб-безопасностьКонфиденциальностьОбучение и ОбразованиеПодмена Цифрового Отпечатка
GitHubelpy1/ubercookie

ubercookie

Образовательная демонстрация evercookie, показывающая, как методы хранения в браузере и кэширования HTTP могут постоянно повторно идентифицировать посетителя.

Репозиторий
112 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

🍪 ubercookie

Демонстрация того, как веб-сайты постоянно вас идентифицируют — и почему «очистить куки» больше недостаточно.

ubercookie помещает один случайный идентификатор в 12 различных хранилищ браузера одновременно. При каждом посещении он читает их все, находит консенсус и перезаписывает идентификатор обратно повсюду. Очистите любое хранилище — или даже все куки — и уцелевшие молча восстановят его. Сайт показывает вам простым языком, где именно прячется ваш идентификатор и как часто он узнавал ваш браузер.

Это та же идея, что и в классическом evercookie Сэми Камкара — реализованная здесь как открытое, прозрачное учебное пособие, посвящённое восстановлению хранилищ и стойкости суперкуков.

[!IMPORTANT] Этот проект намеренно отслеживает посетителя для повышения осведомлённости. Он использует только first-party данные, хранит только случайный идентификатор, количество посещений, временные метки первого/последнего визита и метки источника восстановления, не передаёт ничего третьим лицам и предоставляет настоящую кнопку «Забудьте меня». Не используйте его для отслеживания людей без их ведома или согласия — это противоречит цели. См. Этика.


Что демонстрируется

ВекторТипНужен JS?Очищаем из JS?Что показывает
document.cookieклиентскийдадаБазовый трекер
localStorageклиентскийдадаПереживает очистку кук
sessionStorageклиентскийдадаРезервирование на вкладку
IndexedDBклиентскийдадаЦелая БД, которую забывают очистить
Cache API (caches)клиентскийдадаПрограммируемое хранилище, отдельное от остальных
window.nameклиентскийдадаСохраняется при переходах
OPFS (Origin Private File System)клиентскийдадаПесочница файловой системы, которую пропускают ручные очистки
Service Worker + CacheклиентскийдадаФоновый скрипт повторно отдаёт идентификатор, даже офлайн
Серверная кука (HttpOnly)серверныйнетчерез серверНевидима для JS, но отправляется с каждым запросом
ETag суперкуксерверныйнеттолько очистка кешаИдентификатор возвращается в If-None-Match
Last-Modified суперкуксерверныйнеттолько очистка кешаИдентификатор закодирован в дате кешированного ресурса
HTTP-кеш (скрипт со встроенным id)серверныйнеттолько очистка кешаИдентификатор вшит в immutable кешированный файл

Вдобавок ко всему, страница запрашивает у браузера постоянное хранилище (navigator.storage.persist()), что освобождает копии в IndexedDB / Cache / Service Worker / OPFS от автоматического удаления — делая их ещё более сложными для избавления.

Три кешевых вектора — это ключ к стойкости: они живут в HTTP-кеше браузера, поэтому JavaScript (включая нашу кнопку «Забудьте меня») не может их удалить — только очистка браузерного кеша. Именно так идентификатор возвращается из мёртвых.

Полное описание реализованных векторов хранения, а также идея HSTS-суперкука, которая всё ещё подходит для этого проекта, находится в docs/techniques.md.


Архитектура

root@kitploit:~
ubercookie/
├── backend/            FastAPI — серверные векторы + журнал наблюдений (SQLite)
│   └── app/
│       ├── main.py     эндпоинты: /api/visit, /api/whoami, /api/etag-id,
│       │               /api/lastmod-id, /api/cache-id.js, /api/clear-cookie,
│       │               /api/forget
│       ├── store.py    память «мы видели этот браузер N раз»
│       └── ids.py      создание/валидация 32-символьного hex-идентификатора
└── frontend/           Vanilla JS + Vite — панель управления и клиентские векторы
    └── src/ubercookie/
        ├── index.js    оркестратор: читать всё → консенсус → восстановить → отчитаться
        └── vectors/    по одному самодостаточному модулю на каждый вектор хранения

Как происходит посещение (frontend/src/ubercookie/index.js):

  1. Чтение каждого вектора параллельно.
  2. Консенсус — выбирается идентификатор, с которым согласны большинство векторов (или ничего, если вы новичок).
  3. Отчёт серверу, который создаёт новый идентификатор, если его не было, регистрирует посещение и устанавливает HttpOnly-куку.
  4. Восстановление — запись этого идентификатора обратно во все векторы, где он отсутствовал.

Быстрый старт

Требуется Python ≥ 3.11 (с uv) и Node ≥ 18.

root@kitploit:~
make install        # зависимости бэкенда (uv) + фронтенда (npm)

# затем в двух терминалах:
make backend        # FastAPI на http://localhost:8000
make frontend       # Vite на  http://localhost:5173  (проксирует /api → :8000)

Откройте http://localhost:5173 и наблюдайте, как за вами следят. Откройте DevTools, удалите некоторые хранилища, нажмите Re-scan и смотрите, как они восстанавливаются.

Одной строкой для обоих серверов: ./scripts/dev.sh

Промышленный стиль (FastAPI отдаёт собранный фронтенд, единый источник)

root@kitploit:~
make build                                   # → frontend/dist
cd backend && uv run uvicorn app.main:app --port 8000
# откройте http://localhost:8000

Обслуживание обоих из одного источника — наиболее точная настройка, поскольку векторы кеша/ETag зависят от реального HTTP-кеширования в рамках одного источника.


Тестирование

root@kitploit:~
make test           # pytest бэкенда (логика серверных векторов + журнал наблюдений)
make build          # сборка фронтенда для продакшна

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


Этика

Это оборонительный / обучающий инструмент. Правила, заложенные в дизайн:

  • Прозрачность — каждое сохранённое значение отображается пользователю на странице.
  • Только first-party — никаких сторонних запросов, никакого кросс-сайтового отслеживания.
  • Минимум данных — случайный идентификатор, временные метки первого/последнего визита, счётчик посещений и метки векторов, восстановивших идентификатор. Никаких личных данных, ничего не покидает сервер.
  • Настоящий отказ — кнопка Забудьте меня очищает всё доступное и удаляет запись на сервере; страница честно сообщает, что можно удалить только очисткой кеша.

Пожалуйста, сохраняйте тот же дух в любых форках: используйте его, чтобы обучать людей, как работает отслеживание, чтобы они могли защитить себя, а не для скрытой слежки за ними.

Лицензия

MIT — см. LICENSE.

Скачать инструмент