[php script] A-BOT DETECT - Система анализа и распределения трафика

Тема в разделе "Бизнес и свое дело", создана пользователем analytic, 11 фев 2018.

Статус обсуждения:
Комментирование ограничено.
  1. 11 фев 2018
    #1
    analytic
    analytic ОргОрганизатор (А)
    bot-detection.jpg


    Об авторе:

    Лучший способ познакомится с автором — это участвовать в его авторской складчине и желательно не дорогой :D Ребята — такая есть (здесь есть и шаблоны Zennoposter и другие различные бонусы). Также рассказан мой путь от вебмастера до ботовода и от ботовода до разработчика на PHP. При чём — указанное выше — это не основная работа (а вечерняя)


    Представляю Вам свой продукт A-BOT DETECT. Для чего он нужен?



    Его основные задачи:

    1. Независимая веб-аналитика с неограниченного числа доменов

    2. Распределение трафика по большому числу параметров и условий

    3. Статистка переходов по редиректам

    4. Статистика показов баннеров

    5. Определение бот-трафика.


    предистория:

    Года 2 назад = решил вернуться в сайтостроение. Для этого подтянул свой уровень PHP. И как следствие возник вопрос в независимой аналитике . Стояла также задача прокачать свой уровень в контекстной рекламе для ряда знакомый в ecommerce секторе.

    Первоначально стояла задача в отлове бот-трафика на сравнении данных IP и IP DNS. Я отлично понимал, что бот-трафик = либо под прокси либо под VPN. Как некоторые из Вас знают = это надежный способ -выявить источник "бот-трафика" - первоначально стояла задача фиксации кампаний по utm меткам.

    После были добавлены различные базы данных и параметров определяемых c помощью javascript. И выработана общая концепция = как взаимодействую сайты-лендинги с сайтом-база.

    В чем концепция:

    Есть сайт-лендинг(много сайтов) , есть код (PHP+Javascript) -который собирает данные о пользователе и передает их сайту-базе. Тут нужно понимать на элементарном уровне код (об этом будет в инструкции)

    Далее по полученным параметрам - мы можем сделать много чего.. В частности создать условие (на основе полученных параметров) на основе которого произойдёт
    1) Отображение нужного текстового блока/баннера
    2) Редирект

    Далее в систему кодов системы заложены сниппеты
    1) Учёт переходов по редиректам
    2) Учёт показов блока/баннера

    Т.е. на основе (нижеуказанных параметров) - мы можем строить свои лендинги с динамическим контентом и с редиректами. Да тут как минимум надо разбираться в верстке.:)

    Но это того стоит - с учётом гибкости встраивания данных условий в любой сайт (как на php так и на html)

    Сравнивать данную систему с Кейтаро или другими tds|аналитическими системами имеет смысл только в тех функциях = для которых разрабатывалась система A-BOT DETECT- а именно:
    1. Учёт трафика по большому кол-ву параметров (которых нет у большинства). Анализ кампаний с наибольшим бот-трафиком.
    2. Гибкой системы распределения трафика. Внедрение на уровне кода.

    Теперь о параметрах

    1. Параметр IP (PHP) - IP через PHP код
    2. Параметр IP (JS) - IP через JS код

    3. Параметр IPW1 - утечка локального IP через WebRTC
    Нет локального IP или локальный IP разный для одинаковых IP пользователей = БОТ ТРАФИК

    4. Параметры IPW2 -утечка IPv6 через WebRTC - существует IPv6 БОТ ТРАФИК

    5. Параметры IPW3 - утечка IPv4 через WebRTC. IPv4 не равен IP БОТ ТРАФИК

    6. Параметр Страна (IP) - Страна пользователя
    7. Параметр Код страны (IP) - Таблица кодов будет. Иногда проще.
    8. Параметр Город (IP) - Город
    9. Параметр Регион (IP) - Регион
    10. Параметр ISP (IP) - Интернет провайдер . Часто используется в распределении ботов. Пример сниппета

    PHP:
    <?php
    if ($check["isp"]=="Yandex LLC")
    {
    echo "выводим страницу, которую надо проиндексировать Yandex";
    }
    elseif ($check["isp"]=="Google LLC")
    {
    
    echo "выводим страницу, которую надо проиндексировать Google";
    }
    
    elseif ($check["isp"]=="Yahoo! Inc.")
    {
    
    echo "выводим страницу, которую надо проиндексировать Yahoo";
    }
    else
    
    {
    echo "выводим страницу для обычного пользователя";
    }
    
    ?>
    
    



    11. Параметр широта и долгота (IP). Если требуется распределять трафик по диапазонам.

    12. Параметр тип соединения (IP). Если тип соединения у пользователя не соответствует -БОТ ТРАФИК



    13. Параметр часовой пояс (IP).

    14. Параметр IP DNS . Для получения данного параметра - необходима настройка на уровне BIND . Это будет в итоговом материале.

    15. Параметр Страна (IP DNS)
    16. Параметр Код страны (IP DNS)
    17. Параметр Город (IP DNS)
    18. Параметр Регион (IP DNS)
    19. Параметр ISP (IP DNS)
    20. Параметр тип соединения (IP DNS)
    21. Параметр часовой пояс (IP DNS)

    22. Параметр USERAGENT (PHP) - тут понятно юзерагент полученный PHP кодом

    23. Параметр тип юзерагента (PHP)


    Определяемы типы юзерагентов
    1. Браузер
    2. Бот
    3. Feed reader
    4. Библиотек
    5. Мобильное приложение
    6. Персональный информационный менеджер - ПИМ
    7. Медиаплееры

    24. Параметр имя юзерагента (PHP) - будет таблица с именами распространеных ботов и браузеров

    25. Параметр версия юзерагента (PHP)

    26. Параметр движок юзерагента (PHP)


    27. Параметр имя операционной системы (PHP) - будет таблица с ОС

    28. Параметр версия операционной системы (PHP)

    29. Параметр разрядность операционной системы (PHP)

    30. Параметр устройство (PHP)

    Список определяемых устройств
    1 Компьютер
    2 Смартфон
    3 Планшет
    4 Мобильный телефон
    5 Консоль
    6 Телевизор
    7 Автомобильный браузер
    8 Смарт-дисплей
    9 Камера
    10 Портативный медиа-плеер
    11 Фаблет



    31. Параметр модель устройства (PHP) -
    возможность распределения трафика по модели устройства (телефона или планшета)


    32. Параметр бренд устройства (PHP) -
    возможность распределения трафика по бренду устройства.

    33. Параметры для USERAGENT (JS) -
    Юзерагент полученный javascript кодом. Если
    USERAGENT (JS) не равен USERAGENT (PHP) БОТ ТРАФИК
    34. Параметр тип юзерагента (JS)
    35. Параметр имя юзерагента (JS)
    36. Параметр версия юзерагента (JS)
    37. Параметр движок юзерагента (JS)
    38. Параметр имя операционной системы (JS)
    39. Параметр версия операционной системы (JS)
    40. Параметр разрядность операционной системы (JS)
    41. Параметр устройство (JS)
    42. Параметр модель устройства (JS)
    43. Параметр бренд устройства (JS)

    44. Параметр REFERRAL Учёт адреса сайта (полного) с которого пришёл трафик. Учёт прямых заходов и через сайты
    45. Параметр GET
    (Отслеживание кампаний и других параметров)
    Отслеживаем стандартные метки кампаний и любые GET передаваемые параметры

    46. Параметры расширения экрана - Расширение экрана сгенерированно и не соответствует устройству - БОТ ТРАФИК

    47. Параметры системного времени

    48. Параметр число плагинов - Нет плагинов. БОТ ТРАФИК

    49. Параметр список плагинов - Плагины генерируются для одного IP - БОТ ТРАФИК
    50. Параметр версия FLASH - Flash отсутстует - скорее всего БОТ ТРАФИК
    51. Параметр число визитов - много визитов с одного IP и с разных устройств в определенный промежуток времени - БОТ ТРАФИК
    52. Параметр язык браузера - используется в доп. проверках
    53. Параметр Cookies - Куки выключены - БОТ ТРАФИК
    54. Параметр Fingerprint2 - Сгенерированный Fingerprint2 - БОТ ТРАФИК

    55. Параметр временная зона (JS) Не совпадает временная зона - локально и системно БОТ ТРАФИК

    56. Параметр проверки CHECK1 = 0 . если не совпадает страна IP и страна IP DNS (элитной прокси или VPN). БОТ ТРАФИК
    57. Параметр проверки CHECK2 = 0. если не совпадает город IP и город IP DNS (элитной прокси или VPN). БОТ ТРАФИК
    58. Параметр проверки CHECK3= 0. если не совпадает ISP IP и ISP IP DNS (элитной прокси или VPN). БОТ ТРАФИК
    59. Параметр проверки CHECK4= 0. если не совпадает локальная и системная временная зона. БОТ ТРАФИК
    60. Параметр проверки CHECK5 = 0, юзерагенты PHP и JS не равны - БОТ ТРАФИК
    61. Параметр проверки CHECK6 = 0, если язык в браузере не соответствует стране пользователя БОТ ТРАФИК
    62. Параметр проверки CHECK7=0 . Выявлен публичный прокси. БОТ ТРАФИК



    НА ОСНОВЕ ПОЛУЧЕННЫХ ВЫШЕ ПАРАМЕТРОВ МЫ ФОРМИРУЕМ УСЛОВИЯ, на основе которых определяем что делать если условие ИСТИНО - редирект, или отображение рекламного баннера.

    Пример сниппета

    PHP:
    <?php
    
      echo "Сейчас вы будете направлены на страницу для загрузки необходимой программы";
     
     
      if ($check['name_os'] == 'Windows')   {  echo "<script language='JavaScript'>window.location.href = 'http://www.soft.ru/windows_download.php'</script>"; }
     
      if ($check['name_os'] == 'Android')   {  echo "<script language='JavaScript'>window.location.href = 'http://www.soft.ru/android_download.php'</script>"; }
     
      if ($check['name_os'] == 'iOS')   {  echo "<script language='JavaScript'>window.location.href = 'http://www.soft.ru/ios_download.php'</script>"; }
     
      if ($check['name_os'] == 'Windows Phone')   {  echo "<script language='JavaScript'>window.location.href = 'http://www.soft.ru/wphone_download.php'</script>"; }
     
    
    ?>


    Документация к программе “A-BOT DETECT”.




      • О программе “A-BOT DETECT”
      • Конкурентные преимущества
      • Принцип работы
      • Интерфейс программы
      • Система проверки трафика
      • Настройка системы
        1. Установка программы A-BOT DETECT

        2. Настройка домена для сбора информации
      • Работа с редиректами и баннерами
        1. Назначения редиректов

        2. Виды редиректов, баннеров.

        3. Условия возникновения событий (Полная карта событий)
          1. Параметр IP (PHP)

          2. Параметр IP (JS)

          3. Параметры IPW1, IPW2, IPW3

          4. Параметр Страна (IP)

          5. Параметр Код страны (IP)

          6. Параметры Город , Регион, ISP (IP)

          7. Параметр широта и долгота (IP)

          8. Параметр тип соединения (IP)

          9. Параметр часовой пояс (IP)

          10. Параметры для IP DNS

          11. Параметр USERAGENT (PHP)

          12. Параметр тип юзерагента (PHP)

          13. Параметр имя юзерагента (PHP)

          14. Параметр версия юзерагента (PHP)

          15. Параметр движок юзерагента (PHP)

          16. Параметр имя операционной системы (PHP)

          17. Параметр версия операционной системы (PHP)

          18. Параметр разрядность операционной системы (PHP)

          19. Параметр устройство (PHP)

          20. Параметр модель устройства (PHP)

          21. Параметр бренд устройства (PHP)

          22. Параметры для USERAGENT (JS)

          23. Параметр REFERRAL

          24. Параметр GET (Отслеживание кампаний и других параметров)

          25. Параметры расширения экрана

          26. Параметры системного времени

          27. Параметр число плагинов

          28. Параметр список плагинов

          29. Параметр версия FLASH

          30. Параметры системного времени

          31. Параметр число визитов

          32. Параметр язык браузера

          33. Параметр КУКИ

          34. Параметр временная зона (JS)

          35. Параметр проверки CHECK1

          36. Параметр проверки CHECK2

          37. Параметр проверки CHECK3

          38. Параметр проверки CHECK4

          39. Параметр проверки CHECK5

          40. Параметр проверки CHECK6

          41. Параметр проверки CHECK7




      • Частичная карта событий.
        1. Особенности работы с частичной картой событий. Работа с ботами без Javascript




    Конкурентные преимущества.

    Сейчас на рынке существует много различных аналитических систем и систем распределения трафика. Есть бесплатные и есть платные. Есть удобные и менее удобные. Есть гибкие и менее гибкие. Но самое главное — данные системы должны решать поставленные перед ними задачи. И мои задачи и задачи моих клиентов — не решались «уже готовыми системами». Стояла острая задача (которая стоит у многих и в настоящий момент) определения бот-трафика в рекламных кампаниях (контекстная реклама ,баннерные и тизерные сети). Для тех, кто не в курсе — баланс «слитый» за бот-трафик при предъявлении доказательств - востанавливается.:D


    Данный продукт - является полностью авторским продуктом и объединением двух моих двухгодичных скриптов (1. простая веб-аналитика+данные по IP DNS и 2. Скрипт для отладки шаблонов Zennoposter).

    На основе этого — был полностью переписан код на базе Laravel 5 (PHP 7) + MongoDB (NoSQL). Продукт делаю/дорабатываю для себя.

    Для кого инструмент

    Для тех кто работает с трафиком : вебмастера, маркетологи, арбитражники, специалисты по контекстной и медийной рекламы и т.п.

    Будет ли инструкция.

    Да будет — подробнейшая инструкция. От установки до практического применения.

    Нужны ли особые знания.

    Нужно понимать сниппеты (элементы готового логического кода), указанные в инструкции — в случае создания сложных условий распределения и анализа трафика. По сути — здесь нечего сложного нет.

    Подойдет ли новичкам.

    Я не могу отвечать за всех новичков. Я сторонник парадигмы - «Богатые -становятся ещё богаче, опытные -ещё опытнее ну и наоборот =)» . В любом случае — у Вас на руках будет практический инструмент — который поможет определять «выгодные и убыточные» источники трафика. В любом случае — перед участие читаем полностью инструкцию (она будет доступна во втором посте)— и принимаем решение.Я в отличие от многих коллег - не предлагаю "кота в мешке":D

    Будут ли кейсы

    Как таковых кейсов не будет. Продается инструмент для работы.

    В инструкции я распишу особенности работы с различными источниками трафика на базе системы A-BOT DETECT


    Есть ли защита

    Конечно. Лицензия на домен. Всё остальное как базы и скрипты - будут работать на вашем VPS -автономно

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



    Видео



    Будут ли бонусы за рекламу

    Чтобы пользоваться скриптом безлимитно.
    До ЧК - 5 реклам в тематических темах.
    От ЧК и Выше - подпись + 2 рекламы.

    Рекламу делаем по правилам, отписываемся в теме для занесения в список.
     
    5 пользователям это понравилось.
  2. 11 фев 2018
    #2
    analytic
    analytic ОргОрганизатор (А)
    РЕЗЕРВ


    Кто поставил подпись ранее - просьба подкорректировать.



    Список участников с вечной лицензией



    Список участников на бонус в 500 рублей
    Ragnar Lodbrok
    brodyaga555
    Виктор МСК
    pasha458
    jetlee
    arstotzka

    за добровольную поддержку автора:)

     
    Последнее редактирование модератором: 11 фев 2018
    1 человеку нравится это.
  3. 11 фев 2018
    #3
    analytic
    analytic ОргОрганизатор (А)
    Сложностей в создании PHP условий -нет. Если есть представление в элементарной логике PHP языка.

    Далее на примере условий для IP (тут может быть любой из параметров) приведу ряд сниппетов для создания условий

    PHP:
    *****Создание индивидуального условия*****
    
    <?php
      if ($check['ip'] == '109.252.1.2 ')
      {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
      }
    
    ?>
    
    *****Создание коллективного условия*****
    <?php
    $ip_begin=ip2long('77.5.128.0');
    $ip_end=ip2long('77.5.128.255');
    $ip_real=ip2long($check['ip']);
    
    if($ip_real>=$ip_begin&&$ip_real<=$ip_end)
    
    {
    echo "Для пользователей сети 'Northnet' мы предлагаем конкурс";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/afisha.php'</script>";
    }
    
    ?>

    PHP:
    3 примера кода для работы со списком
    
    
    Пример № 1
    <?php
      if ($check['ip'] == '109.252.1.1 ')
      {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
      }
      if ($check['ip'] == '109.252.1.2 ')
      {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
      }
      if ($check['ip'] == '109.252.1.3 ')
      {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
      }
      if ($check['ip'] == '109.252.1.4 ')
      {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
      }
      if ($check['ip'] == '109.252.1.5')
      {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
      }
    ?>
    
    
    Пример № 2
    
    <?php
    if (($check['ip'] == '109.252.1.1')||($check['ip'] == '109.252.1.2')||($check['ip'] == '109.252.1.3')||($check['ip'] == '109.252.1.4')||($check['ip'] == '109.252.1.5'))
    {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
    }
    ?>
    
    
    Пример № 3
    
    <?php
    
    switch ($check['ip'])
    {
    case '109.252.1.1'  :
    {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
    break;
    }
    
    case '109.252.1.2'  :
    {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
    break;
    }
    
    case '109.252.1.3'  :
    {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
    break;
    }
    
    case '109.252.1.4'  :
    {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'</script>";
    break;
    }
    
    case '109.252.1.5'  :
    {
    echo " Вы не закончили оформление заказа в нашем интернет -магазине";
    echo "<script language='JavaScript'>window.location.href = 'http://www.shop.ru/cart.php'";
    break;
    }
    }
    
    ?>
    
    
    
    Выше указанные условия можно сформировать c помощью программ автоматизации , которые могут записывать информацию в файл. (Например, с помощью программы Zennoposter).





    Более сложная реализация
    PHP:
    *****Пример работы с файлом txt*****
    
    // Файл ip-list.txt имеет следующий вид
    
    
    109.252.1.1
    109.252.1.2
    109.252.1.3
    109.252.1.4
    109.252.1.5
    
    
    // php файл для работы с файлом ip-list.txt
    <?php
    
    $file_handle = fopen("ip-list.txt", "r");
    while (!feof($file_handle)) {
       $ip_txt = fgets($file_handle);
       if ($check['ip']==$ip_txt)
      
           {
               echo "Месяц назад вы купили/интересовались книгой про 'Инвестиции'. Через 5 секунд вы будете перенаправлены на курс 'Инвестируй с умом'";
               echo "<meta http-equiv='refresh' content='5;http://mysite.ru/best.php'>";
         
         
           }
    
       }
    fclose($file_handle);
    
    
    
    ?>
    
    
    *****Пример работы с базой  mysql. *****
    
    Итак -есть база данных с необходимой информацией (положим маркетолог, аналитик или менеджер интернет-магазина вёл статистику и импортировал exel таблицы в mysql.
    Положим база с именем 'clients' имела следующие таблицы 'user1' (те кто купил много), 'user2' (те кто нечего не купил) и т.п.)
    Стоит задача - предложить первым (те кто покупают) - купить ещё;
    
    // Примерный упрощенный код базы clients.sql
    
    -- phpMyAdmin SQL Dump
    -- version 4.7.3
    -- https://www.phpmyadmin.net/
    --
    -- Хост: 127.0.0.1:3306
    -- Время создания: Янв 15 2018 г., 14:18
    -- Версия сервера: 5.6.37
    -- Версия PHP: 7.1.7
    
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
    SET time_zone = "+00:00";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;
    
    --
    -- База данных: `clients`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Структура таблицы `user1`
    --
    
    CREATE TABLE `user1` (
      `id` int(11) NOT NULL,
      `ip` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `info` varchar(255) COLLATE utf8_unicode_ci NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    --
    -- Дамп данных таблицы `user1`
    --
    
    INSERT INTO `user1` (`id`, `ip`, `info`) VALUES
    (1, '109.252.1.1', 'Купил товар № 1'),
    (2, '109.252.1.2', 'Купил товар № 2'),
    (3, '109.252.1.3', 'Купил товар № 3'),
    (4, '109.252.1.4', 'Купил товар № 4');
    
    --
    -- Индексы сохранённых таблиц
    --
    
    --
    -- Индексы таблицы `user1`
    --
    ALTER TABLE `user1`
      ADD PRIMARY KEY (`id`);
    
    --
    -- AUTO_INCREMENT для сохранённых таблиц
    --
    
    --
    -- AUTO_INCREMENT для таблицы `user1`
    --
    ALTER TABLE `user1`
      MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;COMMIT;
    
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    
    
    
    <?php
    $link = mysqli_connect("127.0.0.1", "root", "", "clients");
    
    if (!$link) {
        echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
        echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
        exit;
    }
    
    
    $sql = "SELECT *
            FROM   user1
            WHERE  ip =".$check['ip'];
    
        $result = $link->query($sql);
        $row = $result->fetch_assoc();
    
        if ($row)
      
            {
               echo "Спасибо за лояльность.Через 5 секунд Вам будет предложен товар года";
               echo "<meta http-equiv='refresh' content='5;http://mysite.ru/best.php'>";
            }
    
    
    
    mysqli_close($link);
    ?>
    
    
    
    
    
    *****Пример работы с базой sqlite*****
    
    <?php
    
    $db = new SQLite3('clients.db');
    
    
    $results = $db->query('SELECT * FROM user1 WHERE ip='.$check['ip']);
    $row = $results->fetchArray();
    
    if ($row)
    
            {
               echo "Спасибо за лояльность.Через 5 секунд Вам будет предложен товар года";
               echo "<meta http-equiv='refresh' content='5;http://mysite.ru/best.php'>";
            }
    
    
    $db->close();
    
    
    ?>
    
    
    
    
    ***** Пример работы с базой mongodb *****
    
    
    У нас есть база mongodb с именем "clients" и с коллекцией "users1"
    
    Общий вид базы коллекции "user1" следующий
    
    {
        "_id" : ObjectId("5a5caa91f733c2143014a649"),
        "id" : 1,
        "info" : "Купил товар № 1",
        "ip" : "109.252.1.1"
    },
    {
        "_id" : ObjectId("5a5caa91f733c2143014a64a"),
        "id" : 2,
        "info" : "Купил товар № 2",
        "ip" : "109.252.1.2"
    },
    {
        "_id" : ObjectId("5a5caa91f733c2143014a64b"),
        "id" : 3,
        "info" : "Купил товар № 3",
        "ip" : "109.252.1.3"
    },
    {
        "_id" : ObjectId("5a5caa91f733c2143014a64c"),
        "id" : 4,
        "info" : "Купил товар № 4",
        "ip" : "109.252.1.4"
    },
    {
        "_id" : ObjectId("5a5caa91f733c2143014a64d"),
        "id" : 5,
        "info" : "Купил товар № 5",
        "ip" : "109.252.1.5"
    },
    
    
    
    Исполняемый файл будет следующим
    
    <?php
    
    
    
    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    
    
    $filter = ['ip' => '109.252.1.1'];
    $options = [];
    
    $query = new MongoDB\Driver\Query($filter, $options);
    $cursor = $manager->executeQuery('clients.user1', $query);
    
    foreach ($cursor as $row) {
    
        if ($row)
        {
               echo "Спасибо за лояльность.Через 5 секунд Вам будет предложен товар года";
               echo "<meta http-equiv='refresh' content='5;http://mysite.ru/best.php'>";
        }
    
    }
    
    
    
    
    ?>
    
    
    
    
    
    ***** Пример работы с API *****
    
    Работа через API – подразумевает тот факт, что нами уже создана (или используется готовая) инфраструктура , работающая по принципу «запрос-ответ»
    
    Давайте смоделируем запрос:
    http://api.net/api/djkshdfjsdhfks/loyalty/109.252.1.1
    Что здесь:
    Запрос к API функциям
    “djkshdfjsdhfks”  - какой-то внутренний ключ , позволяющий получать данные
    loyalty — название метода API к которому обращаемся
    109.252.1.1  - IP пользователя — по которому хотим получить данные
    
    Можем получить ответ вида
    {
    
        "value" : 111,
    
    },
    
    или вида
    
    
    {
    
        "p1" : 111,
        "p2" : 165900,
        "p3" : “woman”
    },
    
    На основе полученных значений сформировать условие . Как вы понимаете — значений может быть и одно и несколько. Каждый параметр может быть осмысленным и задокументированным.
    
    Примерный код исполняемого файла будет выглядеть следующим образом:
    
    <?php
    $api_url = 'http://api.net/api/djkshdfjsdhfks/loyalty/'.$check['ip'];
    if( $curl = curl_init() ) {
        curl_setopt($curl,CURLOPT_URL,$api_url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        $out = curl_exec($curl);
        curl_close($curl);
      }
      $t = array ();
      $t = json_decode($out,true);
     if ($t['value']>100)
    
    {
               echo "Спасибо за лояльность.Через 5 секунд Вам будет предложен товар года";
               echo "<meta http-equiv='refresh' content='5;http://mysite.ru/best.php'>";
    }
    
    ?>
    
    
    
    


    На практике работа с конкретными значениями IP пользователей - ведётся в том случае, когда идёт работа с постоянной базой клиентов (обычно e-mail marketing). И не смотря на наличие Cookie — по прежнему многие интрнет-рекламные сети — показывают рекламу на основе нашего IP.

    В остальных случаях IP пользователя — служит для необходимым этапом для получения другой более детальной информации и пользователи (Страна, Регион, Город, Широта, Долгота, Интернет-провайдер и т.п.)

    Скорость обработки условий будет зависит от двух факторов:
    1) Технические данные VPS — где происходит обработка исполняемых файлов.
    2) Оптимизационный подход к кодостроению.


    Работать с чистым кодом PHP — приемлемо для количества IP до 50 шт. Можно работать и с гораздо большим количеством IP – при условии, что вы способны создавать код с помощью каких-либо средств автоматизации. Т.е. код создается быстро и содержит все необходимые условия . Однако в данном случае следует учитывать размер файла — чем больше размер, тем дольше он обрабатывается.
    Но в тоже время допустимо работать с файлами до 5 Мб.

    Работа со списком — приемлема до 500 IP.

    Работать с базами данных sqlite, mysql, mongodb — более приоритетней. Так как, во первых, подразумевается, что уже есть готовая инфраструктура , позволяющая сохранять необходимую аналитическую информацию (как за счёт специализированных аналитических систем, так и за счёт импорта уже обработанной аналитической информации в базу данных ), а во-вторых, скорость обработки результатов — значительно выше за счёт индексации тех полей — по которым идёт выборка данных.
    Также необходимо учитывать особенности нагрузки на сервер — в зависимости от размера базы данных. Поэтому приемлемо работать:
    sqlite<50 Мб
    50< mysql< 1000 Мб
    mongodb>1000 Мб.


    Тут у разработчиков всегда есть выбор — улучшения технических характеристик рабочего VPS или концентрация на NoSQL базах данных.


    Работа с API – одна из сложных задач, но в то же время -позволяющая получать разнообразные и комбинированные данные — в зависимости от аналитических задач.
     
  4. 11 фев 2018
    #4
    Info00
    Info00 ОргОрганизатор (П)
    первый ))))
    предлагаю себя на роль проверяющего ))))
     
    1 человеку нравится это.
  5. 11 фев 2018
    #5
    analytic
    analytic ОргОрганизатор (А)
    Хорошо будешь....другие проверяющие уже есть

    Порядок такой = набираем 40 человек-> 7-14 дней на доработку скрипта на автономность от разработчика-> отдаю проверяющим
     
    1 человеку нравится это.
  6. 11 фев 2018
    #6
    Huawei
    Huawei ДолжникДолжник
    В подпись поставил. Реклама: раз, два
     
    1 человеку нравится это.
  7. 11 фев 2018
    #7
    SkyRuss
    SkyRuss ЧКЧлен клуба
    Не знаю буду ли участвовать, но в подпись для поддержки добавил.
     
    1 человеку нравится это.
  8. 11 фев 2018
    #8
    lexgaga
    lexgaga ЧКЧлен клуба
    В подпись поставил. Реклама:
    1
    2
     
    1 человеку нравится это.
  9. 11 фев 2018
    #9
    analytic
    analytic ОргОрганизатор (А)
    Имеется в виду - скрипт будет работать более года
     
  10. 11 фев 2018
    #10
    Setrak
    Setrak ДолжникДолжник
    1 человеку нравится это.
  11. 11 фев 2018
    #11
    antro-ser
    antro-ser ЧКЧлен клуба
    Обновления предвидятся?
     
  12. 11 фев 2018
    #12
    analytic
    analytic ОргОрганизатор (А)
    Имеется ввиду доработка функционала....если есть предложения готов конечно выслушать и оценить трудоемкость.
     
    1 человеку нравится это.
  13. 11 фев 2018
    #13
    antro-ser
    antro-ser ЧКЧлен клуба
    Если вдруг что-то перестанет работать или выйдет версия 2.0.
     
  14. 11 фев 2018
    #14
    analytic
    analytic ОргОрганизатор (А)
    Скрипт - логически завершен. Выхода новых версий не будет. В рамках версии - баги правятся.

    Но будут другого рода аналитические скрипты с другим функционалом.
     
    1 человеку нравится это.
  15. 11 фев 2018
    #15
    antro-ser
    antro-ser ЧКЧлен клуба
    Приоткрой, плиз, занавес дальнейших планов,
     
  16. 11 фев 2018
    #16
    analytic
    analytic ОргОрганизатор (А)
    Ну через 7-14 дней ждите от меня главную складчину =)
    Порядок старта складчин:
    1) Базы
    2) Данная складчина
    3) Главная складчина.

    Это план на этот год.
    п.с. в остальное время буду докапываться до инфобизнесменов в авторском разделе:D
     
  17. 11 фев 2018
    #17
    antro-ser
    antro-ser ЧКЧлен клуба
    А что за базы?
     
  18. 11 фев 2018
    #18
    analytic
    analytic ОргОрганизатор (А)
    1 человеку нравится это.
  19. 11 фев 2018
    #19
    antro-ser
    antro-ser ЧКЧлен клуба
    1 человеку нравится это.
  20. 11 фев 2018
    #20
    htrmaster
    htrmaster ОргОрганизатор
    видео конечно урезано, возможно и есть функционал:
    1. экспорт данных в более табличный вид при выводе, может в эксель) и даже в виде диаграмм?
    2. может какой-то интерфейс для задачи условий и фильтров?
     
    1 человеку нравится это.
Статус обсуждения:
Комментирование ограничено.