使用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,因为它专注于安全性并且基于IIS 7中内置的集成URL扫描。

Answers:


4

通常,您使用robots.txt。它将在所有表现良好的机器人上运行。

对于行为不佳的机器人,您通常无能为力。您可以限制防火墙或Web服务器中的连接数或带宽,但是主要的漫游器通常会使用多个IP地址。基于用户代理字符串的限制通常不是一个好主意,因为对于机器人来说,这些欺骗很简单,而且不关心robots.txt的机器人也倾向于欺骗用户代理字符串。当漫游器发送正确的用户代理,但不遵守robots.txt时,它可以在特定情况下工作。

编辑:如果您真的想基于useragent进行阻止,而不是将其推回防火墙或类似防火墙,我认为最简单的方法是使用URLScan。您编写的规则看起来像这样:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
我正在尝试阻止Yandex,后者会忽略robots.txt,但始终在用户代理中包含Yandex。
乔什-

11

我知道这是一个古老的问题,但是在IIS 7.5中,如果使用请求筛选,则可以由用户代理拒绝。

在IIS中,转到要应用过滤器的网站,然后在右窗格中单击“ 请求过滤”图标。(您可能必须通过服务器管理器启用此功能)。

单击“ 规则”选项卡,然后在最右边的列表中,选择“添加过滤规则”

给它起一个名字,然后在“ 扫描头”部分中,放入“ User-Agent”。

您可以在“ 应用于”中添加要阻止的任何特定文件类型,也可以将其保留为空白以将其应用于所有文件类型。

“拒绝字符串”中,输入要阻止的所有用户代理字符串。在此问题的情况下,您将在此处输入“ Yandex”。

我使用User Agent Switcher扩展程序确认了chrome中的这些更改。


6

对于不遵守Robots.txt的抓取工具,您可以在服务器上使用URL重写基于其用户代理进行阻止,请参阅:http : //chrisfulstow.com/using-the-iis-7url-rewrite-module-to-爬虫/

这是阻止主要的网络爬网程序(Google Bing和Yahoo)对整个服务器上的任何站点编制索引的一种简单方法。如果您将所有测试版构建推送到面向公众的服务器,但又不希望它们被搜索引擎索引,则这非常有用。

  1. 安装IIS URL重写模块。

  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 User Agent Switcher

有关更多信息:http : //www.iis.net/download/URLRewrite


我不确定建议更新applicationHost.config以添加重写规则是一个好主意-是否应该不只是将它们放入web.config中?
Blakomen 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.