想象一下我的网站上爬满了刮刀。
我如何才能禁止他们,仍然白名单谷歌机器人?
我想我可以找到google机器人的ip范围,我正在考虑使用redis来存储一天中所有的访问权限,如果在短时间内我看到来自同一ip->ban的请求太多。
我的栈是ubuntu服务器,nodejs,expressjs。
我看到的主要问题是这个检测是在清漆后面。所以清漆缓存必须被禁用。有更好的主意或好主意吗?

最佳答案

您可以使用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";
  }
  // ...
}

// ...

你也可以白名单,使用用户代理或其他技术,以确保它不是谷歌机器人…但我宁愿用清漆保护自己,也不愿用阿帕奇。
[1]https://www.varnish-cache.org/docs/3.0/reference/vcl.html#acls

07-25 21:38