Во-первых, мы должны различать ботов, которые правильно объявляют, и ботов, которые утверждают, что кто-то еще. Есть много ботов, которые действуют как другие боты по разным причинам (не только плохие). Среди группы ботов, которые объявляют кого-то еще, есть подгруппа, которая также игнорирует robots.txt
.
В вашем случае, похоже, у нас есть настоящий бот от Microsoft.
Боты подчиняются robots.txt
IP-адреса на самом деле являются правильными IP-адресами от Bing. Microsoft объясняет, что для выяснения , действительно ли IP-адрес принадлежит им , мы должны использовать nslookup
.
Это дает нам:
$ nslookup 40.77.167.87
87.167.77.40.in-addr.arpa name = msnbot-40-77-167-87.search.msn.com.
$ nslookup msnbot-40-77-167-87.search.msn.com
[...]
Non-authoritative answer:
Name: msnbot-40-77-167-87.search.msn.com
Address: 40.77.167.87
Microsoft не приводит четкого примера того, какое имя их бот будет слушать в файле robots.txt
, но я думаю, что они хотят видеть bingbot
, а не msnbot
.
Примечание
Bingbot , найдя для себя определенный набор инструкций, будет игнорировать директивы, перечисленные в общем разделе, поэтому вам потребуется повторить все общие директивы в дополнение к созданным вами специальным директивам. для них в их собственном разделе файла.
[...]
- Боты упоминаются как пользовательские агенты в файле robots.txt. [...]
(выделение мной)
С другой стороны, Microsoft ссылается на База данных роботов для получения списка допустимых имен роботов, в котором Bingbot вообще не указан (только msnbot, который вы уже используете).
Тем не менее, я бы попытался добавить bingbot
к вашим пользовательским агентам в файле robots.txt
и посмотреть, поможет ли это.
Вы не указали фактический путь, запрошенный в каждом запросе. Кажется, существуют ситуации , когда Microsoft Bingbot не может быть заблокирован с помощью robots.txt .
Боты не подчиняются robots.txt
Для ботов, которые не подчиняются robots.txt, вы можете использовать только обнаружение на стороне сервера. Вы можете либо заблокировать их по их IP-адресу (если вы видите, что запросы поступают с одного и того же IP-адреса все время), либо по их пользовательскому агенту (если они все время объявляют как один и тот же пользовательский агент).
например. некоторые веб-сайты блокируют user-agent scrapy
на стороне сервера (и возвращают пустую страницу или 404 или аналогичный), потому что это значение по умолчанию, используемое популярной структурой веб-очистки.
Вы также можете автоматически реализовать блокировку на основе IP, например, если вы видите более k запросов за x часов, то вы блокируете этот IP на следующие 10 * x часов. Конечно, это может привести к ложным срабатываниям, если IP-адрес принадлежит интернет-провайдеру потребителя, поскольку он часто дает один и тот же IP-адрес разным пользователям. Это означает, что вы можете блокировать обычных пользователей. Тем не менее, если у вас 2000 посетителей в день, я предполагаю, что риск того, что два посетителя вашего сайта имеют один и тот же IP-адрес и заблокирован из-за слишком большого количества запросов, низкий.