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