【问题标题】:twitterbot/1.0 causing high CPU and Ratwitterbot/1.0 导致高 CPU 和 Ra
【发布时间】:2020-12-12 02:20:21
【问题描述】:

我不知道为什么,但我每天都在同一时间收到来自 Twitterbot/1.0 的访问,导致资源使用率高或多或少一分钟。

不是那么重要,但我想知道如何让它不是不爬。我在 robots.txt 中启用了 Twitter 机器人,因为我需要它来分享文章(Twitter 卡片),但这些访问不是因为分享,它似乎在爬行。

我已经测试过共享一张卡片和相同的 ip,所以不说“我是 Twitter”不是假的

知道发生了什么以及如何阻止这些并仍然允许共享吗?我也尝试过设置爬行延迟,但似乎这个机器人没有读取这个选项。在 Twitter 开发者论坛上没有人回答我这个问题...

如果您需要日志,请告诉我,我将在同一分钟几乎在同一时间整天粘贴此抓取的疯狂访问量...

【问题讨论】:

    标签: wordpress twitter web-crawler


    【解决方案1】:

    如果你使用 Nginx,你应该检查Rate Limitting

    我正在使用类似的东西:

    geo $limit_key {
        default         '';
        199.59.148.0/22 'twitterbot';
    }
    
    limit_req_zone $limit_key zone=req_limit:1m rate=1r/s;
    
    …
    
    location … {
        limit_req zone=req_limit burst=3 delay=3;
    
        …
    }
    

    因此,该区域将 Twitterbot IP 范围的请求速率限制为每秒 1 个(突发最多增加 3 个),然后将每个后续请求推迟 3 秒,然后对每个超限请求响应 503 . 在所需位置添加limit_req 指令。

    此方法可用于限制来自已知 IP 的请求速率 - 只需将 CIDR 或 IP 添加到 $limit_key-map。 智能机器人理解 503 状态码并稍后重试失败的请求。

    默认情况下,Nginx 将限制写入error.log:
    grep 'limiting requests' error.log

    2021/11/03 05:31:28 [error] 27594#27594: *4623504 limiting requests, excess: 3.196 by zone "req_limit", client: 199.59.150.182, server: example.com, request: "GET / HTTP/2.0", host: "example.com"
    

    详情在documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2013-02-12
      相关资源
      最近更新 更多