← Cloudflare Web Analytics / web-analytics
Часто задаваемые вопросы
Ниже приведены ответы на наиболее часто задаваемые вопросы. Если вы не нашли нужный ответ, обратитесь к страница сообщества ↗ , чтобы ознакомиться с дополнительными материалами.
Ошибки
Когда я добавляю beacon на свой сайт и загружаю страницу, я вижу ошибку, которая содержит is not allowed by Access-Control-Allow-Origin (CORS). Что происходит?
Эта ошибка обычно возникает, когда хост сайта, загружающего аналитику, не совпадает с именем сайта аналитики, настроенным на панели управления. Проверьте, что они полностью совпадают.
Cloudflare сопоставляет хосты по окончанию имени. Например, если вы настроили аналитику для example.com, мы разрешим аналитику с www.example.com, blog.staging.example.com, а также fooexample.com. Однако мы не будем разрешать аналитику с example.com.br.
Вы также можете увидеть эту ошибку, если сайт не отправляет Referer или Origin заголовок. Referer заголовок является обязательным (не пытайтесь использовать Referrer-policy заголовок вместо этого). Сейчас у нас в разработке изменение, после которого только Origin заголовок будет обязательным, поскольку, как мы полагаем, отключить это в браузере невозможно.
Маяк аналитики блокируется блокировщиками рекламы (включая adblockplus, Brave, расширение DuckDuckGo и другие). Почему так происходит?
Cloudflare знает, что эти сервисы блокируют beacon аналитики.
Хотя Cloudflare Web Analytics использует JavaScript beacon, edge-аналитику Cloudflare заблокировать нельзя, поскольку мы можем измерять каждый полученный запрос. Edge-аналитика доступна любому клиенту, который проксирует трафик через Cloudflare. Сейчас пользователи планов Pro, Business и Enterprise получают расширенную веб-аналитику на основе edge-логов Cloudflare.
Почему я не вижу все метрики для одностраничного (SPA) или многостраничного (MPA) приложения?
При каждом изменении маршрута в одностраничном приложении измерение предыдущего маршрута отправляется на конечную точку beacon. Измерение для последнего изменения маршрута отправляется в момент, когда пользователь закрывает вкладку или окно браузера. Это вызовет visibilityState в скрытое состояние. Когда это происходит, Beacon JS отправляет полезную нагрузку с помощью метод Navigator.sendBeacon ↗ который не должен отменяться даже при закрытии окна браузера. Однако из соображений совместимости старые браузеры используют запасной вариант AJAX (XmlHttpRequest), который можно отменить при закрытии окна браузера, поэтому последняя полезная нагрузка, отправляемая на конечную точку beacon, может быть потеряна. Кроме того, из-за различных сетевых условий возможна потеря данных при отправке полезной нагрузки на конечную точку beacon.
Почему для одного и того же сайта при автоматической настройке отображается больше данных?
Если вы не используете Rules, чтобы контролировать, какие страницы отслеживаются, то использование автоматическая настройка внедрит JS snippet на всех страницах (поддоменах) зоны.
Если вы использовали ручная настройка вместо этого в отчет попадут только те страницы, на которых отображается JS snippet.
Мой сайт проксируется через Cloudflare, но автоматическая настройка Web Analytics не работает.
Если у вас есть Cache-Control заголовок, установленный в public, no-transform, прокси Cloudflare не сможет изменить исходную полезную нагрузку сайта. В результате скрипт Beacon не будет автоматически внедряться на ваш сайт, и Web Analytics не будет работать. См. Origin cache control, где это описано подробнее.
Почему я получаю 405 Method Not Allowed ошибку от /cdn-cgi/rum?
/cdn-cgi/rum эндпоинт принимает только POST запросы для приема данных. Если вы отправите запрос с использованием любого другого метода HTTP (например, GET, PUT, или DELETE), конечная точка возвращает 405 Method Not Allowed ответ с Allow: POST, OPTIONS заголовок (OPTIONS разрешен для CORS ↗ поддержка).
Маяк Web Analytics (beacon.min.js) всегда использует POST при отправке метрик. Если вы видите 405 ошибки в логах, значит запросы поступают не от самого beacon.
Скорее всего, они поступают от автоматизированного инструмента тестирования, который отправляет ошибочные запросы. В этом случае необходимо настроить его на использование POST или игнорировать ошибки.
Мы не поддерживаем прямые пользовательские интеграции с конечной точкой: все запросы должны отправляться через наш JavaScript beacon.
Почему я вижу синтаксические ошибки скрипта beacon в Internet Explorer?
Internet Explorer 11 стал последней версией Internet Explorer, и он был полностью снят с поддержки (EOL) в 2022 году ↗.
Наш скрипт маяка ориентирован на современный синтаксис, который не поддерживается Internet Explorer. Из-за этого при попытке выполнения скрипта возникает ошибка, невидимая для пользователя. Единственное функциональное последствие в том, что маяки не собираются в этих старых браузерах.
Для клиентов, использующих автоматическое внедрение, Cloudflare добавляет type="module" к <script> тег, чтобы предотвратить загрузку в Internet Explorer и других похожих устаревших браузерах.
Для клиентов, использующих ручное встраивание, потребуется добавить type="module" к <script> тег вручную. Наша панель управления обновлена и теперь включает этот атрибут в инструкции по установке.
Настройка
Мой сайт проксируется через Cloudflare. Нужно ли добавлять JS beacon вручную?
Можете, но это не обязательно. Cloudflare Web Analytics создан прежде всего для клиентов, которые не используют proxy Cloudflare для измерения своего веб-трафика.
Действующие клиенты Cloudflare могут получить доступ к аналитике, собранной на периферии нашей сети (edge), на Аналитика вкладке панели управления. Вы также можете включить Web Analytics для измерения производительности с помощью JavaScript.
Если домен проксируется через Cloudflare с автоматическая настройка будет отправлять статистику обратно на конечную точку вашего собственного домена /cdn-cgi/rum конечную точку. Если вы установили JS snippet самостоятельно ( ручная настройка), он будет отправлять данные обратно на cloudflareinsights.com/cdn-cgi/rum конечная точка.
Можно ли добавить Web Analytics на сайт с помощью диспетчера тегов, например Google Tag Manager (GTM)?
Да. Вместо встраивания скрипта через менеджер тегов, как показано здесь:
<script
type="module"
src="https://static.cloudflareinsights.com/beacon.min.js"
data-cf-beacon='{"token": "$SITE_TOKEN"}'
></script>Добавьте следующий скрипт:
<script
type="module"
src="https://static.cloudflareinsights.com/beacon.min.js?token=$SITE_TOKEN"
></script>Что нужно добавить в мою политику безопасности контента (CSP)?
Если на вашем сайте применяется политика Content Security Policy (CSP), в этот HTTP-заголовок потребуется добавить несколько записей, чтобы браузеры могли загружать скрипт beacon и отправлять данные beacon в Cloudflare.
Предупреждение: обязательно проверяйте любые изменения CSP в тестовой среде, прежде чем выпускать обновление в рабочей среде. Вы можете использовать Content Security Rules ↗ или попробовать с Content-Security-Policy-Report-Only сначала.
Сначала вам нужно разрешить выполнение нашего скрипта, добавив его в свою script-src директиву:
script-src [...existing values...] https://static.cloudflareinsights.com/beacon.min.jsПримечание: если в скрипте есть строка запроса, как в примере выше для Google Tag Manager, её нужно указать и в URL, например script-src [...existing values...] https://static.cloudflareinsights.com/beacon.min.js?token=$SITE_TOKEN
Во-вторых, потребуется разрешить доступ к конечной точке, на которую отправляются данные маяка.
При автоматическом внедрении это будет тот же домен, поэтому убедитесь, что ваш connect-src включает 'self':
connect-src [...existing values...] 'self'При ручном встраивании этот скрипт подключается к cloudflareinsights.com, поэтому убедитесь, что вместо этого указано следующее:
connect-src [...existing values...] cloudflareinsights.comКак обеспечить Subresource Integrity (SRI) для JS beacon?
Если вы используете автоматическое внедрение (то есть не подход с ручным встраиванием скрипта, описанный выше), Cloudflare автоматически добавляет integrity атрибут в <script>. Это гарантирует, что скрипт выполнится только в том случае, если локальный хэш загруженного содержимого совпадает со значением integrity, указанным в HTML.
К сожалению, при использовании подхода с ручным встраиванием скрипта в настоящее время нет способа безопасно применить integrity атрибут, поскольку мы не поддерживаем фиксацию версии скрипта beacon. Это сделано для того, чтобы мы могли выпускать периодические обновления для поддержания безопасности, устранения ошибок и обеспечения
Можно ли использовать один и тот же JS Snippet для другого домена?
Нет. Однако если основной домен (также называемый apex domain, root domain или naked domain) совпадает, можно использовать один и тот же site tag. Например, если вы указали нам хост example.com при регистрации сайта вы можете использовать JS snippet этого сайта для abc.example.com и def.example.com так как они используют один и тот же apex-домен. Когда полезная нагрузка отправляется на конечную точку beacon, мы сверяем hostname методом сопоставления по суффиксу, поэтому если ваш домен использует тот же apex-домен, всё будет работать.
Можно ли использовать автоматическую настройку для домена, работающего только через DNS (настройка CNAME)?
Нет, можно использовать только автоматическая настройка с внедрением JS snippet, если трафик вашего домена проксируется через Cloudflare (значок оранжевого облака).
Если у вас домен только с DNS (DNS-only), потребуется выполнить ручная настройка взамен.
Что может помешать добавлению JS-сниппета на страницу?
Чтобы Cloudflare мог автоматически добавить JavaScript-сниппет, ваши страницы должны содержать корректный HTML.
Например, Cloudflare не сможет включить Web Analytics на такой странице:
Hello world.Чтобы Web Analytics мог корректно вставить JavaScript-сниппет, на выходе должен получаться корректный HTML, например:
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
<p>Hello world.</p>
</body>
</html>Можно ли использовать Real User Monitoring (RUM) вместе с Cloudflare Workers?
Real User Monitoring (RUM) от Cloudflare работает исключительно с первым запросом клиента и не может собирать метрики из подзапросов Worker. Это принципиальное архитектурное ограничение, которое обеспечивает точность измерения производительности и предотвращает дублирование или искажение аналитических данных.
Функциональность
Используется ли выборка данных?
Мы храним несэмплированные данные beacon за последние 7 дней, после чего данные агрегируются до примерно 10%.
При агрегировании метрик в панели управления Cloudflare или при запросах к GraphQL API уровень сэмплирования (от 0.0001% до 100%) выбирается динамически, в зависимости от применённых фильтров и объёма подходящих строк. Это обеспечивает высокую точность показателей при разумном времени отклика. Вы можете подробнее об этом подходе в блоге Cloudflare ↗.
Примечание: GraphQL API предоставляет sampleInterval поле, показывающее уровень выборки, примененной к запросу.
- Скрипт маяка срабатывает при каждом просмотре страницы.
- Конвейер приёма данных не применяет выборку: каждый полученный маяк записывается.
- Мы храним несэмплированные данные в течение 7 дней.
- Кроме того, мы агрегируем эти данные, уменьшая их объём до примерно 10% от исходного, для долгосрочного хранения.
- Для сайтов с очень низким трафиком применяется более высокий процент выборки, чтобы обеспечить высокую точность сводных показателей.
Можно ли посмотреть серверную аналитику по URL-адресам?
Web Analytics показывает только аналитику на стороне клиента. Все клиенты Cloudflare, которые проксируют свой трафик, также получают аналитику на основе трафика на edge-серверах Cloudflare.
В настоящее время расширенная аналитика HTTP-трафика доступна пользователям планов Pro, Business и Enterprise: только с ее помощью можно, например, посмотреть распределение трафика по URL-адресам на основе серверной аналитики.
За какой период я могу получить доступ к данным в Web Analytics?
В настоящее время доступны данные за последние шесть месяцев.
Поддерживает ли Cloudflare Web Analytics UTM-параметры?
Пока нет. UTM-параметры представляют собой специальные параметры строки запроса, которые помогают отслеживать источник трафика. В настоящее время Cloudflare Web Analytics не регистрирует строки запроса, чтобы не собирать потенциально конфиденциальные данные, но в будущем мы можем добавить поддержку этой функции.
Поддерживает ли Web Analytics пользовательские события?
Пока нет, но в будущем мы можем добавить поддержку этой функции.
Можно ли отслеживать несколько сайтов с помощью Web Analytics?
Да. Сейчас действует мягкое ограничение в десять сайтов на аккаунт, но его можно изменить, обратившись в поддержку Cloudflare.
Когда beacon отправляет метрики к /cdn-cgi/rum/ конечную точку?
Для обычных сайтов, а не одностраничных приложений (SPA), beacon Web Analytics отправляет данные в /cdn-cgi/rum/ конечную точку после завершения загрузки страницы (событие load) и при уходе пользователя со страницы. Для одностраничных приложений (SPA) дополнительные метрики отправляются при каждой смене маршрута, чтобы зафиксировать событие загрузки страницы.