Назад | Перейти на главную страницу

Блокировать ботов с IIS 7.5 и 8.0

Я хочу заблокировать бота с IIS. С помощью Apache вы можете добавить команду в файл .htaccess, как изложено здесь. Как мне добиться этого с помощью IIS 7.5?

Обновить

В дополнение к ответу ниже, я обнаружил несколько подходов с момента публикации этого вопроса:

  1. Вариант сканирования URL указан в принятом ответе.
  2. Определите правило фильтрации запросов (пример ниже)
  3. Определите правило перезаписи URL (пример ниже)

Правило фильтра запроса

 <system.webServer>
    <security>
      <requestFiltering>
        <filteringRules>
          <filteringRule name="BlockSearchEngines" scanUrl="false" scanQueryString="false">
            <scanHeaders>
              <clear />
              <add requestHeader="User-Agent" />
            </scanHeaders>
            <appliesTo>
              <clear />
            </appliesTo>
            <denyStrings>
              <clear />
              <add string="YandexBot" />
            </denyStrings>
          </filteringRule>
        </filteringRules>
      </requestFiltering>
    </security>
    [...]
 </system.webServer>

Правило перезаписи URL

<rule name="RequestBlockingRule1" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions>
                        <add input="{HTTP_USER_AGENT}" pattern="YandexBot" />
                    </conditions>
                    <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="Get Lost." />
                </rule>

В моем последнем проекте я остановился на варианте 2, поскольку он ориентирован на безопасность и основан на встроенном в IIS 7 сканировании URL-адресов.

Я знаю, что это старый вопрос, но в IIS 7.5 пользовательский агент может отказать, если вы используете фильтрацию запросов.

В IIS перейдите на веб-сайт, на котором вы хотите применить фильтр, а затем на правой панели щелкните значок Запросить фильтрацию значок. (возможно, вам придется включить эту функцию через диспетчер серверов).

Щелкните значок Правила вкладка, а затем в крайнем правом списке выберите «Добавить правило фильтрации»

Дайте ему имя, а затем в Заголовки сканирования в разделе поставьте «User-Agent».

Вы можете добавить файлы любого определенного типа для блокировки в Относится к, или вы можете оставить это поле пустым, чтобы применить его ко всем типам файлов.

В Запретить строкивведите все строки пользовательского агента, которые вы хотите заблокировать. В случае этого вопроса вы бы поставили здесь «Яндекс».

Я подтвердил эти изменения в Chrome, используя Переключатель пользовательского агента расширение.

Для поисковых роботов, которые не уважают Robots.txt, вы можете использовать перезапись URL-адреса на сервере для блокировки на основе их пользовательского агента, см.: http://chrisfulstow.com/using-the-iis-7url-rewrite-module-to-block-crawlers/

Вот простой способ запретить основным поисковым роботам - Google Bing и Yahoo - индексировать любой сайт на всем сервере. Это действительно полезно, если вы размещаете все свои бета-сборки на общедоступном сервере, но не хотите, чтобы они индексировались поисковыми системами.

  1. Установите модуль перезаписи URL-адресов IIS.

  2. На уровне сервера добавьте правило блокировки запросов. Заблокируйте заголовки пользовательского агента, соответствующие регулярному выражению: googlebot | msnbot | slurp.

Или просто вставьте это правило в «C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config»

<system.webServer>
   <rewrite>
      <globalRules>
         <rule name="RequestBlockingRule1" stopProcessing="true">
            <match url=".*" />
            <conditions>
               <add input="{HTTP_USER_AGENT}" pattern="googlebot|msnbot|slurp" />
            </conditions>
            <action type="CustomResponse" statusCode="403"
               statusReason="Forbidden: Access is denied."
               statusDescription="You do not have permission to view this page." />
         </rule>
      </globalRules>
   </rewrite>
</system.webServer>

Это заблокирует Google, Bing и Yahoo от индексации любого сайта, опубликованного на сервере. Чтобы проверить это, попробуйте Переключатель пользовательского агента Firefox.

Для получения дополнительной информации: http://www.iis.net/download/URLRewrite

Обычно вы используете robots.txt. Он будет работать на всех хорошо настроенных ботах.

Для ботов с плохим поведением часто мало что можно сделать. Вы можете ограничить количество подключений или пропускную способность вашего брандмауэра или веб-сервера, но основные боты обычно используют несколько IP-адресов. Ограничение на основе строк пользовательского агента, как правило, не является хорошей идеей, так как бот может подделать их тривиально, а боты, которые не заботятся о robots.txt, также имеют тенденцию подменять строки агента пользователя. Это работает в конкретном случае, когда бот отправляет правильный пользовательский агент, но не подчиняется robots.txt.

Изменить: если вы действительно хотите заблокировать на основе агента пользователя, а не отправлять его обратно на свой брандмауэр или аналогичный, я думаю, что самый простой способ - использовать URLScan. Вы пишете правило, которое выглядит примерно так:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex