Блокировка по заголовку User-Agent через конфиг внутри сайта

Материал из 1GbWiki.

Версия от 12:33, 31 августа 2024; Dmih (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Поле User-Agent передают практически все HTTP клиенты, когда делают HTTP запрос к вашему сайту. Если некоторые из них нежелательны, можно что-то заблокировать.

Если вам пришело указание от ЦМУ ССОП, смотрите готовые списки ботов тут - Category:ЦМУ ССОП.

[править] На веб-сервере Apache

Такая блокировка есть в личном кабинете, на странице "Управление сайтами и серверами".

Но лучше блокировать через .htaccess и mod_rewrite, это просто гибче и проще управляется. Создайте в корне сайта файл .htaccess (если его еще нет) и дописывайте туда такие строчки,

1) напишите 1 раз в любом месте

RewriteEngine On

2) такой вариант -

RewriteCond %{HTTP_USER_AGENT} ^GPTBot [NC]
RewriteRule ^ - [F,L]

- это заблокирует User-Agent который НАЧИНАЕТСЯ со слов GPTBot, без учета регистра. Повторяйте эти две строки столько раз, сколько нужно.

3) такой вариант -

RewriteCond %{HTTP_USER_AGENT} GPTBot [NC]
RewriteRule ^ - [F,L]

- это заблокирует User-Agent который СОДЕРЖИТ слово GPTBot, без учета регистра. Повторяйте эти две строки столько раз, сколько нужно.

Обычно требуется этот вариант блокировки. Но точный вариант зависит от ваших целей.

[править] На веб-сервере IIS / .NET

Через личный кабинет такую блокировку сделать нельзя.

Добавьте следующий раздел в ваш файл web.config, в нужное место по смыслу, между секциями, которые уже там есть -

<configuration>
 <system.webServer>
  <rewrite>
   <rules>
    <rule name="RequestBlockingRuleUA1" stopProcessing="true">
     <match url=".*" />
     <conditions logicalGrouping="MatchAny">
      <add input="{HTTP_USER_AGENT}" pattern="(.*)GPTBot(.*)" />
      <add input="{HTTP_USER_AGENT}" pattern="(.*)ChatGPTBot(.*)" />
     </conditions>
     <action type="AbortRequest" />
    </rule>
   </rules>
  </rewrite>
 </system.webServer>
</configuration>

- это заблокирует User-Agent который СОДЕРЖИТ слова GPTBot или ChatGPTBot. Для уточнения синтаксиса смотрите инструкции по регулярным выражениям PERL.

Если хотите ошибку подробнее, то пишите там так -

<action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="Access Denied." />

Подробности тут на свой вкус.

[править] Смотрите также

Личные инструменты