【问题标题】:Filtering rules not working on removing bots过滤规则不适用于删除机器人
【发布时间】:2017-10-02 22:00:20
【问题描述】:

我在我的网站上的内存使用会导致每 10 分钟在我的 Windows 服务器上进行一次回收,而不会失败。内存通常为 140mb,但突然间它会跃升至 600mb 或更多,并且需要对网站进行回收。我的 web.config 文件中有以下条目来阻止机器人攻击我的网站。但是,虽然我的网站使用更新的 web.config 文件运行正常,但我收到了 filteringRules 行的语法错误。我注意到一些机器人仍然出现在我的 http 日志中,我想知道我的过滤器是否工作正常。是否有人看到此代码有问题,或者尽管我在 Visual Studio 中遇到语法错误,但它实际上是否正常工作?另外,所有这些机器人都会导致内存峰值吗?

<requestFiltering>    
   <filteringRules>    !-- this line gives me a syntax error
    <filteringRule name="BlockSearchEngines" scanUrl="false" 
      scanQueryString="false">
        <scanHeaders>
            <clear />
            <add requestHeader="User-Agent" />
        </scanHeaders>
        <appliesTo>
            <clear />
        </appliesTo>
        <denyStrings>
            <clear />
            <add string="AhrefsBot" />
            <add string="MJ12bot" />
            <add string="ExtLinksfBot" />
            <add string="Yeti" />
            <add string="YandexBot" />
            <add string="SemrushBot" />
            <add string="DotBot" />
            <add string="istellabot" />
            <add string="Qwantify" />
            <add string="GrapeshotCrawler" />
            <add string="archive.org_bot" />
            <add string="Applebot" />
            <add string="ias_crawler" />
            <add string="Uipbot" />
            <add string="Cliqzbot" />
            <add string="TinEye-bot" />
            <add string="YandexImages" />

        </denyStrings>
    </filteringRule>
</filteringRules>

【问题讨论】:

  • 您的代码示例没有关闭requestFiltering 标记?您实际上遇到了什么语法错误?
  • 我的 web.config 中有 requestFiltering 结束标记。我没有在我的代码上显示它。错误消息是我有一个无效的子元素“filteringRules”

标签: c# visual-studio memory-leaks web-config bots


【解决方案1】:

&lt;filteringRules&gt; 条目的语法看起来是正确的(结束标记拼写错误除外)。

出于某种原因,Visual Studio 使用的 web.config 架构似乎不包括 filteringRules。但是,该架构独立于 IIS 所知道的和所做的,因此无关紧要。

另外,所有这些机器人都会导致内存峰值吗?

仅仅因为来自机器人的请求不会使其使用大量内存。无意的内存峰值通常是应用程序错误——内存泄漏等。您可以使用内存分析器查看应用程序的内存使用情况。分配内存缓冲区,然后将对它们的引用存储在全局变量/集合中是常见的原因。未能在所有 Disposable 对象上调用 Dispose() 是另一个潜在的泄漏源。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2017-05-04
    • 2017-04-23
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多