我正在考虑使用 mod_evasive 和/或 mod_throttle 来防止对我的网站(运行 Apache 2.4)的滥用访问。例如,“滥用”是指使用 wget 或 HTTtrack 下载整个网站。mod_evasive 和 mod_throttle 都有方法限制用户每单位时间可以访问的页面数量。因此,例如,我可以将 IP 地址限制为每 10 分钟 5 个页面或类似的限制。
但是,我想允许搜索机器人超越这个限制。
因此,似乎有两个选择:
(1) 我可以以某种方式将页面单独提交给搜索引擎。因此,我阻止机器人访问网站,但只要页面更新,就会明确向他们发送页面(我可以这样做吗?)。
(2)以某种方式将特定机器人列入白名单。这里的问题是我无法提前知道机器人的 IP 地址。
应该使用什么方法?
答案1
白名单不需要基于 IP。mod_qos 可以进行基于用户代理的匹配。
这虽然不能阻止任何人假装是 googlebot,但会减慢那些不从 wget 进行更改的人的速度。
如果下载量仍然过大,请尝试通过分析请求日志来检测欺骗性用户代理。使用网站管理员工具和搜索引擎的已知 IP 地址。您花在这上面的时间取决于您的网络服务器资源有多宝贵,以及您希望在多大程度上避免整个网站被镜像。