Скажите ботов помимо человеческих посетителей для статистики?


Я ищу, чтобы свернуть свой собственный простой скрипт веб-статистики.

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

есть ли Открытая служба, которая делает это, как Akismet делает для спама? Или есть проект PHP, который посвящен распознаванию пауки и боты и обеспечивает частые обновления?

уточнения: Я не собираюсь блокировать ботов. мне не нужны 100% водонепроницаемые результаты. Я просто хочу исключить как можно больше из своей статистики. В знайте, что разбор пользовательского агента является вариант, но сохранение шаблонов разбор для это много работы. Мой вопрос: есть ли проект или сервис, который делает это уже.

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

14 56

14 ответов:

люди и боты будут делать похожие вещи, но боты будут делать то, что люди не. Давайте попробуем определить те вещи. Прежде чем мы посмотрим на поведение, примем RayQuang это комментарий как полезный. Если у посетителя есть строка user-agent бота, это, вероятно, бот. Я не могу представить, что кто-то ходит с "Google Crawler" (или что-то подобное) в качестве UA, если они не работают над чем-то. Я знаю, что вы не хотите обновлять список вручную, но автоматически вытаскивать его должно быть хорошо, и даже если он останется несвежим на ближайшие 10 лет, это будет полезно.

некоторые уже упоминали Javascript и загрузку изображений, но Google будет делать и то, и другое. Мы должны предположить, что теперь есть несколько ботов, которые будут делать оба, так что это больше не человеческие показатели. Однако то, что боты будут по-прежнему однозначно делать, - это следовать "невидимой" ссылке. Ссылка на страницу в очень скрытом виде, что я не могу видеть как пользователь. Если за этим последуют, у нас есть бот.

боты часто, хотя и не всегда, уважают роботов.формат txt. Пользователи не заботятся о роботах.txt, и мы, вероятно, можем предположить, что кто-то извлекает роботов.txt-это бот. Однако мы можем пойти еще на один шаг и связать фиктивную страницу CSS с нашими страницами, которые исключены роботами.формат txt. Если наш обычный CSS загружен, но наш фиктивный CSS нет, это определенно бот. Вам нужно будет построить (возможно, в памяти) таблицу нагрузок по IP и сделать не содержащийся в матче, но это должно быть действительно твердое сообщение.

Так, чтобы использовать все это: ведение таблицы базы данных ботов по ip-адресу, возможно, с ограничениями по времени. Добавьте все, что следует за вашей невидимой ссылкой, добавьте все, что загружает "реальный" CSS, но игнорирует роботов.txt CSS. Может быть, добавить всех роботов.txt загрузчики, а также. Отфильтруйте строку user-agent в качестве последнего шага и рассмотрите возможность использования этого для быстрого анализа статистики и посмотрите, насколько сильно эти методы работают для идентификации вещей, которые мы знаем, являются ботами.

самый простой способ-проверить, включает ли их useragent " бот " или "паук". всего делать.

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

тем не менее, прямой ответ на ваш вопрос-следовать списку ботов и добавить их user-agent в список фильтрации.

взгляните на этот список бота.

этой user-agent list тоже довольно хороший. Просто удалите все B и все готово.

EDIT: потрясающая работа eSniff и приведенный выше список здесь"в форме, которая может быть запрошена и анализируется легче. robotstxt.org/db/all.txt каждый новый бот определяется robot-id: XXX. вы должны иметь возможность загружать его раз в неделю и разбирать его на то, что ваш скрипт может использовать" как вы можете прочитать в комментарии.

надеюсь, что это помогает!

рассмотрим скрипт php stats, который замаскирован под фоновое изображение CSS (дайте правильные заголовки ответов-по крайней мере, тип контента и управление кешем-но напишите пустое изображение).

некоторые боты разбирают JS, но, конечно, никто не загружает CSS-изображения. Одна из ловушек-как и в случае с JS-заключается в том, что вы исключите текстовые браузеры с этим, но это менее 1% населения всемирной паутины. Кроме того, есть, конечно, меньше клиентов CSS-disabled, чем клиентов JS-disabled (мобильные телефоны!).

чтобы сделать его более прочным для (обычного) случая, когда более продвинутые боты (Google, Yahoo и т. д.) могут сканировать их в будущем, запретите путь к изображению CSS в robots.txt (который лучшие боты будут уважать в любом случае).

Я использую следующее для моей статистики / счетчик приложение:

<?php
    function is_bot($user_agent) {
        return preg_match('/(abot|dbot|ebot|hbot|kbot|lbot|mbot|nbot|obot|pbot|rbot|sbot|tbot|vbot|ybot|zbot|bot\.|bot\/|_bot|\.bot|\/bot|\-bot|\:bot|\(bot|crawl|slurp|spider|seek|accoona|acoon|adressendeutschland|ah\-ha\.com|ahoy|altavista|ananzi|anthill|appie|arachnophilia|arale|araneo|aranha|architext|aretha|arks|asterias|atlocal|atn|atomz|augurfind|backrub|bannana_bot|baypup|bdfetch|big brother|biglotron|bjaaland|blackwidow|blaiz|blog|blo\.|bloodhound|boitho|booch|bradley|butterfly|calif|cassandra|ccubee|cfetch|charlotte|churl|cienciaficcion|cmc|collective|comagent|combine|computingsite|csci|curl|cusco|daumoa|deepindex|delorie|depspid|deweb|die blinde kuh|digger|ditto|dmoz|docomo|download express|dtaagent|dwcp|ebiness|ebingbong|e\-collector|ejupiter|emacs\-w3 search engine|esther|evliya celebi|ezresult|falcon|felix ide|ferret|fetchrover|fido|findlinks|fireball|fish search|fouineur|funnelweb|gazz|gcreep|genieknows|getterroboplus|geturl|glx|goforit|golem|grabber|grapnel|gralon|griffon|gromit|grub|gulliver|hamahakki|harvest|havindex|helix|heritrix|hku www octopus|homerweb|htdig|html index|html_analyzer|htmlgobble|hubater|hyper\-decontextualizer|ia_archiver|ibm_planetwide|ichiro|iconsurf|iltrovatore|image\.kapsi\.net|imagelock|incywincy|indexer|infobee|informant|ingrid|inktomisearch\.com|inspector web|intelliagent|internet shinchakubin|ip3000|iron33|israeli\-search|ivia|jack|jakarta|javabee|jetbot|jumpstation|katipo|kdd\-explorer|kilroy|knowledge|kototoi|kretrieve|labelgrabber|lachesis|larbin|legs|libwww|linkalarm|link validator|linkscan|lockon|lwp|lycos|magpie|mantraagent|mapoftheinternet|marvin\/|mattie|mediafox|mediapartners|mercator|merzscope|microsoft url control|minirank|miva|mj12|mnogosearch|moget|monster|moose|motor|multitext|muncher|muscatferret|mwd\.search|myweb|najdi|nameprotect|nationaldirectory|nazilla|ncsa beta|nec\-meshexplorer|nederland\.zoek|netcarta webmap engine|netmechanic|netresearchserver|netscoop|newscan\-online|nhse|nokia6682\/|nomad|noyona|nutch|nzexplorer|objectssearch|occam|omni|open text|openfind|openintelligencedata|orb search|osis\-project|pack rat|pageboy|pagebull|page_verifier|panscient|parasite|partnersite|patric|pear\.|pegasus|peregrinator|pgp key agent|phantom|phpdig|picosearch|piltdownman|pimptrain|pinpoint|pioneer|piranha|plumtreewebaccessor|pogodak|poirot|pompos|poppelsdorf|poppi|popular iconoclast|psycheclone|publisher|python|rambler|raven search|roach|road runner|roadhouse|robbie|robofox|robozilla|rules|salty|sbider|scooter|scoutjet|scrubby|search\.|searchprocess|semanticdiscovery|senrigan|sg\-scout|shai\'hulud|shark|shopwiki|sidewinder|sift|silk|simmany|site searcher|site valet|sitetech\-rover|skymob\.com|sleek|smartwit|sna\-|snappy|snooper|sohu|speedfind|sphere|sphider|spinner|spyder|steeler\/|suke|suntek|supersnooper|surfnomore|sven|sygol|szukacz|tach black widow|tarantula|templeton|\/teoma|t\-h\-u\-n\-d\-e\-r\-s\-t\-o\-n\-e|theophrastus|titan|titin|tkwww|toutatis|t\-rex|tutorgig|twiceler|twisted|ucsd|udmsearch|url check|updated|vagabondo|valkyrie|verticrawl|victoria|vision\-search|volcano|voyager\/|voyager\-hc|w3c_validator|w3m2|w3mir|walker|wallpaper|wanderer|wauuu|wavefire|web core|web hopper|web wombat|webbandit|webcatcher|webcopy|webfoot|weblayers|weblinker|weblog monitor|webmirror|webmonkey|webquest|webreaper|websitepulse|websnarf|webstolperer|webvac|webwalk|webwatch|webwombat|webzinger|wget|whizbang|whowhere|wild ferret|worldlight|wwwc|wwwster|xenu|xget|xift|xirq|yandex|yanga|yeti|yodao|zao\/|zippp|zyborg|\.\.\.\.)/i', $user_agent);
    }

    //example usage
    if (! is_bot($_SERVER["HTTP_USER_AGENT"])) echo "it's a human hit!";
?>

Я удалил ссылку на исходный код, потому что теперь перенаправляет в приложение.

в настоящее время я использую AWstats и Webalizer для мониторинга моих файлов журнала для Apasce2, и до сих пор они делали довольно хорошую работу. Если вы хотите, вы можете посмотреть на их исходный код, поскольку это проект с открытым исходным кодом.

вы можете получить источник в http://awstats.sourceforge.net или альтернативно посмотрите на FAQ http://awstats.sourceforge.net/docs/awstats_faq.html

надеюсь, что это поможет, RayQuang

проверка user-agent предупредит вас о честных ботах, но не о спамерах.

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

Если событие focus срабатывает, страница почти наверняка была загружена человеком.

вместо того, чтобы пытаться поддерживать невероятно длинный список пользовательских агентов spider, мы ищем вещи, которые предполагают поведение человека. Принцип их заключается в том, что мы разделяем количество сеансов на две цифры: количество одностраничных сеансов и количество многостраничных сеансов. Мы отбрасываем файл cookie сеанса и используем его для определения многостраничных сеансов. Мы также отбрасываем постоянный файл cookie "идентификатор машины"; возвращающийся пользователь (найден файл cookie идентификатора машины) рассматривается как многостраничный сеанс, даже если они просмотр только одной страницы в этом сеансе. У вас могут быть и другие характеристики, которые подразумевают, что "человеческий" посетитель - реферер-это Google, например (хотя я считаю, что MS Search bot mascarades как стандартный UserAgent упоминается с реалистичным ключевым словом, чтобы проверить, что сайт не показывает другой контент [к тому, что дано их боту], и что поведение очень похоже на человека!)

конечно, это не является непогрешимым, и в частности, если у вас есть много людей, которые прибывают и " нажмите кнопку выкл" это не будет хорошей статистикой для вас, ни Если у вас есть преобладание людей с отключенными куки (в нашем случае они не смогут использовать наш сайт [корзина] без включенных куки-файлов сеанса).

принимая данные от одного из наших клиентов, мы обнаруживаем, что ежедневное количество односессионных сеансов повсюду-на порядок отличается от дня в день; однако, если мы вычитаем 1000 из многостраничной сессии в день, мы тогда имеем чертовски близкую к линейной скорость 4 многостраничный-сеансы на один размещенный заказ / два сеанса на корзину. Я понятия не имею, что такое другие 1000 многостраничных сеансов в день!

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

обязательное условие - реферер имеет значение

уровень apache:

LogFormat "%U %{Referer}i %{%Y-%m-%d %H:%M:%S}t" human_log
RewriteRule ^/human/(.*)   /b.gif [L]
SetEnv human_session 0

# using referrer
SetEnvIf Referer "^http://yoursite.com/" human_log_session=1

SetEnvIf Request_URI "^/human/(.*).gif$" human_dolog=1
SetEnvIf human_log_session 0 !human_dolog
CustomLog logs/human-access_log human_log env=human_dolog

в веб-странице, вставить /human/$hashkey_of_current_url.gif.
Если это бот, вряд ли есть набор рефереров (это серая область).
Если ударил непосредственно с помощью адресной строки браузера, он не будет включен.

В конце каждого дня, /human-access_log должен содержать все реферер, который на самом деле является человеческим видом страницы.

чтобы играть безопасно, хэш реферера из журнала apache должен подсчитывать с именем изображения

есть 1x1 gif на ваших страницах, которые вы отслеживаете. Если загружен, то его, вероятно, будет браузер. Если он не загружен, это, вероятно, будет скрипт.

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

оригинальный ответ следует (получение отрицательных оценок!)

единственный надежный способ рассказать ботов от людей идут [капчи] [1]. Вы можете используйте [reCAPTCHA][2] если это подойти вам.

[1]: http://en.wikipedia.org/wiki/Captcha
[2]: http://recaptcha.net/

Я удивлен, что никто не рекомендовал осуществляет тест Тьюринга. Просто есть чат с человеком на другом конце.

программное решение просто не будет делать: посмотрите, что происходит, когда Пэрри встречает доктора

эти два "персонажа" - оба" болтливые " боты, которые были написаны в ходе исследований ИИ в 70-х годах: чтобы увидеть, как долго они могли обмануть реального человека, думая, что они тоже человек. Характер парирования был моделируется как параноидальный шизофреник и врач как стереотипный психотерапевт.

здесь справочная

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

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

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