Блок-боти з IIS 7.5 та 8.0


11

Я б хотів заблокувати бота з 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, оскільки він орієнтований на безпеку та заснований на інтегрованому скануванні URL-адрес, вбудованому в IIS 7.

Відповіді:


4

Зазвичай ви використовуєте robots.txt. Це буде працювати на всіх добре поводиться ботів.

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

Редагувати: Якщо ви дійсно хочете заблокувати на основі Useragent, а не натискати його на брандмауер або подібне, я думаю, що найпростішим способом є використання URLScan. Ви пишете правило, яке виглядає приблизно так:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
Я намагаюся заблокувати Яндекс, який ігнорує robots.txt, але послідовно має Яндекс в користувальницькому агенті.
Джош

11

Я знаю, що це давнє питання, але в IIS 7.5 ви можете відмовити агентом користувача, якщо використовуєте Request Filtering.

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

Перейдіть на вкладку Правила , а потім у крайньому правому списку виберіть "Додати правило фільтрації"

Дайте ім’я, а потім у розділі Сканування заголовків поставте «Користувач-агент».

Ви можете додати будь-які конкретні типи файлів, які потрібно заблокувати у програмі " Застосовує до" , або можете залишити їх порожніми, щоб застосувати їх до всіх типів файлів.

У рядках "Заборонити" введіть усі рядки агента користувача, які ви хочете заблокувати. У випадку з цим питанням ви б тут поставили "Яндекс".

Ці зміни в chrome я підтвердив за допомогою розширення User Agent Switcher .


6

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

Ось простий спосіб заблокувати основні веб-сканери - 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


Я не впевнений, що рекомендувати оновити applicationHost.config для додання правил перезапису - це гарна ідея - вони не повинні просто перейти в web.config?
Blakomen

З 2016 року також є таке: saotn.org/hackrepair-bad-bots-htaccess-web-config-iis
Dawesi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.