我怎样才能有效地防止机器人请求或至少防止它们阻塞我的日志?

How can I effectively prevent bot requests or at least prevent them from clogging my logs?

我假设我遇到的错误是由具有以下功能的机器人引起的:

以下是一些错误:

过去存在但已被删除的特定 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 异常。从那里,您可以调整以适应...