Как скрыть код метрики для пользователей, которые заходят на сайт напрямую (без рефера)?

Здравствуйте! <br/> Извините за мой уровень знаний в коде, но я на самом деле постарался разобраться в вопросе. <br/> <br/> У меня на сайте установлен код для Яндекс.Метрики: <br/> <pre><code class="php">&lt;!-- Yandex.Metrika counter --&gt;
&lt;script type="text/javascript" &gt;
   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
   m[i].l=1*new Date();
   for (var j = 0; j &lt; document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
   k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

   ym(111111111, "init", {
        clickmap:true,
        trackLinks:true,
		params:{ip: "&lt;? echo $_SERVER['REMOTE_ADDR']; ?&gt;"},
        accurateTrackBounce:true,
        webvisor:true
   });
&lt;/script&gt;
&lt;noscript&gt;&lt;div&gt;&lt;img src="https://mc.yandex.ru/watch/111111111" style="position:absolute; left:-9999px;" alt="" /&gt;&lt;/div&gt;&lt;/noscript&gt;
&lt;!-- /Yandex.Metrika counter --&gt;</code></pre> <br/> <br/> Можете подсказать, как изменить этот код так, чтобы он не отображался для пользователей, которые заходят на сайт без рефера (то есть с прямого перехода)? <br/> <br/> Огромное спасибо!
  • 23 марта 2025 г. 8:04
Ответы на вопрос 1
Чтобы скрыть код Яндекс.Метрики от пользователей, которые заходят на сайт напрямую (без рефера), вам нужно использовать JavaScript для проверки наличия реферера в `document.referrer`. Если реферер отсутствует, то код метрики не будет выполнен.

Вот пример, как можно изменить ваш код:

```html
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
   if (document.referrer) {
       (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
       m[i].l=1*new Date();
       for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
       k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
       (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

       ym(111111111, "init", {
            clickmap:true,
            trackLinks:true,
            params:{ip: "<?php echo $_SERVER['REMOTE_ADDR']; ?>"},
            accurateTrackBounce:true,
            webvisor:true
       });
   }
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/111111111" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
```

### Как это работает:
1. Проверяем наличие реферера с помощью `if (document.referrer)`. Если реферер есть (то есть пользователь пришел по ссылке с другого сайта), код метрики будет выполнен.
2. Если реферер отсутствует (то есть пользователь зашел напрямую), код метрики не выполнится, и соответственно, счетчик не будет загружаться.

### Обратите внимание:
- Замена `111111111` на ваш реальный ID счетчика.
- Если вы используете другие системы отслеживания или у вас есть дополнительные настройки, убедитесь, что они также правильно обрабатываются.
Похожие вопросы