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

Зіткнувшись днями з бібліотекою Sourcebuster.js , Вирішив розповісти готове рішення визначення джерела відвідування.

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

1. Підключення на сайті :

У статті, на офіційному сайті (посилання на яке вище) наведено посилання для завантаження готового мінімізованого js файлу. Лежить у директорії /dist . З ним і працюватимемо. Також там описана установка через npm, але оскільки це наочне посібник, його опустимо.

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

<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
....

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

</body>
</html>

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

sbjs.get

Не повинно виникати помилки і має бути виданий об'єкт з інформацією.

console_sbjs

Інформація, яка зберігається в sbjs.get.current буде потрібна нам для визначення джерела:

sbjs.get.current

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

Sourcebuster.js працює з cookie . Тому актуальна інформація набуде чинності лише після перезавантаження сторінки або відвідування користувачем будь-якого іншого посилання на сайті (щоб було перевантаження сторінки та оновлено кука).

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

<?php

/**
* Якщо ні $_COOKIE['analitic_sbjs'] то повертаємо це
*/< br />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') {
&nbsp ;   $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') {
&nbsp ;   $source = 'SEO Google';                
} elseif (mb_stripos($decode['src'], 'yandex') !== false && $decode['mdm'] == 'organic') {
&nbsp ;   $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) &amp ;& !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)') {
 &nbsp ;  $source = 'Прямі заходи';                
} elseif ($decode['mdm'] == 'display') {
    $source = 'Медійна реклама';                
} else {
    $source = 'Інші';
}
var_dump($source); // Інформація про джерело.

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

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

Навів приклад без ООП, щоб було зрозуміліше. Я вважаю, що тут важливіше розібрати, що приходить у src і mdm і що це означає в сукупності для визначення джерела.

Цей приклад не відображає всіх можливостей бібліотеки, що підключається. З рештою можна докладно ознайомитись на офіційному сайті, джерело наведене вгорі.

4167 2

Відгуки

Игорь, скорее всего так определяет сам sourcebuster. Я привел приблизительный скрипт по обработке на бэкенде этого всего, но можно переписать под себя согласно документации http://sbjs.rocks/#/usage.
Не могу разобраться почему скрипт определяет перехода из поиска Яндекса тип траффика как referral, а не organic. Изменить настройки скрипта не получается.
Тільки авторизовані користувачі можуть залишати відгуки Вхід

Схожі статті