FireCloack v1 SEO клоака на Машинном Обучении. - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.4082
BTC/USD69564.4707
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 18.09.2019, 10:12   #1
iFirestarter
Senior Member
 
Регистрация: 18.06.2013
Сообщений: 372
Бабло: $56080
По умолчанию FireCloack v1 SEO клоака на Машинном Обучении.

Как работают такого рода скрипты:
Если IP посетителя(бота) есть в базе поисковых(или дргуих) ботов, ему подсовываем нужный контент, а посетителю рекламу.

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


FireCloack v1 - решает эту проблему немного иначе:
Скрипт обучается на базе известных IP поисковых ботов, и пытается предугадать к какой группе ботов принадлежит IP.

Преимущества такого решения:
При наличии, даже не большой базы ПС, FireCloack v1 попробует предугадать кто скрывается под этим IP, даже если его нет в Базе.
Базы с IP сильно маленькие, например 40к ботов занимает база(модель) в 16 kB файл.
Есть возможность оценить и повлиять на точность определения ботов еще до начала внедрения скрипта в работу, просто обновляю базы и обучая скрипт.


Точность на базе ботов от zTDS:
baidu; Всего IP: 18691; Тестовых IP: 3738; Успешно определенных IP: 3404; Точность определения %: 91
bing; Всего IP: 2802; Тестовых IP: 560; Успешно определенных IP: 383; Точность определения %: 68
google; Всего IP: 5885; Тестовых IP: 1177; Успешно определенных IP: 989; Точность определения %: 84
mail; Всего IP: 486; Тестовых IP: 97; Успешно определенных IP: 58; Точность определения %: 59
yahoo; Всего IP: 2258; Тестовых IP: 451; Успешно определенных IP: 363; Точность определения %: 80
yandex; Всего IP: 3241; Тестовых IP: 648; Успешно определенных IP: 312; Точность определения %: 48


Как проводилось тестирование:
База ботов разделялась 80/20 % , 80 % ip - база для обучения, а 20 % тестовый набор. О тестовых IP скрипт, грубо говоря, не знал и пытался определить к какому подмножеству принадлежит тот или иной адрес.

Системные требования:
php 5.6

Как работать с FireCloack v1:
1) Залейте скрипт куда либо в папку public или куда вам нужно
2) В папку /data/ положите базы IP ботов, где название файла - это названия ПС(или нужное название категории IP), а сами ip - это простой список, где каждый - с новой строки.
3) Введите в адресную строку http://domain.com/test.php , где сможете оценить качество вашей базы, а так же - получить некоторые советы по корректировке скрипта для более точной работы.
4) После того как внесли нужные настройки в config.php, введите в адресную строку http://domain.com/train.php, чтобы обучить скрипт на новых IP.
5) Подключайте скрипт в свой PHP страницу так:

PHP код:
require(__DIR__.'/firecloack.php');

$bot firecloack(); 
в $bot - доступны следующие параметры:

$bot->isBot - true или false
$bot->class - название бота, например google
$bot->classes - название всех группа ботов на которых обучен скрипт
$bot->ip - ip Бота.

Полные примеры подключения и использование есть в example.php в корне скрипта.

ПС: Cкрипт находится в тестовом режиме и писался для академического интереса, прошу это учитывать.
ПС: Пробуйте натренировать на своих база ботов, перед тестом, обязательно перемешайте строки в файле с ботам.


Скачать FireCloack v1 или Зеркало

Актуальная информация и обновы
iFirestarter вне форума  
Старый 18.09.2019, 13:28   #2
Lord_Alfred
Хитрожопый
 
Аватар для Lord_Alfred
 
Регистрация: 15.07.2008
Сообщений: 599
Бабло: $93800
По умолчанию

Почему решил обучать модель на IP адресах, а не на триплетах (IP, hostname, UserAgent)? (хотя если покумекать, то можно и ещё параметров докинуть на самом деле).

Зачем мучаться с обучением через устаревший/примитивный байесовский классификатор? FastText наше всё щас.

PS: точность определения 48% - это ужас. Я бы такое даже не выкладывал)
В "угадайку" твой скрипт щас играет. Гораздо точнее определение будет тупо проверяя признаки в UA или делая ip2host -> host2ip.

PPS: на серче правильно сказали про то, что это лишние накладные расходы и надо тупо смотреть двигается ли мышка
__________________
Мой блог в Telegram: https://tglink.ru/Lord_Alfred
Тесты производительности VPS: https://tglink.ru/VPSBench - присылайте с рефкой

Последний раз редактировалось Lord_Alfred; 18.09.2019 в 13:35.
Lord_Alfred вне форума  
Старый 18.09.2019, 13:35   #3
iFirestarter
Senior Member
 
Регистрация: 18.06.2013
Сообщений: 372
Бабло: $56080
ТС -->
автор темы ТС По умолчанию

На самом деле, его взял, потому что самый легко алгоритм. FastText - бомба, я уже работал ним, но и он не сильно подходит под такие цели. В идеале нужно учитывать вложеность подсетей, но пока влом реализовывать.
iFirestarter вне форума  
Старый 18.09.2019, 13:41   #4
Lord_Alfred
Хитрожопый
 
Аватар для Lord_Alfred
 
Регистрация: 15.07.2008
Сообщений: 599
Бабло: $93800
По умолчанию

Как pet-project такое запилить - идея прикольная (каюсь, сам хотел примерно тоже самое для себя сделать, но детектить по юзерагентам).
А вот выкладывать с такой точностью - ну не знаю, стрёмно если кто-то внедрит себе (понадеясь на чудеса), а потом отловит банов и пойдут в тебя шишками кидаться...

PS: а почему FastText не сильно подходит? Он лучше классифицирует, можно через flask/aiohttp поднять микросервис локально с включенной моделькой (у ft есть питонячий интерфейс отличный), на который уже слать запрос для детекта, а он бы отвечал бот это или нет.
Но опять же повторю, что всё это не нужно )
__________________
Мой блог в Telegram: https://tglink.ru/Lord_Alfred
Тесты производительности VPS: https://tglink.ru/VPSBench - присылайте с рефкой
Lord_Alfred вне форума  
Старый 18.09.2019, 13:46   #5
iFirestarter
Senior Member
 
Регистрация: 18.06.2013
Сообщений: 372
Бабло: $56080
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от Lord_Alfred Посмотреть сообщение
Как pet-project такое запилить - идея прикольная (каюсь, сам хотел примерно тоже самое для себя сделать, но детектить по юзерагентам).
А вот выкладывать с такой точностью - ну не знаю, стрёмно если кто-то внедрит себе (понадеясь на чудеса), а потом отловит банов и пойдут в тебя шишками кидаться...
Просто взял базу от Зтдс и все. На выходных соберу со своих логов, есть пару соток Гб, попробую обучить.
iFirestarter вне форума  
Старый 18.09.2019, 13:48   #6
Lord_Alfred
Хитрожопый
 
Аватар для Lord_Alfred
 
Регистрация: 15.07.2008
Сообщений: 599
Бабло: $93800
По умолчанию

А, там данные заведомо плохие были в обучении, поэтому такие результаты

Ну ты попробуй подшаманить данные вначале как всегда делают препроцессинг. Явно результаты лучше будут )

UPD: с "парой соткой ГБ" - как раз Байес может не вывезти, надо будет идти смотреть на fastText.. )
__________________
Мой блог в Telegram: https://tglink.ru/Lord_Alfred
Тесты производительности VPS: https://tglink.ru/VPSBench - присылайте с рефкой
Lord_Alfred вне форума  
Старый 20.09.2019, 18:50   #7
Markus
Ня?
 
Аватар для Markus
 
Регистрация: 13.12.2009
Сообщений: 42
Бабло: $9990
По умолчанию

ip - адресов мало...только с ип и классификатор не нужен можно просто вычленять подсеть или тупо по ип фильтровать...
для нормальной работы нужно дофига признаков как выше уже написали юзер агент и не просто он а конкретно версия двигла например. страна. какой нить жс тест на клиенте и тд... и влобавок признаки банов сайтов аккав и тд...те ип хостатвсы после которых ресурсы ушли в жопу...
Markus вне форума  
Старый 03.10.2019, 12:48   #8
iFirestarter
Senior Member
 
Регистрация: 18.06.2013
Сообщений: 372
Бабло: $56080
ТС -->
автор темы ТС По умолчанию

Приветствую. По совету Lord_Alfred(Мик Фокси, это Ты?) и Markus"а сделал анализ IP+User Agen. Спасибо, большое.


Вообщем обновил скрипт:
теперь, он анализирует не только ip но и User Agent.
База ботов IP+User Agent была получена из своих логов, с дорвеев, размером в 1Гб. Больше не хотел брать, ибо предобработка(отсев ботов от пользователей) базы заняла только 6 часов.

По результатам:
baidu; Всего IP+User Agent: 17; Тестовых IP+User Agent: 3; Успешно определенных IP+User Agent: 2; Точность определения %: 66
bing; Всего IP+User Agent: 358; Тестовых IP+User Agent: 71; Успешно определенных IP+User Agent: 70; Точность определения %: 98
bots; Всего IP+User Agent: 953; Тестовых IP+User Agent: 190; Успешно определенных IP+User Agent: 185; Точность определения %: 97
curl; Всего IP+User Agent: 20; Тестовых IP+User Agent: 4; Успешно определенных IP+User Agent: 1; Точность определения %: 25
google; Всего IP+User Agent: 6133; Тестовых IP+User Agent: 1226; Успешно определенных IP+User Agent: 1226; Точность определения %: 100
mail; Всего IP+User Agent: 84; Тестовых IP+User Agent: 16; Успешно определенных IP+User Agent: 15; Точность определения %: 93
yahoo; Всего IP+User Agent: 1155; Тестовых IP+User Agent: 231; Успешно определенных IP+User Agent: 227; Точность определения %: 98
yandex; Всего IP+User Agent: 732; Тестовых IP+User Agent: 146; Успешно определенных IP+User Agent: 145; Точность определения %: 99

Из минусов:
IP типа 127.0.0.1 или 192.168.1.1 определяются как "Бот", любой IP кто пришел с User Agent ПС, определяются как "Бот"

Добавил:
- простой парсер IP+User Agent из стандартных логов Nginx, смотрите папку /parser/

Внимание: Возможен отсев % реальных посетителей, любых подозрительных определяет как "бот".
Внимание: Не тестировать на больший боевых проектах.

Скачать FireCloack v2 Базы в комплекте.
Актуальная информация будет тут
iFirestarter вне форума