Счетчик, как отфильтровать ботов

blam

Новичок
Счетчик, как отфильтровать ботов

У меня статистика каждый день на email шлется, так там yandex и рамблер доводят ее до нескольких мб.
Хочу их отфильтровать и чтобы удобно было потом добавлять новые фильтры для поисковиков.

Как лучшк это сделать, у меня пока 3 варианта:
1. Читать боты из файла и сравнивать массив $bots[$i] с
HTTP_USER_AGENT и писать bot.txt , не будет ли тормозить сервер лишний раз ?

2. прописать в regexp ботов прямо в скрипте и выводить также
в bot.txt

3. Писать все в одну базу и потом резать как надо при выводе и отправке email
 

440hz

php.ru
Re: Счетчик, как отфильтровать ботов

Автор оригинала: blam
Как лучшк это сделать, у меня пока 3 варианта:
бот он всегда представляется. на момент записи в лог определять бота. далее по вкусу.
 

kvf77

Red Devil
blam

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

blam

Новичок
440hz
>бот он всегда представляется.
Вопрос в том, как лучше его обработать...вобщем прочти вопрос еще раз
kvf77
Меня также интересует, как бы это сделали вы
 

440hz

php.ru
Автор оригинала: blam
440hz
>бот он всегда представляется.
Вопрос в том, как лучше его обработать...вобщем прочти вопрос еще раз
я, когда ко мне приходит бот, не записываю этот вызов в лог + генерирую немного другой код страницы для бота (ссылки не выводятся с именами сессий /foo/?SID=123), а то при каждом заходе получается разная страница.
 

Фанат

oncle terrible
Команда форума
440hz, а зачем ты стартуешь сессию всем подряд? ведь сессия - это, в первую очередь, персонализация, а какой смысл персонализировать анонима?

-~{}~ 03.10.05 11:19:

1. Читать боты из файла и сравнивать массив $bots[$i] с
HTTP_USER_AGENT и писать bot.txt , не будет ли тормозить сервер лишний раз ?
почему ты не хочешь ответить себе на этот вопрос самостоятельно?
2. прописать в regexp ботов прямо в скрипте и выводить также
в bot.txt
а в чём пренципиальная разница с предыдущим?
3. Писать все в одну базу и потом резать как надо при выводе и отправке email
если тебя так интересует вопрос производительности, то зачем вообще что-то писать в базу?
 

blam

Новичок
Фанат
Разница 1 и 2 пунката в кол-ве читаемых файлов и разный сособ добавления новых поисковиков
для 3 го тоже где то хранить ботов нужно.

Насчет производительности я погорячился, мне в принципе пока все равно, т.к объем работы скрипта небольшй

Меня в первую очередь интересует как лучше сделать ?
самое простое 3 способ мне кажется, но может есть лучше.
я думаю эта тема уже заезжена, зачем велосипед изобретать.
>то зачем вообще что-то писать в базу?
ps а как без базы ?
 

kvf77

Red Devil
blam

не бывает лучше и хуже - ну - ты до сих пор этого не понял? выдели из всей своей задачи главное условие - его и реализуй.
 

Фанат

oncle terrible
Команда форума
Разница 1 и 2 пунката в кол-ве читаемых файлов и разный сособ добавления новых поисковиков
чудик.
при чём здесь какая-то "разница в количестве файлов"? Ты помнишь вообще, о чём вопрос задавал? тебя интересует ПРОИЗВОДИТЕЛЬНОСТЬ? или я ошибаюсь? или тебя интересует количество читаемых файлов?
или ты думаешь, что мы, сидя здесь, за тебя померяем производительность твоих методов и тебе расскажем?
мне в принципе пока все равно
если тебе всё равно, то зачем ты паришь мозг себе и окружающим?
 

blam

Новичок
Фанат
...перефразирую 2ю строку вопроса
вопрос каким способом лучше отделить боты от и на каком этапе это лучше сделать.

ты выдел наверно кучу счетчиков, так приведи пару примеров как быть с ботами (удалять не нужно, чтоб видно было индексят сайт или нет), можно без кода.

ps производительность интересут тоже, но в последнюю очередь
 

kvf77

Red Devil
blam

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

440hz

php.ru
Автор оригинала: Фанат
440hz, а зачем ты стартуешь сессию всем подряд? ведь сессия - это, в первую очередь, персонализация, а какой смысл персонализировать анонима?
аноним 8) он то же человек и я слежу за его перемещениями по сайту. хотя можно гостям сесии и отключить, конечно. но я слежу.
 

Фанат

oncle terrible
Команда форума
неужели эта слежка стоит увеличения нагрузки на сайт, запрета кэширования, теоретического попадалова под маскарадинг, уродования ссылок?
Хотя, конечно, хозяин - барин.

-~{}~ 03.10.05 12:14:

всё равно не понимаю.
кто-то попу рвёт в клочья - лишь бы в адресе были только палочки и не было вопросиков, а кто-то наоборот - вывешивает причиндалы на полсотни символов...
 

440hz

php.ru
Автор оригинала: Фанат
всё равно не понимаю.
я уже давно и не пытаюсь понять. идиотов хватает.

если клиент просит сделать ему трекинг ВСЕХ пользователей (Гость он же то же пользователь?) и посещаемых ими страниц и потом выдать ему "популярные" маршруты - таки мы это ему и делаем.

я сторонник ЧПУ.

/?SID=123 выдается только при первом заходе. далее юзаем куки по возможности. а вот поисковикам первый заход это ?SID= и рубим.
 

Фанат

oncle terrible
Команда форума
посещаемых ими страниц и потом выдать ему "популярные" маршруты - таки мы это ему и делаем.
а в спайлоге-то мужики и не знают. что это, оказывается, делается сессиями.
я сторонник ЧПУ
далее юзаем куки по возможности
ну да-ну да.
а по невозможности у "сторонника ЧПУ" висит вышеупомянутый причиндал.
Вы, Лазарь Соломонович, или крестик снимите, или трусики оденьте
 

blam

Новичок
В общем сделал так :

PHP:
<?
error_reporting(E_ALL);
 //	 error_reporting(0);
$c=$st=$b=$er=" ";
$fop = file ("stat.dat");
$cnt=count($fop);
$bot=file("bot.txt") or die ("not found bot.txt");  // файл ботов
	
 // выводим статистику
for ($i=0;$i<=count($fop);$i++)
    {
    if (!isset($fop[$i]))break;
       $tmp=0;
       list($date,$time,$ip,$ag,$from,$host) = split('#',$fop[$i]);
       for ($ii=0;$ii<count($bot);$ii++)
            {
             if (strpos($ag,trim($bot[$ii]))!==false ) 
               { $count_bot[$ii]++; $tmp=1; break; }
            }
            if ($tmp==0)
               {
		// вывод статистики пользлвателей
               }
     }
		// вывод статистики ботов
  for ($ii=0;$ii<count($bot);$ii++)
  	{
            $b.='<tr><td> '.$bot[$ii].' </td><td> '
  	  .$count_bot[$ii].' </td></tr> ';
           }
  if  ($b==" ") $b="<tr><td>Поисковики не заходили</td></tr>";
  //..........
?>
пока обсуждали, решение и сформировалось.
 

Vetal

Новичок
blam, вот кусок из oscommerce
PHP:
    $user_agent = strtolower(getenv('HTTP_USER_AGENT'));
    $spider_flag = false;

    if (tep_not_null($user_agent)) {
      $spiders = file(DIR_WS_INCLUDES . 'spiders.txt');

      for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
        if (tep_not_null($spiders[$i])) {
          if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
            $spider_flag = true;
            break;
          }
        }
      }
    }
почти как у тебя

440hz, Фанат
опять же случай из oscommerce, анонима нужно "вести" потому как он сначала в корзину товара наберет, а потом только будет регистрироваться
 

Фанат

oncle terrible
Команда форума
ещё один.
человек, который набирает корзину и человек, который зашёл на сайт - это РАЗНЫЕ люди.
ведёшь ты анонима с корзиной - веди на здоровье.
а без корзины его зачем вести?
 
Сверху