Обходим блокировку аналитики AD блокерами
AD-блокеры — несомненно крутая штука, тем не менее, они блокируют скрипты аналитики, которые не всегда являются злом.
Например, аналитика от Cloudflare — про приватность и легкость, данных лишних не собирает, на сторону их не продает. Потому обойти ее блокировку различными расширениями не так уже и подло.
Блокировщики работают в несколько этапов: блокируют подгрузку файла скрипта аналитики и блокируют запросы к серверам аналитики, к которым эти скрипты и обращаются.
Для обхода блокировки нам понадобится одна вещь — прокся с возможностью замены части контента в ответе, например, nginx.
Добавляем два локейшена в конфиг:
# сам скрипт аналитики
location /analytics-script.js {
# очень важно, чтоб отрабатывал sub_filter, т.к. если сервер отдаст gzip, то замена не сработает
proxy_set_header Accept-Encoding "";
# заменяем в скрипте оригинальный адрес на наш, проксированный
sub_filter 'https://cloudflareinsights.com/cdn-cgi/rum' 'https://домен/analytics-api';
sub_filter_types *;
sub_filter_once off;
proxy_hide_header Content-Security-Policy;
proxy_pass https://static.cloudflareinsights.com/beacon.min.js;
}
# проксируем вызовы к оригинальному api аналитики
location /analytics-api {
proxy_pass https://cloudflareinsights.com/cdn-cgi/rum;
}
Подключаем аналитику не с домена Cloudflare, а со своего домена.
Таким образом мы загружаем и скрипт аналитики со своего домена, и аналитику он отправляет на наш домен, а внутри уже все проксируется в Cloudflare.
AD блокеры ничего не блокируют, мы получаем аналитику. Запросы куда-то еще уходят неявно.
Есть одна небольшая проблема — у всех запросов один IP, IP прокси, почему-то аналитика Cloudflare не учитвает заголовки и не имеет задокументированных способов переопределить IP юзера, как это сделано в Google аналитике.
Закинул в коммьюнити топик на эту тему, посмотрим, как решится.