0

想象一下有爬虫爬取我的网站。我怎样才能禁止它们并仍然将 Google Bot 列入白名单?

我想我可以找到谷歌机器人的 ip 范围,我正在考虑使用 Redis 来存储一天中的所有访问,如果在短时间内我看到来自同一个 IP 的太多请求 -> 禁止。

我的堆栈是 ubuntu 服务器、nodejs、expressjs。

我看到的主要问题是这种检测落后于 Varnish。所以清漆缓存必须被禁用。有更好的想法,或者好的想法吗?

4

2 回答 2

1

您可以使用 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

于 2013-08-06T11:34:24.600 回答
0

您可以使用 robots.txt 停止爬虫

User-agent: BadCrawler
Disallow: /

如果爬虫遵循 robots.txt 规范,则此解决方案有效

于 2013-08-05T12:49:56.187 回答