это - web crawler.net c#




Обнаружение честных веб-сканеров (4)

Я хотел бы обнаружить (на стороне сервера), какие запросы от ботов. На данный момент меня не волнуют злые боты, просто те, которые играют хорошо. Я видел несколько подходов, которые в основном связаны с совпадением строки пользовательского агента с такими ключевыми словами, как «бот». Но это кажется неудобным, неполным и неподвластным. Так у кого-то есть более прочные подходы? Если нет, есть ли у вас какие-либо ресурсы, которые вы используете, чтобы быть в курсе всех дружественных пользовательских агентов?

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

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


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

<a href="dontfollowme.aspx"></a>

Многие люди используют этот метод при запуске HoneyPot, чтобы поймать вредоносных ботов, которые не следуют за файлом robots.txt. Я использую пустой метод привязки в решении ASP.NET для honeypot, которое я написал, чтобы поймать ловушку и заблокировать этих жутких сканеров ...


Вы можете найти очень подробную базу данных о известных «хороших» веб-сканерах в Robotstxt.org Robots Database . Использование этих данных было бы гораздо более эффективным, чем просто сопоставление бота в пользовательском агенте.


Что-то быстрое и грязное, как это может быть хорошим началом:

return if request.user_agent =~ /googlebot|msnbot|baidu|curl|wget|Mediapartners-Google|slurp|ia_archiver|Gigabot|libwww-perl|lwp-trivial/i

Примечание: код рельсов, но регулярное выражение обычно применимо.


Я почти уверен, что большая часть ботов не использует robots.txt, но это была моя первая мысль.

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







bots