Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт / ~#root -i
  • RU
  • UA
  • EN
  • Создать интернет-магазин
  • Документация
  • Блог
    • Unix-подобные ОС
    • Php
    • MySQL
    • JavaScript
    • Менеджеры пакетов
    • Docker
    • Seo
  • Вспомогательные сервисы
    • Короткие ссылки
    • Oбмен просмотрами YouTube
  • Вход
  • Регистрация
  • Главная
  • Seo
  • Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт

Анализ источника посетителей с помощью Sourcebuster.js или откуда пользователь перешел на сайт

Столкнувшись на днях с библиотекой Sourcebuster.js, решил поведать готовое решение определения источника посещения.

Информацию брал здесь. Там более подробная документация. Я же расскажу простой пример учета и отлавливания данных.

1. Подключение на сайте:

В статье, на официальном сайте (ссылка на которую выше) приведена ссылка для скачивания готового минимизированного js файла. Лежит в директории /dist. С ним и будем работать. Так же там описана установка через npm, но так как это наглядное пособие, то его опустим.

В главном файле шаблона перед закрывающимся тегом body, подключаем и запускаем скрипт.

<!DOCTYPE html>
<html>
    <head>
        ...
    </head>
    <body>
        ....
        
    <!-- sbjs аналитика -->
    <script src="sourcebuster.min.js"></script>
    <script>
      sbjs.init();
    </script>
    <!-- END sbjs аналитика -->

    </body>
</html>

Для проверки, работает ли добавленный скрипт, в консоли браузера следует набрать:

sbjs.get

Не должно возникать ошибки и должен быть выдан объект с информацией.

console_sbjs

Информация, которая хранится в sbjs.get.current потребуется нам для определения источника:

sbjs.get.current

2. Работа на серверной стороне:

Sourcebuster.js работает с cookie. Поэтому актуальная информация вступит в силу только после перезагрузки страницы или посещения пользователем любой другой ссылки на сайте (чтобы была перегрузка страницы и обновлена кука).

Работа с данными в куках проста.

<?php

/**
* Если нет $_COOKIE['analitic_sbjs'] то возвращаем это
*/
function getTempInfo() {
    $a = strtr($_COOKIE['sbjs_current'], ['|||' => '&']);
    parse_str($a, $b);
    if (!$b) {
        $b = [
            'typ' => 'organic',
            'src' => 'google',
            'mdm' => 'organic',
            'cmp' => '(none)',
            'cnt' => '(none)',
            'trm' => '(none)',
        ];
    }
    return (string) json_encode($b);
}

// Вытягиваем сохраненную информацию. Если ее нет, в analitic_sbjs, то дергаем getTempInfo()
$other = strip_tags(trim((string) $_COOKIE['analitic_sbjs']) ? : getTempInfo());

// json_decode, и приводим все в нижний регистр, для более легкого сравнения
$decode = $other ? json_decode($other, true) : [];
$decode['src'] = mb_strtolower($decode['src']);
$decode['mdm'] = mb_strtolower($decode['mdm']);

$source = 'Другие';
if ($decode['src'] == 'google' && $decode['mdm'] == 'cpc') {
    $source = 'Google Adwords';
} elseif ($decode['src'] == 'yandex' && $decode['mdm'] == 'cpc') {
    $source = 'Яндекс Директ';                
} elseif (mb_stripos($decode['src'], 'youtube') !== false) {
    $source = 'Youtube';                
} elseif (in_array($decode['src'], ['facebook', 'fb']) && in_array($decode['mdm'], ['cpc','ppc','cpa','cpm','cpv','cpp'])) {
    $source = 'Facebook реклама';                
} elseif ($decode['src'] == 'instagram' && in_array($decode['mdm'], ['cpc','ppc','cpa','cpm','cpv','cpp'])) {
    $source = 'Instagram реклама';                
} elseif (mb_stripos($decode['src'], 'google') !== false && $decode['mdm'] == 'organic') {
    $source = 'SEO Google';                
} elseif (mb_stripos($decode['src'], 'yandex') !== false && $decode['mdm'] == 'organic') {
    $source = 'SEO Yandex';                
} elseif ($decode['src'] == 'hotline' && $decode['mdm'] == 'cpc') {
    $source = 'hotline';                
} elseif ($decode['src'] == 'priceua' && $decode['mdm'] == 'cpc') {
    $source = 'Price';                
} elseif (mb_stripos($decode['src'], 'viber') !== false) {
    $source = 'Viber';                
} elseif ((mb_stripos($decode['src'], 'facebook') !== false || mb_stripos($decode['src'], 'fb') !== false) && !in_array($decode['mdm'], ['cpc','ppc','cpa','cpm','cpv','cpp'])) {
    $source = 'Facebook другое';                
} elseif ($decode['mdm'] == 'email') {
    $source = 'Email рассылка';                
} elseif ($decode['mdm'] == 'organic') {
    $source = 'SEO другое';                
} elseif ($decode['mdm'] == 'cpc') {
    $source = 'Реклама другое';                
} elseif ($decode['src'] == 'nadavi') {
    $source = 'Ek';                
} elseif ($decode['src'] == 'sendpulse') {
    $source = 'Send Pulse';                
} elseif (mb_stripos($decode['src'], 'yandex') !== false) {
    $source = 'Яндекс другое';                
} elseif ($decode['mdm'] == 'referral') {
    $source = 'Переходы с других сайтов';                
} elseif ($decode['src'] == '(direct)' && $decode['mdm'] == '(none)') {
    $source = 'Прямые заходы';                
} elseif ($decode['mdm'] == 'display') {
    $source = 'Медийная реклама';                
} else {
    $source = 'Другие';
}
var_dump($source); // Информация про источник.

Как видно, в $source будет информация об источники, с которого перешел клиент. Такой метод целесообразно применять при оформление заказа или на подобное одноразовое действие, чтобы это было не на первой странице входа юзера.

Информация хранится в $_COOKIE['analitic_sbjs'] и в $_COOKIE['sbjs_current'] (но в специфическом формате). Функция getTempInfo() здесь как страховка, вдруг у юзера отключены куки или что-то пошло не так (мыло ли). В любом случае это приблизительная информация, так как основана на js и куках.

Привел пример без ООП, чтобы было более понятно. Я считаю, что здесь важней разобрать, что приходит в src и mdm, и что это значит в совокупности для определения источника.

Этот пример не отображает всех возможностей подключаемой библиотеки. С остальным можно подробно ознакомиться на официальном сайте, источник приведен вверху.

root-i
13 Декабря 18
1772
2
Теги
Php 5.6 JavaScript Seo Php 7 Анализ
Поделиться

Комментарии

Игорь

16 Декабря 2020 14:14
Не могу разобраться почему скрипт определяет перехода из поиска Яндекса тип траффика как referral, а не organic. Изменить настройки скрипта не получается.
5

root-i

16 Декабря 2020 19:16
Игорь, скорее всего так определяет сам sourcebuster. Я привел приблизительный скрипт по обработке на бэкенде этого всего, но можно переписать под себя согласно документации http://sbjs.rocks/#/usage.
3
Имя
Электронная почта
Рейтинг
Отзыв

Другие статьи из категории

09 Июня 2020

Нулевой сниппет или расширенный сниппет, схема блока ответов в GoogleAds

Определимся для чего нужен нулевой сниппет в GoogleAds, рассмотрим структуру сниппета вопрос-ответ. Приведем пример в html и json схеме.

29 Мая 2018

Оптимизация png изображений через optipng для Google Page Speed

Приходится сталкиваться с неоптимизированными по размеру фотографиями формата png. Есть простой оптимизатор optipng, который дает возможность управлять настройками оптимизации.

29 Мая 2018

Оптимизация jpg изображений через jpegoptim для Google Page Speed

Приходится сталкиваться с неоптимизированными по размеру фотографиями формата jpeg. Есть простой оптимизатор jpegoptim, который дает возможность управлять настройками оптимизации.

Категории

  • Unix-подобные ОС
  • Php
  • MySQL
  • JavaScript
  • Менеджеры пакетов
  • Docker
  • Seo

Теги

Ubuntu 14.04 (17) Софт (11) Gearman (3) Сервисы (2) Framework (1) MVC (1) Php 5.6 (16) Cli (3) Propel (3) ORM (3) JavaScript (5) Css (1) Composer (4) Docker (3) Seo (4) MySQL (5) docker-compose (2) CentOS (1) 1С (1) Memcache (1) Memcached (1) Php 7 (6) Анализ (2) Ubuntu 18.04 (13) MySQL 5.7 (4) Генерация (2) Bower (1) Npm (1) NodeJs (3) Gulp (1) ImageCMS (2) Базы (1) JQuery (1) Сниппет (1) Apache (1) Cron (1)

Последние комментарии

alex, я вижу 2 причины почему так может быть. Не в...
root-i
04.07.22
Сделал все так как написано в статье, не работает.
alex
04.07.22
Как вариант это может происходить из-за неизвестно...
root-i
21.01.22
Чтобы убрать ошибку Uncaught TypeError: $ is not a...
wlad2.ru
11.01.22

Делюсь информацией в которой я требовал помощи и разбираясь затрачивал много времени. Если информация помогла хотя бы одному человеку, значит этот сайт создан не зря.

Благодарность, на продолжение работы сайта:
Контакты

Telegram Viber Mail

Поиск по сайту

  • Вход
  • Регистрация

Сайт работает на chmod -R