~/politika
Здесь описано, что делает код этого сайта, и страница меняется вместе с ним. Это не договор и не форма согласия по всем правилам: назначенного оператора, сроков хранения и обещаний «удалим по запросу» тут нет, потому что в коде их тоже нет.
Единственное место, где данные уходят третьей стороне сами по себе, — счётчики посещаемости. Без вашего согласия они не загружаются.
Сайт умеет подключать Яндекс.Метрику и Google Analytics 4. Каждый включается отдельно настройкой на сервере. Сейчас подключены оба.
Пока согласия нет, счётчиков нет совсем: ни запроса к mc.yandex.ru или googletagmanager.com, ни предзагрузки их скриптов, ни строчки их кода в разметке страницы. Состояние по умолчанию — «согласия нет».
С согласия счётчикам уходит просмотр страницы, и в нём:
/instrumenty?page=2;Часть адреса после # отрезается намеренно: по ней на сайте ездят якоря заголовков. Просмотр отправляется в том числе при переходах без перезагрузки: код сайта делает это сам, потому что счётчики о таких переходах не узнают.
Отдельно и честно: на странице поиска адрес имеет вид /poisk?q=…, значит поисковый запрос попадает в отчёты счётчиков вместе с адресом.
Кроме просмотра Метрика отправляет то, что включено её настройками, а они заданы в коде поимённо. Их четыре, и три из них — это обращения сверх просмотра:
clickmap — карта кликов: счётчик собирает координаты нажатий на странице, и в отчёте «Карта кликов» видно, куда именно вы нажимали;trackLinks — отслеживание ссылок: на клик по внешней ссылке и на скачивание файла счётчик сам шлёт отдельное обращение с адресом перехода. Такие ссылки на сайте есть: кнопки «Поделиться» в конце записи ведут на t.me и vk.com;accurateTrackBounce — ещё одно обращение через 15 секунд, чтобы короткий визит не считался отказом;defer — единственная из четырёх, которая ничего не отправляет: она отключает автоматический просмотр, его шлёт код сайта.У Google Analytics в коде задано одно — send_page_view: false: просмотр тоже отправляет код сайта. Но «расширенная статистика» GA4 (прокрутка, клики по внешним ссылкам, поиск по сайту, скачивания) включается в настройках свойства, а не кодом, и этим флагом не отменяется. Что из неё включено, видно в самом GA4 — по коду сайта этого не узнать.
Вебвизор выключен — запись сессий не ведётся: ни движений мыши, ни нажатий клавиш, ни содержимого полей ввода никуда не уходит. Координаты самих нажатий всё же уходят — это карта кликов выше, и это всё, что счётчик знает о ваших действиях на странице.
Куки ставят сами скрипты Яндекса и Google. Их имена и сроки задаёт не этот сайт, поэтому перечислять их здесь значило бы обещать то, что по коду не проверить.
Без JavaScript счётчиков нет вовсе. Запасной картинки Метрики для такого случая на сайте нет намеренно: она сработала бы без единой строчки кода, то есть ровно у того читателя, которому нечем возразить.
Спрашивает баннер внизу страницы, с двумя кнопками. Пока кнопку не нажали, счётчики не грузятся; отказ запоминается так же, как согласие, и баннер больше не показывается.
Решение хранится в localStorage под ключом analytics, значения yes и no. Не в куке: своих кук сайт не ставит вовсе. Если хранилище недоступно (приватное окно, запрещённые данные сайта), решение действует до конца загрузки страницы, но не запоминается — и баннер появится снова.
Передумать можно в любой момент, здесь же. Отказ от уже работающего счётчика удаляет куки с именами на _ym и _ga и перезагружает страницу: убрать поднятый счётчик из памяти вкладки иначе нечем. Если какая-то кука не удалилась — её уберёт очистка данных сайта в браузере, но запросов к счётчику после перезагрузки всё равно больше нет.
Решение одно на браузер, а не на вкладку. Поменяли его в одной — остальные подхватят сами, и те, где счётчик уже работал, перезагрузятся: иначе он продолжил бы там работать и при первом же обращении поставил бы свои куки заново, отменив отказ.
В своей базе сайт держит два счётчика, и оба — просто числа.
Это увеличение числа, а не строка на событие: ни адреса, ни браузера, ни ссылающейся страницы, ни времени каждого просмотра там нет. Времени в строке два, и оба — про саму строку: когда её завели и когда последний раз меняли. Восстановить по этому, кто и когда что читал, нельзя. Оценка записи — целое от 1 до 5, и она складывается в общую сумму: отдельным голосом она нигде не хранится.
Согласия на эти два счётчика сайт не спрашивает: в них нет ни признака читателя, ни передачи данных наружу. Согласие спрашивают там, где данные уходят третьей стороне.
Код сайта пользуется адресом, с которого пришёл запрос, ровно в двух местах. Есть и третье, до всякого кода, — о нём в конце раздела.
view:<номер записи>:<адрес> или rate:<номер записи>:<адрес> — то есть «с этого адреса запись №42 уже читали» и «уже оценили». Окно: минута у просмотра записи и открытия инструмента, сутки у оценки, три секунды у сетевых инструментов. Так счётчик нельзя накрутить циклом из консоли браузера.ipinfo.io. Обратное имя (PTR), по которому нередко опознаётся линия провайдера, спрашивается у сервера имён, настроенного на сервере сайта, — это ещё один получатель адреса. Служебные диапазоны (10/8, 192.168/16, fc00::/7 и прочие) не отправляются никуда: ни поставщику геоданных, ни серверу имён. Ответ кладётся в тот же кеш, что у остальных сетевых инструментов, и ключ там — сам адрес; про срок — ниже, в разделе про инструменты.В базу адрес не попадает. Истёкший ключ ограничителя перестаёт что-либо ограничивать сразу, но из памяти сам не пропадает: карта чистится, только когда дорастает до 5000 ключей, а при небольшой посещаемости она до этого и не дорастает. Значит, связка «этот адрес читал запись №42» лежит в памяти процесса до перезапуска приложения — перезапуск стирает всю карту сразу.
Своего журнала запросов приложение не ведёт, но одно ведётся до него. Перед приложением стоит обратный прокси (Nginx), и журнал доступа у него включён по умолчанию: туда на каждый запрос пишется адрес, время и запрошенный путь — в том числе /poisk?q=… и адрес подсказок поиска /api/posts/search/<набранное>. Сколько эти строки хранятся, решает ротация логов на сервере, а не код сайта.
localStorage: theme — выбранная тема, analytics — решение о счётчиках, rated:<номер> — своя оценка записи, чтобы не голосовать дважды.sessionStorage (живёт до закрытия вкладки): viewed:<номер> — просмотр записи уже засчитан, tool-open:<имя> — открытие инструмента уже засчитано, analytics-reload — страницу перезагрузили из-за отказа от счётчиков, чтобы после загрузки объяснить это вслух; читается и стирается сразу.Своих кук сайт не ставит. Всё перечисленное — отметки для самого браузера, на сервер они не отправляются и чистятся очисткой данных сайта.
Восемь из двенадцати инструментов считают целиком в браузере, и оговорка напечатана на странице каждого из восьми. У четырёх она общая: «Всё, что вы вводите, считается прямо на этой странице: на сервер ничего не уходит и нигде не сохраняется» — это сравнение текстов, транслитерация, расшифровка cron-выражений и разбор строки User-Agent. У остальных четырёх — своя, про конкретные данные: «Содержимое JSON никуда не отправляется и нигде не сохраняется», «Текст и файлы обрабатываются в браузере и никуда не отправляются», «Пароли генерируются в браузере: они никуда не отправляются и нигде не сохраняются», «Коды рисуются в браузере, загруженные картинки никуда не отправляются».
Четырём нужна сеть, и наружу уходит только то, что вы ввели:
8.8.8.8, и адрес видно прямо в поле на странице;Запрос делает сервер сайта, а не ваш браузер, поэтому наружу он уходит с адреса сервера. Ответы этих четырёх — в том числе отказы, чтобы не долбить регистратуры, — складываются в общий кеш в памяти процесса. Минуту ответ считается свежим; сама запись лежит там и дальше, пока её не перезапишет повторный запрос по тому же ключу, не вытеснят 300 более новых ключей или пока приложение не перезапустят. Для «Моего IP» это значит, что адрес вместе с обратным именем, городом и провайдером живёт в памяти дольше минуты — на тихом сайте до перезапуска.
Оговорка про строку поиска в шапке. Её команды вроде пароль 24 или cron 0 3 * * 1 считаются в браузере, но подсказки при этом уходят на сервер сайта — то есть набранное целиком попадает в обычный поисковый запрос к нему. Обещание «введённое не покидает браузер» дано страницам инструментов, а не командной строке.
8.8.8.8, то есть это снова Google, но уже без всякой связи со счётчиками и с согласием: запрос делаете вы сами, нажимая «Проверить»;Больше данных читателя не уходит никуда. Шрифты и скрипты сайт раздаёт со своего домена: ни Google Fonts, ни сторонних CDN на страницах нет.