Instalação de tag em site com CSP

O código de tag gerado pelo Yandex Metrica é destinado à inserção linear no código HTML das páginas. Em sites que usam a tecnologia Content Security Policy, esse código não será executado, a menos que você tome providências específicas. Em particular, é preciso usar o cabeçalho HTTP para dar ao navegador permissão para processar os dados. O cabeçalho HTTP deve incluir a diretiva src-script com o atributo nonce (isso exige a assinatura do conteúdo do elemento script) e a diretiva img-src para processar o conteúdo do elemento noscript.

Além disso, o Yandex Metrica oferece outra maneira de habilitar o código da tag: inserindo apenas o conteúdo do elemento noscript no código HTML das páginas e movendo o conteúdo do elemento script para um script externo (por exemplo, para um arquivo JS).

Qualquer que seja o método escolhido, você precisará modificar o cabeçalho HTTP para adicionar permissão de acesso ao Yandex Metrica.

Lista de endereços

https://mc.yandex.ru

https://mc.yandex.az

https://mc.yandex.by

https://mc.yandex.co.il

https://mc.yandex.com

https://mc.yandex.com.am

https://mc.yandex.com.ge

https://mc.yandex.com.tr

https://mc.yandex.ee

https://mc.yandex.fr

https://mc.yandex.kg

https://mc.yandex.kz

https://mc.yandex.lt

https://mc.yandex.lv

https://mc.yandex.md

https://mc.yandex.tj

https://mc.yandex.tm

https://mc.yandex.uz

https://mc.webvisor.com

https://mc.webvisor.org

https://yastatic.net

Inserção do código da tag no código HTML das páginas de um site

Atenção

Os exemplos não listam todos os endereços necessários para o funcionamento do Yandex Metrica. Veja a lista completa.

Caso queira usar este método, o cabeçalho HTTP Content-Security-Policy ou Content-Security-Policy-Report-Only deverá conter as seguintes diretivas:

  • script-src com o atributo nonce. Esse atributo deve conter um valor de string com uma sequência aleatória de caracteres (letras e números). Esse valor deve ser gerado aleatoriamente no servidor de forma separada para cada solicitação.

    Content-Security-Policy: script-src 'nonce-<character sequence>';
    

    A mesma sequência de caracteres deve estar contida no atributo nonce do elemento script do código da tag nas páginas do site.

    ...
    <!-- Yandex.Metrika counter -->
    <script type="text/javascript" nonce="<character sequence>">
        (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||
        []).push(arguments)};
    ...
    
  • img-src para permitir o processamento do conteúdo do elemento noscript.

    Content-Security-Policy: img-src https://mc.yandex.ru;
    
  • connect-src para conectar com o Yandex Metrica.

    Content-Security-Policy: connect-src https://mc.yandex.ru;
    
  • child-src com a string blob: https://mc.yandex.ru para que a Reprise de Sessão, o mapa de cliques, o mapa de links e o mapa de rolagem funcionem corretamente.

    Content-Security-Policy: child-src blob: https://mc.yandex.ru;
    
  • frame-src com a string blob: https://mc.yandex.ru para que a Reprise de Sessão, o mapa de cliques, o mapa de links e o mapa de rolagem funcionem corretamente.

    Content-Security-Policy: frame-src blob: https://mc.yandex.ru;
    
  • frame-ancestors com a string blob: https://mc.yandex.ru para que a Reprise de Sessão, o mapa de cliques, o mapa de links e o mapa de rolagem funcionem corretamente.

    Content-Security-Policy: frame-ancestors blob: https://mc.yandex.ru;
    

Exemplo do cabeçalho HTTP ao usar este método:

Content-Security-Policy:
 ...
 img-src https://mc.yandex.ru;
 script-src https://mc.yandex.ru https://yastatic.net 'nonce-<character sequence>';
 connect-src https://mc.yandex.ru;
 ...

Uso de um script externo para conectar o código da tag

Atenção

Os exemplos não listam todos os endereços necessários para o funcionamento do Yandex Metrica. Veja a lista completa.

Se você usar este método, o cabeçalho HTTP Content-Security-Policy ou Content-Security-Policy-Report-Only poderá contar com um conjunto geral de diretivas, inclusive regras para carregar dados do Yandex Metrica:

  • script-src para permitir o processamento de scripts.

    Content-Security-Policy: script-src https://mc.yandex.ru https://yastatic.net;
    
  • img-src para permitir o processamento do conteúdo do elemento noscript.

    Content-Security-Policy: img-src https://mc.yandex.ru;
    
  • connect-src para conectar com o Yandex Metrica.

    Content-Security-Policy: connect-src https://mc.yandex.ru;
    
  • child-src com a string blob: https://mc.yandex.ru para que a Reprise de Sessão, o mapa de cliques, o mapa de links e o mapa de rolagem funcionem corretamente.

    Content-Security-Policy: child-src blob: https://mc.yandex.ru;
    
  • frame-src com a string blob: https://mc.yandex.ru para que a Reprise de Sessão, o mapa de cliques, o mapa de links e o mapa de rolagem funcionem corretamente.

    Content-Security-Policy: frame-src blob: https://mc.yandex.ru;
    

Exemplo do cabeçalho HTTP ao usar este método:

Content-Security-Policy:
 ...
 img-src https://mc.yandex.ru;
 script-src 'self' https://mc.yandex.ru https://yastatic.net;
 connect-src https://mc.yandex.ru;
 ...

O exemplo abaixo habilita o código JavaScript em um arquivo JS externo. Apenas o elemento script com o atributo src precisa ser adicionado ao código HTML das páginas do site. Esse atributo deve conter o caminho para o arquivo (por exemplo, metrika.js).

<script type="text/javascript" src="/metrika.js"></script>
  1. Na interface do Yandex Metrica, acesse Configurações > Tag e copie do campo o conteúdo do elemento script.

  2. Adicione este código ao arquivo metrika.js.

    Exemplo de conteúdo do arquivo
    (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();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(XXXXXX, "init", {
            id:XXXXXX,
            clickmap:true,
            trackLinks:true,
            accurateTrackBounce:true
        });
    

    Onde XXXXXX é o número de uma tag Yandex Metrica.

  3. Para que a tag colete dados de usuários que estiverem com o JavaScript desabilitado, adicione o conteúdo do elemento noscript ao código HTML das páginas do site:

    <noscript><div><img src="https://mc.yandex.ru/watch/XXXXXX" style="position:absolute; left:-9999px;" alt="" /></div></noscript> 
    

Fale conosco

Escrever um e-mail

Caso não tenha conseguido checar a tag de forma independente, siga as recomendações abaixo.

Isso pode acontecer pelos seguintes motivos:

  • A tag está instalada de maneira incorreta. Por exemplo, o CMS modificou o código da tag. Reinstale a tag ou entre em contato com o serviço de suporte do seu CMS.
  • Scripts inoperantes estão impedindo que a tag Yandex Metrica funcione no site. Isso pode ser verificado no console do navegador.
As recomendações não ajudaram

Observe, por gentileza, que nossa equipe de suporte jamais iniciará uma chamada com você. Se alguém ligar para você e se apresentar como a equipe de suporte do Yandex Metrica, não siga as instruções dessa pessoa.

Isso significa que as informações estão sendo transmitidas para o Yandex Metrica. No entanto, os dados podem não estar sendo exibidos nos relatórios por algum dos seguintes motivos:

  • Os dados são enviados com um número diferente para uma tag.
  • A aba Filtros das configurações da tag está definida com filtros excessivamente restritivos. Remova filtros desnecessários.
  • A aba Filtros das configurações da tag está com o filtro Não contabilizar minhas sessões habilitado. Isso significa que a tag não registra as suas próprias sessões. Tente acessar o site com o navegador no modo "anônimo".
As recomendações não ajudaram

Observe, por gentileza, que nossa equipe de suporte jamais iniciará uma chamada com você. Se alguém ligar para você e se apresentar como a equipe de suporte do Yandex Metrica, não siga as instruções dessa pessoa.


O código da tag consiste de duas partes: o código JavaScript no elemento script e o código HTML no elemento noscript.