Автор оригинала: Nikita Savchenko.
Когда ваш продукт просто начинается, каждый пользователь имеет значение. Так что данные о том, как они взаимодействуют с вашим продуктом.
Если вы пытались использовать решения Analytics, такие как Google Analytics , вы, возможно, столкнулись с проблемой, когда ваша коллекция аналитики была заблокирована блокаторами AD.
По словам PageFair , до 30% Интернет-пользователей используют блокировщики AD в 2017 году, и этот номер постоянно растет.
Эта статья объяснит некоторые технические подходы, которые вы можете предпринять, чтобы предотвратить также блокировать рекламные блокировки. Мы будем использовать Google Analytics В этой статье, хотя большая часть этого может быть применена к другим инструментам аналитики.
Некоторые способы вы можете обойти блокаторы AD
Почти все блокировщики рекламы работают через одни и те же методы: они запрещают некоторые запросы браузера HTTP (S) для содержимого на URL-адресах, которые соответствуют определенной маске из их фильтрации.
Большинство рекламных блокаторов черный список www.google-analytics.com По умолчанию и заблокируйте любые попытки Google Analytics JavaScript Библиотека отправить или получить данные с ее аналитических серверов.
К счастью для разработчиков, блокировщики рекламы не блокируют запросы на Наши собственные доменные имена По умолчанию, потому что это может повредить функциональность веб-приложения. Этот разрыв показывает способ избежать блокировки аналитики, пока ваш веб-сервис не станет известным достаточно для некоторых его URL-адресов, появляются в блокаторах AD-блокатора.
Фактически, даже после того, как некоторые URL-адреса появляются в базе фильтрации контента, вы можете начать играть с блокаторами AD, изобретение ужасных вещей, таких как почасовая смена URL Analytics (хотя это за пределами объема этой статьи). Некоторые из этих подходов применяются услугами, такими как Dataunlocker.com. и Adtoniq С которые предлагают пользователю бесплатным опытом, даже когда блокировщики рекламы включены.
Объяснение высокого уровня того, что мы собираемся сделать
В этой статье мы предположим, что у нас нет ограничений разрешений на стороне сервера. Мы напишем демо-решение (несколько строк кода) для платформы Node.js. Как только вы понимаете, как это работает, вы сможете портировать это решение для любого языка или платформы программирования.
Решение, которое я буду описать, довольно минимально, и если вы опытный веб-разработчик, он может занять вас всего несколько минут, чтобы поставить его на место.
Мы собираемся использовать простой прокси-подход без необходимости погружения в Протокол измерения аналитики Google . Короче говоря, решение выглядит следующим образом:
- Первый , Скачать Сама библиотека JavaScript Google Analytics и проводит его на вашем сервере.
- Затем измените код в загруженной библиотеке, чтобы изменить целевой хост из www.google-analytics.com к вашему собственному доменному имени, используя находку-заменить.
- Замените ссылку из сценария аналитики Google по умолчанию в вашу кодовую базу, чтобы изменить один.
- Создать прокси Конечная точка для серверов Google Analytics на вашем спине. Один важный шаг здесь – дополнительно обнаружить IP-адрес клиента и явно написать его в запросах на серверы Google Analytics, чтобы сохранить правильное обнаружение местоположения.
- Проверьте результаты. Вы закончили!
Полная техническая реализация прохождения
Весь код и описанные шаги ниже доступны на Github Отказ Приведенное ниже описание объясняет основы метода, и, конечно, предлагаемый подход может быть улучшен, чтобы быть еще более «антиблокировкой».
В Google Analytics вы начинаете с Приобретение уникальной отслеживания ID Для вашей собственности (веб-сервис). Мы будем использовать UA-98253329-1 ID отслеживания В этой статье для демонстрации. Не забудьте заменить код отслеживания на свой.
Google предлагает добавить этот минимутированный код в ваши веб-сервисы, чтобы включить аналитику:
Через несколько слов этот код загружает библиотеку JavaScript Google Analytics, если она не была загружена перед вводом тега скрипта в документ. Эта библиотека включает в себя всю логику коллекции аналитики, и это единственное, что нам нужно продолжить.
Шаг 1: Загрузить и исправлять Библиотека Google аналитики
Загрузите скрипт напрямую из https://www.google-analytics.com/analytics.js Откройте его с любым текстовым редактором и замените все вхождения:
www.google-analytics.com
С этой точной строкой:
"+location.host+"/analytics
Таким образом, исправляя библиотеку аналитики, она начнет создавать запросы на локальный хост ( my.domain.com/analytics) конечные точки вместо www.google-analytics.com Отказ Место Это исправлено Analytics.js Файл на вашем сервере после замены.
Шаг 2: Замените скрипт аналитика с помощью исправленного
Давайте модифицируем код вложения Google Analytics таким образом, чтобы он использовал нашу исправленную библиотеку вместо по умолчанию:
Обратите внимание, что здесь браузер ищет поиск скрипта исправленного аналитика в корневом документе вашего сервера, в этом случае my.domain.com/analytics.js. Проверьте, включите ли вы скрипт в документе Root или изменили путь в теге скрипта выше. Вы также можете проверить результаты, запустив тест на локальный сервер (см. README Для того, как запустить пример GitHub).
Вы должны увидеть что-то вроде этого в инструментах разработчика браузера :
В конечном итоге мы хотим акт загрузки вашего исправления Analytics.js Чтобы вернуть успешный ответ – A 200 (OK) или 304 (не измененный) статус. Но на данный момент запрос на my.domain.com/analytics/COLLECT Следует ответить на 404 статуса, так как мы еще не реализовали прокси-сервер.
Шаг 3: Реализация простейшего прокси-сервера
Теперь мы собираемся немного кодировать. Наша цель – реализовать Прокси-сервер , который будет транспортировать нашу аналитические запросы с нашего сервера на реальный сервер Google Analytics. Мы можем сделать это во многом, но, в качестве примера, давайте использовать Node.js и Express.js с Express-http-прокси упаковка.
Собрав все файлы в примере вместе ( Смотрите GitHub ), мы должны в конечном итоге следующий код сервера JavaScript:
var express = require("express"),
proxy = require("express-http-proxy"), app = express();
app.use(express.static(__dirname)); // serve static files from cwd
function getIpFromReq (req) { // get the client's IP address
var bareIP = ":" + ((req.connection.socket && req.connection.socket.remoteAddress)
|| req.headers["x-forwarded-for"] || req.connection.remoteAddress || "");
return (bareIP.match(/:([^:]+)$/) || [])[1] || "127.0.0.1";
}
// proxying requests from /analytics to www.google-analytics.com.
app.use("/analytics", proxy("www.google-analytics.com", {
proxyReqPathResolver: function (req) {
return req.url + (req.url.indexOf("?") === -1 ? "?" : "&")
+ "uip=" + encodeURIComponent(getIpFromReq(req));
}
}));
app.listen(1280);
console.log("Web application ready on http://localhost:1280");Несколько последних строк здесь делают прокси. Единственная хитрость, которую мы здесь делаем, вместо просто прокси, мы обнаруживаем и добавляем IP-адрес клиента явно в форме Протокол измерения URL-параметр Отказ Это необходимо для сбора точных данных о местоположении, поскольку все запросы на Google Analytic изначально исходят от IP-адреса нашего сервера, который остается постоянным.
После настройки нашего сервера прокси, мы можем проверить, будет ли запрос нашим /собирать Конечная точка теперь успешно возвращает 200 HTTP HTTP:
Мы можем использовать, например, анонимное соединение для проверки того, что расположение также правильно подобрано.
Этот подход «Proxy Server» – это быстрый обходной путь для аналитики, который позволяет вашим услугам избежать блокаторов рекламы. Но этот метод опирается на боковой стороне браузера, и если сценарий браузера по какой-то причине не отправляет информацию аналитики нашим серверам, мы ничего не получаем.
Последний возможный шаг, если вы хотите реализовать твердое решение, это отправить аналитику непосредственно с сервера, используя библиотеки на боковых серверах, доступных для разных языков ( Nodejs , Python , Ruby , | Php ). Этот подход определенно избегает любых блокаторов контента, поскольку каждый запрос на серверы аналитики поступают непосредственно с наших серверов.
Опять же, демонстрационное приложение доступно на Github Не стесняйтесь тестировать это! Дайте мне знать, если у вас есть какие-либо отзывы или интересные переживания, используя этот подход.
Спасибо за прочтение!
Оригинал: “https://www.freecodecamp.org/news/save-your-analytics-from-content-blockers-7ee08c6ec7ee/”