我怎样才能有效地防止机器人请求或至少防止它们阻塞我的日志?
How can I effectively prevent bot requests or at least prevent them from clogging my logs?
我假设我遇到的错误是由具有以下功能的机器人引起的:
- 在同一域下索引了我以前的网站;和
- 正在探测某种漏洞。
以下是一些错误:
- 代码:
404
;输入:Http
;错误:A public action method 'IPC$' was not found on controller ...
- 代码:
0
;输入:InvalidOperation
;错误:The requested resource can only be accessed via SSL.
过去存在但已被删除的特定 URL 存在其他错误。
有没有办法防止机器人点击这些链接,或者我必须通过在 ELMAH 中过滤掉特定请求来处理这些问题?
不幸的是,由于存在大量的机器人程序,并且它们被编码为攻击或抓取您的网站的方式多种多样,您将无法防止所有这些错误。但是,您可以轻松地选择忽略 Elmah 中特定类型的错误。这是 web.config 文件的 <elmah>
部分中的过滤器示例:
<errorFilter>
<test>
<or>
<and>
<!-- filter all errors out that fall in the range 400-499 -->
<greater binding="HttpStatusCode" value="399" type="Int32" />
<lesser binding="HttpStatusCode" value="500" type="Int32" />
</and>
<regex binding="BaseException.Message" pattern="A potentially dangerous \b.+?\b value was detected from the client" caseSensitive="false" />
<regex binding="BaseException.Message" pattern="he provided anti-forgery token was meant for user" caseSensitive="false" />
</or>
</test>
</errorFilter>
这将过滤掉所有 404 等,只包括小于 400 或大于 499 的错误,并排除通常由恶意机器人程序触发的几个特定 .NET 异常。从那里,您可以调整以适应...
我假设我遇到的错误是由具有以下功能的机器人引起的:
- 在同一域下索引了我以前的网站;和
- 正在探测某种漏洞。
以下是一些错误:
- 代码:
404
;输入:Http
;错误:A public action method 'IPC$' was not found on controller ...
- 代码:
0
;输入:InvalidOperation
;错误:The requested resource can only be accessed via SSL.
过去存在但已被删除的特定 URL 存在其他错误。
有没有办法防止机器人点击这些链接,或者我必须通过在 ELMAH 中过滤掉特定请求来处理这些问题?
不幸的是,由于存在大量的机器人程序,并且它们被编码为攻击或抓取您的网站的方式多种多样,您将无法防止所有这些错误。但是,您可以轻松地选择忽略 Elmah 中特定类型的错误。这是 web.config 文件的 <elmah>
部分中的过滤器示例:
<errorFilter>
<test>
<or>
<and>
<!-- filter all errors out that fall in the range 400-499 -->
<greater binding="HttpStatusCode" value="399" type="Int32" />
<lesser binding="HttpStatusCode" value="500" type="Int32" />
</and>
<regex binding="BaseException.Message" pattern="A potentially dangerous \b.+?\b value was detected from the client" caseSensitive="false" />
<regex binding="BaseException.Message" pattern="he provided anti-forgery token was meant for user" caseSensitive="false" />
</or>
</test>
</errorFilter>
这将过滤掉所有 404 等,只包括小于 400 或大于 499 的错误,并排除通常由恶意机器人程序触发的几个特定 .NET 异常。从那里,您可以调整以适应...