Как предотвратить несанкционированный паук - PullRequest
7 голосов
/ 16 января 2009

Я хочу предотвратить автоматическую проверку html с одного из наших сайтов, не затрагивая при этом легитимного паука (googlebot и т. Д.). Есть ли что-то, что уже существует для этого? Я даже использую правильную терминологию?

РЕДАКТИРОВАТЬ: Я в основном пытаюсь предотвратить людей, которые будут делать это злонамеренно. То есть они не собираются соблюдать robots.txt

РЕДАКТИРОВАТЬ2: Как насчет предотвращения использования с помощью «скорости использования» ... то есть капчи для продолжения просмотра, если обнаружена автоматизация и трафик не с законного (google, yahoo, msn и т. Д.) IP.

Ответы [ 6 ]

8 голосов
/ 16 января 2009

Это трудно, если не невозможно сделать. Многие «мошеннические» пауки / сканеры не идентифицируют себя через строку пользовательского агента, поэтому их трудно идентифицировать. Вы можете попытаться заблокировать их через их IP-адрес, но сложно поспевать за добавлением новых IP-адресов в список заблокированных. Также возможно заблокировать законных пользователей, если используются IP-адреса, поскольку прокси-серверы заставляют многих разных клиентов выглядеть как один IP-адрес.

Проблема использования robots.txt в этой ситуации заключается в том, что паук может просто игнорировать его.

РЕДАКТИРОВАТЬ: Возможно ограничение скорости, но оно страдает от некоторых тех же проблем идентификации (и отслеживания) "хороших" и "плохих" пользовательских агентов / IP-адресов. В системе, которую мы написали для некоторого внутреннего просмотра страниц / подсчета сеансов, мы исключаем сеансы на основе скорости просмотра страниц, но мы также не беспокоимся об устранении «хороших» пауков, поскольку мы не хотим, чтобы они учитывались в данных. Мы ничего не делаем для того, чтобы ни один клиент не мог просматривать страницы.

6 голосов
/ 16 января 2009

Один из подходов заключается в настройке tar-ямы HTTP; встроить ссылку, которая будет видна только автоматизированным сканерам. Ссылка должна идти на страницу, заполненную произвольным текстом и ссылками на себя (но с дополнительной информацией о странице: /tarpit/foo.html, /tarpit/bar.html, /tarpit/baz.html - но иметь скрипт в / tarpit / обрабатывать все запросы с результатом 200).

Чтобы держать хороших парней в стороне, создайте редирект 302 на свою домашнюю страницу, если пользовательский агент - Google или Yahoo.

Это не идеально, но, по крайней мере, замедлит наивных.

РЕДАКТИРОВАТЬ: Как предположил Константин, вы можете пометить смолу как offlimits в robots.txt. Хорошие парни используют веб-пауков, которые соблюдают этот протокол, и останутся вне карьеры. Это, вероятно, избавило бы от необходимости генерировать перенаправления для известных хороших людей.

5 голосов
/ 19 января 2009

Если вы хотите защитить себя от универсального сканера, используйте honeypot.

См., Например, http://www.sqlite.org/cvstrac/honeypot. Хороший паук не откроет эту страницу, поскольку сайт robots.txt явно запрещает ее. Человек может открыть его, но не должен щелкать ссылку «Я паук». Плохой паук непременно пойдет по обеим ссылкам и поэтому предаст свою истинную личность.

Если сканер создан специально для вашего сайта, вы можете (теоретически) создать движущийся honeypot.

2 голосов
/ 22 декабря 2012

Я согласен с подходом honeypot в целом. Однако я поместил ТОЛЬКО ссылку на страницу / ресурс honeypot на страницу, заблокированную файлом "/robots.txt", а также заблокированную таким образом honeypot. Таким образом, злонамеренный робот должен нарушать правило «запретить» ДВАЖДЫ, чтобы забанить себя. Типичный пользователь, вручную переходящий по не кликаемой ссылке, может сделать это только один раз и может не найти страницу с URL-адресом honeypot.

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

В сторону: я также делаю то же самое со спамом и моим почтовым сервером: сайты, которые отправляют мне спам, когда их первое сообщение получает запрет на отправку каких-либо дальнейших сообщений, пока я не очищу файл журнала. Хотя я реализую эти списки банов на уровне приложений, у меня также есть динамические списки банов на уровне брандмауэра. Моя почта и веб-серверы также обмениваются запрещенной информацией об IP между ними. Для неискушенного спамера я подумал, что на одном и том же IP-адресе могут размещаться как вредоносный паук, так и спамер. Конечно, это было до BotNet, но я никогда не удалял его.

1 голос
/ 16 января 2009

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

0 голосов
/ 16 января 2009

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

Для обнаружения злонамеренного использования попробуйте добавить ссылку-ловушку на страницу результатов поиска (или на страницу, которую они используют в качестве карты сайта) и скрыть ее с помощью CSS. Нужно проверить, утверждают ли они, что они действительный бот, и пропустить их. Вы можете сохранить их IP для будущего использования и быстрого ARIN WHOIS поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...