Открыто

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

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

Цена: 2000р.
Взнос: 2000р.

Основной список: 48 участников

Резервный список: 3 участников

  1. analytic

    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 рекламы.

    Рекламу делаем по правилам, отписываемся в теме для занесения в список.
     
    3 пользователям это понравилось.
  2. Последние события

    1. prosper

      prosper участвует в складчине.

      8 авг 2018 в 14:38
    2. prosper

      prosper не участвует в складчине.

      8 авг 2018 в 14:38
    3. Михаил 777

      Михаил 777 не участвует в складчине.

      3 авг 2018
    4. Михаил 777

      Михаил 777 участвует в складчине.

      3 авг 2018
  3. analytic

    analytic analytic ОргОрганизатор (А)

    РЕЗЕРВ


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



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



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

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

     
    Последнее редактирование: 11 фев 2018
    1 человеку нравится это.
  4. analytic

    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 – одна из сложных задач, но в то же время -позволяющая получать разнообразные и комбинированные данные — в зависимости от аналитических задач.
     
  5. Info00

    Info00 Info00 ОргОрганизатор

    первый ))))
    предлагаю себя на роль проверяющего ))))
     
    1 человеку нравится это.
  6. analytic

    analytic analytic ОргОрганизатор (А)

    Хорошо будешь....другие проверяющие уже есть

    Порядок такой = набираем 40 человек-> 7-14 дней на доработку скрипта на автономность от разработчика-> отдаю проверяющим
     
    1 человеку нравится это.
  7. Huawei

    Huawei Huawei ЧКЧлен клуба

    В подпись поставил. Реклама: раз, два
     
    1 человеку нравится это.
  8. SkyRuss

    SkyRuss SkyRuss ЧКЧлен клуба

    Не знаю буду ли участвовать, но в подпись для поддержки добавил.
     
    1 человеку нравится это.
  9. lexgaga

    lexgaga lexgaga ЧКЧлен клуба

    В подпись поставил. Реклама:
    1
    2
     
    1 человеку нравится это.
  10. analytic

    analytic analytic ОргОрганизатор (А)

    Имеется в виду - скрипт будет работать более года
     
  11. Setrak

    Setrak Setrak ЧКЧлен клуба

    1 человеку нравится это.
  12. antro-ser

    antro-ser antro-ser ЧКЧлен клуба

    Обновления предвидятся?
     
  13. analytic

    analytic analytic ОргОрганизатор (А)

    Имеется ввиду доработка функционала....если есть предложения готов конечно выслушать и оценить трудоемкость.
     
    1 человеку нравится это.
  14. antro-ser

    antro-ser antro-ser ЧКЧлен клуба

    Если вдруг что-то перестанет работать или выйдет версия 2.0.
     
  15. analytic

    analytic analytic ОргОрганизатор (А)

    Скрипт - логически завершен. Выхода новых версий не будет. В рамках версии - баги правятся.

    Но будут другого рода аналитические скрипты с другим функционалом.
     
    1 человеку нравится это.
  16. antro-ser

    antro-ser antro-ser ЧКЧлен клуба

    Приоткрой, плиз, занавес дальнейших планов,
     
  17. analytic

    analytic analytic ОргОрганизатор (А)

    Ну через 7-14 дней ждите от меня главную складчину =)
    Порядок старта складчин:
    1) Базы
    2) Данная складчина
    3) Главная складчина.

    Это план на этот год.
    п.с. в остальное время буду докапываться до инфобизнесменов в авторском разделе:D
     
  18. antro-ser

    antro-ser antro-ser ЧКЧлен клуба

    А что за базы?
     
  19. analytic

    analytic analytic ОргОрганизатор (А)

    1 человеку нравится это.
  20. antro-ser

    antro-ser antro-ser ЧКЧлен клуба

    1 человеку нравится это.
  21. htrmaster

    htrmaster htrmaster ОргОрганизатор

    видео конечно урезано, возможно и есть функционал:
    1. экспорт данных в более табличный вид при выводе, может в эксель) и даже в виде диаграмм?
    2. может какой-то интерфейс для задачи условий и фильтров?
     
    1 человеку нравится это.

Поделиться этой страницей