встала задача в лог вписывать графу о посещении, обычных поисковых (извесных) ботов определяем регулярным выражением. я не о поисковых ботах, а о тех, useragent которых такой же как и в пользовательских браузерах а как отличить других ботов которые имеют одинаковый useragent невозможно. единственный действенный вариант, делать мета редирект для людей, браузеры переходят, а боты остаются, и php сравнивает тех кто перешёл и кто остался. можно ли сделать что по лучше, без редиректов и перезагрузок страниц ? например было бы хорошо iframe использовать, но он выводит значения неправильные, хотя в файле они правильные на странице есть фрейм, когда страница открыта с браузера, фрейм пишет секунды в файл. на странице под фреймом скрипт проверки, читаем файл и сравниваем с секундами. бывает погрешность на 1 секунду, но это я поправлял если открыть ботом то фрейм не читается, данные не равны но только вот почему то переменные не те идут, хотя в файле txt прописано всё то, но когда вывожу результаты переменных, то с iframe отстаёт вообще на непонятное значение, от куда оно берётся, хз, но в файле смотрю, там нужное значение, максимум на секунду отстаёт, как уже выше говорил об этом PHP: <?php sleep(1); $vremja = date('s'); $include_file_txt=file($_SERVER['DOCUMENT_ROOT'].'/iframe.txt'); $include_file = trim($include_file_txt[0]); if ($vremja === $include_file) { echo "browser"; } else { echo "bot"; } echo '<br>'.$include_file.'<br>and original '.$vremja; ?> iframe.php PHP: <?php $zna4enie_test = $_SERVER['DOCUMENT_ROOT'].'/file.txt'; $paremetr_test = 'сюда пишется секунда' file_put_contents($zna4enie_test, $paremetr_test, LOCK_EX); ?> в чём может быть дело, почему выводит результат не тот который должен быть по значениям ?
При посещении страницы вписываешь, что пришел бот. На странице отправляешь AJAX запрос на спец. адрес, в котором изменяешь на "пришел человек". Зашли с браузера, JS отправит AJAX. Пришел бот - ничего не отправит
мда... чесно я вaxуе, иными словами не описать глубину моих чувств по поводу этой темы. Я бы посоветовал погуглить данную тему и поглубже с ней ознакомится. Это самый тупейший способ что я когда либо видел еще и реализован как-то через Ж. Кстати не у всех работают фреймы, это устарелая методика, если бы я работал в ПС я бы поставил даже такой фильтр, кто юзает фреймы тот вредонос. Обожаю такие коденги
Это не сработает, если бот использует Embedded IE/Selenium/WebKit или любую другую технологию для работы с динамическими страницами. А без специальных мер по обходу данных ограничений поисковыми роботами еще и воспрепятствует индексации сайта. От простых ботов, посылающих http-запросы, может помочь сервис cloudflare Если же хочется продвинутую систему детекта, которая будет с некоторой точностью (но не 100%) определять, робот это или нет, потребуется сначала реализовать сбор и хранение как можно большего количества различных метрик, например таких: 1. Количество новых сессий с одного IP в сутки/час/минуту 2. Количество запросов с IP в час/минуту/сутки 3. Имена HTTP-заголовков запроса 4. Уникальность User-Agent'а (сейчас браузеры типа chrome и firefox обновляются автоматически и вместе с этим меняется версия в user-agent'е) на всем пуле пользователей 5. Тепловая карта движений и кликов мышью на странице, как это например реализовано в я.метрике (кстати, поможет от примитивных браузерных ботов, которые не двигают мышкой по странице) 6. Порядок запросов к различным URL и паузы между ними 7. География IP-адреса юзера, провайдер 8. Дата/время запросов по различным url 9. Если на сайте есть формы, делаем там интерактивные подсказки и меряем скорость ввода букв ...... <куча других факторов, чем больше, тем лучше> после того, как все метрики (m1, m2, ..., mN) реализованы (их лучше представить числами), собираем данные какое-то время и делим на две выборки: обучающую и контрольную, в каждой выделяем два класса: люди и боты. Т.е. нужно указать самому, какие запросы осуществлялись возможно ботами, а какие - точно не ботами. Обучающую выборку (m1, m2, ..., mN) используем, чтобы подобрать весовые коэффициенты w1, w2, ..., wN, добиваясь того, чтобы выражение m1*w1 + m2*w2 + ... + mN*wN давало 0 для людей и 1 для ботов. После того, как коэффициенты подобраны, проверяем корректность определения бот/не бот на контрольной выборке (но не используем её для подбора весов!). Если там все в порядке и процент ложных детектов низкий, можно использовать формулу для отлова роботов в будущих запросах Несмотря на кажущуюся сложность реализации, данный метод хорош своей гибкостью - можно регулярно менять формулу, основываясь на свежих данных.