Если вы измерили свой разрыв и увидели, что часть посетителей до аналитики не доходит, лечится это одной DNS-записью. Разбираем, что такое сбор статистики со своего домена на практике, что именно делает CNAME и где начинаются тонкости.
Первая и третья сторона, если точно
Запрос считается сторонним, когда хост, к которому он идёт, — не тот сайт, где вы находитесь. Читаете example.com, а скрипт тянется с some-analytics.io — это третья сторона. Такой хост лежит в публичных списках блокировки, и расширение отменяет запрос ещё до отправки.
Направьте тот же скрипт на stats.example.com — и он становится первой стороной. Скрипт тот же, данные те же, сервер за ним тот же. Но хост теперь принадлежит вашему сайту, а список блокировки физически не может перечислить все поддомены всех доменов интернета. Запрос проходит.
Механика ровно такая простая. Никаких хитрых обходов здесь нет, и они не нужны.
Что делает CNAME
CNAME — это DNS-запись, которая говорит: «это имя — псевдоним вон того имени». Вы заводите stats.example.com и направляете его на хост сбора. Когда браузер резолвит stats.example.com, DNS тихо идёт по псевдониму и возвращает адрес хоста сбора.
Браузер считает — и совершенно справедливо, — что общается с хостом на вашем домене. Трафик доходит до сервиса аналитики. Ничего не маскируется: ваш DNS открыто сообщает, куда указывает имя, и посмотреть может кто угодно.
В Astrina это одна запись:
stats.example.com. CNAME s.astrina.io.Дальше вы меняете хост счётчика в коде — и всё. Настройки аналитики выдают готовый код уже с вашим хостом внутри, руками править нечего.
Места, на которых спотыкаются
Сертификат
Посетители будут грузить https://stats.example.com, значит на это конкретное имя нужен валидный TLS-сертификат. Хост сбора выпустит его сам, как только CNAME начнёт резолвиться, — но отсюда следует порядок действий: сначала DNS-запись, потом ожидание. Выпуск не мгновенный, а на имя, которое ещё никуда не указывает, сертификат не выдадут в принципе.
Оранжевое облако Cloudflare
Если DNS у вас в Cloudflare и запись проксируется, Cloudflare «сплющивает» CNAME: любой резолвер видит только A-записи Cloudflare, а псевдоним снаружи становится невидим. Это нормально и это работает — но именно поэтому «мой CNAME пропал» почти всегда не проблема, а проверка через dig CNAME вас обманет. Проверяйте не запись, а то, отвечает ли хост.
Собственный кэш
CDN или браузер, запомнивший старый 404 по этому хосту, будет отдавать его и после того, как всё настроено верно. В любую проверку добавляйте cache-buster в строке запроса, иначе потратите час на отладку протухшего ответа.
Чего это не делает
- Не обходит согласие и не трогает Do Not Track. Нужен был баннер — нужен и сейчас.
- Не воскрешает посетителей с выключенным JavaScript.
- Не делает анонимным то, что не было анонимным.
- Не поможет, если ваша беда — боты, а не блокировка. Это совсем другой диагноз.
Оно делает одно: не даёт списку хостов молча вычёркивать людей, которые об этом не просили. Этого достаточно.
Как понять, что заработало
Не верьте зелёной галочке — в том числе нашей. Проверьте две вещи, которые действительно значат:
- Откройте
https://stats.example.com/a.jsв браузере. Скрипт должен отдаться по валидному HTTPS, без предупреждения о сертификате. - Снова сравните сутки просмотров с логом доступа, ровно как раньше. Разрыв должен сократиться. Если нет — счётчик, скорее всего, всё ещё смотрит на старый хост; проверяйте код в исходнике страницы, а не в настройках.
Доказательство — это измерение. Всё остальное — заявления.
В Astrina это доступно на любом платном тарифе, а настройка живёт в параметрах сайта. Если вы ещё не мерили свой разрыв, начните со статьи почему аналитика показывает меньше посетителей, чем логи сервера. А если вы ведёте клиентские сайты, а не свой, — взгляд агентства о том, как делать это на портфеле сразу.