想象一下,有一些爬虫在抓取我的网站。 我怎样才能禁止它们并仍然将 Google Bots 列入白名单?
我想我可以找到谷歌机器人的 ip 范围,我正在考虑使用 Redis 来存储当天的所有访问,如果在短时间内我看到太多来自同一 IP 的请求 -> 禁止。
我的堆栈是 ubuntu 服务器、nodejs、expressjs。
我看到的主要问题是这种检测是在 Varnish 之后进行的。所以 Varnish 缓存必须被禁用。有更好的主意或好的想法吗?
最佳答案
您可以使用 Varnish ACL [1],在 apache 中维护它可能会有点困难,但肯定会起作用:
acl bad_boys {
"666.666.666.0"/24; // Your evil range
"696.696.696.696"; //Another evil IP
}
// ...
sub vcl_recv {
if (client.ip ~ bad_boys) {
error 403 "Forbidden";
}
// ...
}
// ...
您还可以使用白名单、使用用户代理或其他技术来确保它不是 GoogleBot...但我会在 Varnish 中为自己辩护,而不是在 Apache 中。
[1] https://www.varnish-cache.org/docs/3.0/reference/vcl.html#acls
关于node.js - 在我的网站上放慢流氓网络 srappers 并仍然使用 Varnish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18054403/