
Я собираюсь заблокировать всех ботов, кроме крупных поисковых систем.
Одним из моих методов блокировки будет проверка на «язык»:Accept-Language
Если Accept-Language отсутствует, IP-адрес бота будет заблокирован до 2037 года.
У Googlebot нет Accept-Language
, я хочу проверить его с помощью DNS-поиска
<?php
gethostbyaddr($_SERVER['REMOTE_ADDR']);
?>
Можно ли его использовать gethostbyaddr
, может ли кто-то пройти мою « gethostbyaddr
защиту»?
решение1
Это действительно вопрос для Stack Overflow, а не Server Fault (сайт SEO был бы на самом деле лучшим), но то, что у вас там есть, очень ненадежно. Googlebot может приходить с любого количества IP-адресов и, таким образом, выполнять обратные DNS-запросы. Могут быть тысячи различных вариантов, и если один из них изменится, то бац, вы заблокировали законного бота почти на 30 лет.
На самом деле, я только что нашелВопрос Stack Overflow здесьчто отвечает на ваш вопрос. Это был первый результат поиска в Google по запросу "Как распознать Google Bot".
Поисковые системы определяются по пользовательскому агенту и IP-адресу. Более подробную информацию можно найти в статье Как определить пауков поисковых систем и веб-ботов. Также стоит обратить внимание на этот список. Однако не следует относиться к пользовательским агентам (или даже удаленным хостам) как к чему-то обязательно определенному. Пользовательские агенты на самом деле не более, чем то, что вам говорит другая сторона, и, конечно, она свободна говорить вам все, что угодно. Написать код, притворяющийся Googlebot, — это тривиальная задача.
(Примечание:Google на самом деле предлагает вам использовать RDNS для проверки своих ботов.. Это может быть приемлемо для их сценария, но это определенно не очень хорошая идея для более широкого использования. Плюс это очень медленно).