我想用 IIS 阻止机器人。使用 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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
对于我的最后一个项目,我最终选择了选项 2,因为它以安全为中心,并且基于 IIS 7 中内置的集成 URL 扫描。
Jos*_*osh 13
我知道这是一个老问题,但在 IIS 7.5 中,如果您使用请求过滤,您可以通过用户代理拒绝。
在 IIS 中,转到要应用过滤器的网站,然后在右侧窗格中单击请求过滤图标。(您可能必须通过服务器管理器启用此功能)。
单击“规则”选项卡,然后沿着最右侧的列表选择“添加过滤规则”
给它一个名字,然后在“扫描标题”部分,输入“用户代理”。
您可以在“应用到”中添加要阻止的任何特定文件类型,也可以将其留空以使其适用于所有文件类型。
在Deny Strings 中,输入您要阻止的所有用户代理字符串。在此问题的情况下,您可以将“Yandex”放在这里。
我使用User Agent Switcher扩展在 chrome 中确认了这些更改。
对于不尊重 Robots.txt 的爬虫,你可以使用服务器上的 URL Rewrite 根据他们的 User Agent 进行拦截,参见:http : //chrisfulstow.com/using-the-iis-7url-rewrite-module-to-块爬虫/
这是阻止主要网络爬虫——谷歌必应和雅虎——在整个服务器上索引任何站点的简单方法。如果您将所有 beta 版本推送到面向公众的服务器,但不希望搜索引擎将它们编入索引,这将非常有用。
安装 IIS URL 重写模块。
在服务器级别,添加请求阻止规则。阻止与正则表达式匹配的用户代理标头:googlebot|msnbot|slurp。
或者,只需将此规则粘贴到“C:\Windows\System32\inetsrv\config\applicationHost.config”
Run Code Online (Sandbox Code Playgroud)<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
通常您使用robots.txt。它适用于所有表现良好的机器人。
对于表现不佳的机器人,您通常无能为力。您可以限制防火墙或网络服务器中的连接数或带宽,但主要的机器人通常会使用多个 IP 地址。基于用户代理字符串的限制通常不是一个好主意,因为这些对于机器人来说是微不足道的,而且不关心 robots.txt 的机器人也有欺骗用户代理字符串的倾向。它在机器人发送正确的用户代理但不遵守 robots.txt 的特定情况下工作。
编辑:如果您真的想基于 useragent 进行阻止而不是将其推回防火墙或类似设备,我认为最简单的方法是使用 URLScan。你写了一个看起来像这样的规则:
[Options]
RuleList=DenyYandex
[DenyYandex]
DenyDataSection=Agents
ScanHeaders=User-Agent
[Agents]
Yandex
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21366 次 |
最近记录: |