Одиннадцать бесплатных инструментов в /tools — зачем и как

SSL, DNS/WHOIS, Schema.org, SPF/DKIM/DMARC, конфигуратор cookie-баннера с живым превью, QR-код из фото. Что внутри, зачем, и один свой баг, из-за которого на сайте пропадала шапка.

За последние две недели в /tools появилось одиннадцать новых инструментов: проверка SSL-сертификата, скорость и вес страницы, DNS и WHOIS, валидатор Schema.org, генератор политики конфиденциальности с конфигуратором cookie-баннера, проверка SPF/DKIM/DMARC, чекер favicon и манифеста, проверка hreflang, калькулятор контраста по WCAG, генератор UTM-меток, генератор QR-кода. Всё бесплатно, без регистрации, большинство отвечает быстрее чем за пару секунд. Рассказываю, зачем это всё и что реально пошло в разработку.

11инструментов
добавлено за две недели поверх исходных шести
17всего
сейчас живёт в /tools, в трёх группах
0регистраций
не требуется ни для одного — это не обсуждалось
1баг
свой собственный, ненадолго положивший шапку по всему сайту

Цифры на момент публикации, список продолжает расти.

Зачем вообще страница с инструментами

Каждый из них — лид-магнит, и я это не скрываю. Человек заходит на проверку, за пару секунд получает настоящий ответ, а внизу страницы — ссылка на платную версию той же идеи: полный AI SEO Audit или одна из услуг, к которым он ведёт: доработка Битрикса, сопровождение, приведение к 152-ФЗ. Без тёмных паттернов и искусственной срочности. Бесплатная проверка обязана быть реально полезной сама по себе — иначе вся эта конструкция просто шум с формой на конце.

Что в этих одиннадцати

Для разработчиков. Валидатор Schema.org / JSON-LD, который проверяет не только то, что разметка парсится, но и то, что на месте поля, без которых Google просто не покажет расширенный сниппет — Product без offers пройдёт валидацию JSON и всё равно останется без сниппета. Проверка hreflang, которая ловит отсутствие x-default и отсутствие ссылки страницы на саму себя — две ошибки, которые годами тихо уводят международных посетителей не туда. Калькулятор контраста по WCAG — без запроса к сайту, просто два цвета на входе и коэффициент с прохождением AA/AAA на выходе, потому что вычислять это с реальной страницы без настоящего браузера — значит выдавать желаемое за действительное.

Для сайтов. Проверка SSL-сертификата напрямую с хендшейка, а не через панель хостинга. Проверка скорости и веса страницы, которая честно предупреждает, что это не Core Web Vitals — для этого нужен настоящий браузер, и он уже есть в платном аудите. DNS и WHOIS, включая предупреждение человеческим языком, что истёкший домен перехватывают за считаные часы. Проверка SPF/DKIM/DMARC с честной оговоркой: селектор DKIM произвольный, и «не найден» среди частых вариантов не значит «не настроен». Проверка favicon и манифеста — для той мелочи, о которой вспоминают, только когда вкладка браузера показывает пустой квадрат.

Для бизнеса. Генератор политики конфиденциальности — самый объёмный: черновик текста плюс живой конфигуратор cookie-баннера — цвета, вид (полоса или попап), текст кнопок, и всё это превью в реальном времени по мере ввода, а не просто описано словами. Генератор UTM-меток с кастомными параметрами и режимом массовой вставки — набирать по пять полей руками на каждую ссылку кампании быстро надоедает. Генератор QR-кода, который делает то, чего нет у большинства бесплатных аналогов: собственное фото можно поставить фоном кода или, что интереснее, буквально вырезать из него сами тёмные модули, пиксель в пиксель.

Три решения, которые стоит объяснить

Одна защита от SSRF, а не одиннадцать. Каждый инструмент, принимающий URL — а это большинство из них — идёт через один и тот же слой запроса, который блокирует приватные и локальные диапазоны IP, в том числе после редиректов: редирект на внутренний адрес не получает поблажки. Написать эту проверку один раз и правильно — и переиспользовать, вместо того чтобы надеяться, что все одиннадцать отдельных реализаций её не забыли.

Один список, два места. Хаб инструментов и пункт «Инструменты» в шапке раньше были двумя списками, которые вели вручную — а такие списки расходятся в первый же раз, когда торопишься. Теперь оба читают из одного tools/data.php — тот же приём, что уже применялся для меню «Услуги». Добавил инструмент в одном месте — он появился в обоих.

Трюк с QR — это просто сравнение пикселей. Никакой специальной библиотеки обработки изображений. Код рисуется с маркерным цветом фона, буфер пикселей проходится построчно, и там, где пиксель совпадает с маркером, подставляется соответствующий пиксель из загруженного фото — либо только в фоновые пиксели, либо только в код, на выбор. Это от силы сорок строк работы с canvas ради эффекта, за который большинство генераторов берут деньги.

Тот, что чуть не ушёл незамеченным

Разбираясь с несвязанным багом горизонтальной прокрутки, я поставил overflow-x: hidden одновременно на html и на body. По спецификации это заставляет браузер доопределить overflow-y как auto на обоих — и body тихо превратился в собственный вложенный скролл-контейнер вместо того, чтобы прокручивался viewport как обычно. window.scrollY перестал двигаться, слушатель прокрутки у шапки больше никогда не срабатывал, и шапка пропадала по всему сайту на главной странице. Нашёл это буквально вызвав window.scrollTo() в консоли и увидев, что scrollY отказывается меняться. Починка — это свойство только на body, не на обоих сразу. Маленькая строчка, неверное допущение, реальный сбой — обычная форма таких историй.

Что дальше

Следующий на очереди — проверка битых ссылок, запущенная с обычного сервера, а не с Pi, за которым стоит платный движок аудита: больше не будет ложных срабатываний на ссылки в Telegram только потому, что сеть, из которой их проверяют, до них не достаёт. После этого — лёгкая публичная проверка версии ядра Битрикс как тизер к более полному сканеру Bitrix/Aspro/Sotbit, который уже живёт в платном отчёте.

Обсудим задачу.

Опишите задачу или проект — отвечу в течение дня. Если нет чёткого ТЗ, это не проблема: помогу сформулировать.

Нажимая кнопку «Отправить», я даю согласие на обработку персональных данных для целей обратной связи и соглашаюсь с Политикой обработки персональных данных .