我们在带有 ASP.NET Web 应用程序的 Windows Server 2003 上安装了 IIS 6.0。我们的 Web 应用程序,或者特别是一个网页正在遭受某种机器人攻击。查看 IIS 日志,我们检测到一个正在攻击的用户代理:
python-requests/0.13.2
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
2012-07-17 23:59:59 W3SVC336290672 192.168.2.65 POST /MyVirtualDirectory/MyFolder/wf_Page_Under_Attack.aspx - 80 - 190.232.79.70 python-requests/0.13.2 200 0 0
IIS 是否可以阻止或拒绝访问“python-requests/0.13.2”请求?
没有内置功能可以满足您的需求。
Ionics Isapi Rewrite Filter (IIRF) ISAPI 过滤器模块是一种可以满足您要求的免费解决方案。他们甚至有基于 User-Agent 阻止访问的示例配置。
第二种选择是 Microsoft URLScan(正如您在评论中指出的那样——我不记得它是否允许基于用户代理的逻辑)。此博客条目描述了使用 URLScan 来阻止基于用户代理的请求。我不相信 URLScan 可以根据正则表达式进行匹配,但由于您正在寻找一个精确的字符串匹配,它也应该做您想要的。
话虽如此,“bot”作者将他们的 User-Agent 字符串更改为“无害”的内容非常容易。您正在迈出军备竞赛的第一步。