我想用IIS阻止一个bot。 使用Apache,你可以添加一个命令到你的.htaccess文件,如下所述 。 我将如何完成这与IIS 7.5?
更新
除了下面的回答外,自从发布这个问题以来,我总共发现了一些方法:
请求过滤规则
<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>
对于我的最后一个项目,我select了第二个选项,因为它是以安全为中心的,并且基于内置在IIS 7中的集成URL扫描。
通常你使用robots.txt。 它将适用于所有行为良好的机器人。
对于那些行为不好的机器人,通常你可以做的事情很less。 您可以限制防火墙或networking服务器的连接数或带宽,但是主要的机器人通常会使用多个IP地址。 基于用户代理string的限制通常不是一个好主意,因为这些对于机器人来说是微不足道的,而且不关心robots.txt的机器人也倾向于欺骗useragentstring。 它在bot发送正确的用户代理但不遵守robots.txt的特定情况下工作。
编辑:如果你真的想阻止基于useragent,而不是推回到您的防火墙或类似的我认为最简单的方法是使用URLScan。 你写的规则看起来像这样:
[Options] RuleList=DenyYandex [DenyYandex] DenyDataSection=Agents ScanHeaders=User-Agent [Agents] Yandex
我知道这是一个老问题,但是在IIS 7.5中,如果使用请求过滤,则可以由用户代理拒绝。
在IIS中,转至要应用filter的网站,然后在右侧窗格中单击“ 请求过滤”图标。 (您可能需要通过服务器pipe理器启用此function)。
单击规则选项卡,然后沿最右侧列表中select“添加筛选规则”
给它一个名字,然后在扫描标题部分,把“用户代理”。
您可以在“ 应用于”中添加要阻止的任何特定文件types,也可以将其留空以使其适用于所有文件types。
在“拒绝string”中 ,input要阻止的所有用户代理string。 在这个问题的情况下,你会把“Yandex”放在这里。
我使用用户代理切换器扩展来确认这些更改。
对于不尊重Robots.txt的抓取工具,可以使用服务器上的URL重写来基于其用户代理进行阻止,请参阅: http : //chrisfulstow.com/using-the-iis-7url-rewrite-module-to-块检索器/
这是阻止主要networking爬虫(Google Bing和Yahoo)在整个服务器上索引任何网站的简单方法。 如果您将所有testing版本推送到面向公众的服务器,但不希望search引擎对其进行索引,则这非常有用。
安装IIS URL重写模块。
在服务器级别添加请求阻止规则。 阻止与正则expression式匹配的用户代理标题: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>这将阻止谷歌,必应和雅虎索引服务器上发布的任何网站。 要testing它,请尝试Firefox用户代理切换器 。
欲了解更多信息: http : //www.iis.net/download/URLRewrite