Как забаннить ботов без User-Agent

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Хорошо, когда ботов можно легко идентифицировать и заблокировать еще до того, как они проникнут на ваш сайт. Однако некоторые боты спаммеров вообще не имеют user agent. Вот что нам пишет Википедия по поводу этого пресловутого параметра:

User Agent — это клиентское приложение, использующее определённый сетевой протокол. Термин обычно используется для приложений, осуществляющих доступ к веб-сайтам, таким как браузеры, поисковые роботы (и другие «пауки»), мобильные телефоны и другие устройства.

При посещении веб-сайта клиентское приложение обычно посылает веб-серверу информацию о себе. Это текстовая строка, являющаяся частью HTTP запроса, начинающаяся с User-agent: или User-Agent:, и обычно включающая такую информацию, как название и версию приложения, операционную систему компьютера и язык. У «пауков» эта строка часто содержит URL и email-адрес, по которым веб-мастер может связаться с оператором «паука».

B вот тут появляется еще одна возможность отсеивания спама еще на стадии обращения бота к сайту. Так как многие боты спаммеров вообще не имеют user agent, то их можно уволить забанить — просто запретить доступ на сайт для тех, у кого нет этого самого user agent. Я предполагаю, что правильный, честный бот какой-нибудь поисковой системы имеет вменяемый user agent, и его наш фильтр не тронет. А вот всякую шушару нужно банить нещадно:

# Банним ботов и массовые качалки по юзер агенту

 RewriteEngine On
 RewriteCond %{HTTP_USER_AGENT} ^$                                                              [OR]
 RewriteCond %{HTTP_USER_AGENT} ^.*(|'|%0A|%0D|%27|%3C|%3E|%00).*                            [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} ^.*(HTTrack|clshttp|archiver|loader|email|nikto|miner|python).* [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|libwww-perl|curl|wget|harvest|scan|grab|extract).* [NC]
 RewriteRule ^(.*)$ - [F,L]

Этот код как раз этим и занимается, а заодно банит и всех, кто пытается массово скачивать содержимое сайта (например, делать себе локальную копию всего содержимого). Размещаем его в файле htaccess.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Терентий Шахов

    Несколько раз перечитал пост, но так и не понял, куда поместить указанный код?.. Не сердитесь на ламера) В синтаксисе не силён, поэтому навскидку не смог определить.

    Ответить
    1. Да, вы конечно правы, совершенно вылетело из головы. Размещать код нужно в файле htacess. Он находится в корне вашего сайта.

      Ответить
  2. Терентий Шахов

    Спасибо) Я так и подумал. Просто хотелось знать наверняка. Отличный у Вас блог. И не только этот. Удивляюсь Вашей работоспособности при отменном качестве.

    Ответить
    1. Спасибо за положительный отзыв о моих проектах! Хороший отзыв – лучший мотиватор.

      Ответить
  3. stingrey

    Доброго времени суток, у меня такой вопрос, – после установки вышеуказанного скрипта, у меня дрим перестал “воспринимать” картинки по полным адресам (т.е. картинка закачана на хостинг, и дрим её находил по пути http://site.ru/kartinka.jpg, и отображал в дриме в режиме визуального редактора)
    Скрипт размещён в общем файле htacess.
    Можно ли как то определить какие-то исключения для этих запретов, или этот скрипт нужно размещать конкретно в корневых папках сайтов на вордпресе ?

    Ответить
    1. tiaurus автор

      Что такое дрим? Код размещается в файле .htaccess, который находится в коревой папке сайта.

      Ответить
  4. stingrey

    Сори – я подумал что сокращение дрим – от Dreamweaver – вопросов не вызовет (программа-визуальный редактор для содания сайтов (HTML, CSS)) устанавливается и функционирует на компьютере.

    Ответить
  5. Roman

    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(|’|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(HTTrack|clshttp|archiver|loader|email|nikto|miner|python).* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|libwww-perl|curl|wget|harvest|scan|grab|extract).* [NC]
    RewriteRule ^(.*)$ – [F,L]

    Похоже этот код банит не только спамеров но и меня самого))
    После вставки в .htaccess все страницы сайта пишут:

    Forbidden

    You don’t have permission to access / on this server.

    Где я мог накосячить с ctl+c ctl+v?

    Ответить
×
WordPress:
прокачай свой сайт!

Скидка на премиум темы и плагины

Успей забрать скидку ⋙