像 CloudFlare 这样的公司如何阻止机器人爬取和电子邮件收割机?

信息安全 电子邮件 机器人 云耀斑 cdn
2021-08-27 12:07:59

我在CloudFlares主页上看到了这个:

CloudFlare 可防御一系列威胁:跨站点脚本、SQL 注入、垃圾评论、过度爬虫、电子邮件收集器等。

像 CloudFlare 这样的公司如何阻止爬虫机器人和电子邮件收割机?我认为他们足够聪明,不会使用User-Agent: Evil-Email-Harvester. 那么你如何区分像电子邮件收集器这样的机器人和普通用户呢?

我猜您可能会看到它是某种机器人,因为您从同一个 IP 收到多个站点的请求。但这也适用于许多合法 IP,例如 VPN。你如何分辨好坏?

3个回答

CloudFlare 充当您的网络服务器和客户端之间的守卫。客户端收到的每个内容都由您的网络服务器提供并由 CloudFlare 过滤。这样,CloudFlare 在将电子邮件地址传递给客户端之前,通过使用正则表达式对其进行过滤来混淆电子邮件地址。

如果您的网站包含电子邮件

<a href="mailto:s@scha.bz">s@scha.bz</a>

CloudFlare 将替换为

<a href="/cdn-cgi/l/email-protection#fed8ddcfcfcbc5d8ddc8cac5d8ddcfcfcbc5d8ddc7c7c5d8ddcfcecac5d8ddc7c9c5d8ddcac8c5d8ddc7c6c5d8ddcfccccc5">&#115;&#64;&#115;&#99;&#104;&#97;&#46;&#98;&#122;</a>

/cdn-cgi/ - 文件夹,虽然它仍然指向网络服务器,但仅适用于 CloudFlare,它将自动过滤您提交的所有内容,去混淆并返回正确的电子邮件地址。

当然,这不是万无一失的(这根本不可能),因为机器人可以继续使用该 URL 或搜索编码的电子邮件 - 模式。这是一种罕见的情况,当今大多数简单的爬虫都不会找到您的电子邮件。

您不应该依赖这种方法 - CF 已经非常流行,并且很容易检测和去混淆这些电子邮件地址。使用您自己独特的混淆技术更有可能对智能收割机安全,因为为每一种混淆技术调整爬虫的工作量太大。

简单的机器人行为和“普通用户”行为明显不同,大多数机器人往往相对简单,因为它适用于大多数网站。例如,考虑到达 Security.SE:

  • 一个人加载页面,在他们阅读前几个问题时会有几秒钟的延迟,然后你会收到一个页面请求,然后是浏览器发起的对支持文件(图像、脚本、样式)的请求。然后,当引荐来源网址进入另一个页面时,您会期望在对该页面的请求之前经过一些时间。如果他们使用选项卡式浏览器,技术含量更高的用户可能会打开几个问题,但是这些请求之间会有短暂的停顿(当他们将鼠标或选项卡移动到下一个问题时),然后,您再次希望在之前有一个停顿这些页面的任何手动请求。
  • 机器人加载页面,并立即解析它,寻找链接/电子邮件地址。您几乎在页面发送后立即看到大量请求。根据 bot,您可能会发现未加载支持文件(bot 不关心您的样式)。机器人很可能会对当时收到的页面中的链接做同样的事情,并继续这样做,直到找不到更多链接为止。

可以通过一些努力绕过这些方法,使机器人看起来像一个人,但这会大大减慢爬行过程,所以可疑的机器人所有者似乎不会费心去做。

除了詹姆斯和马修的回答(顺便说一句,这两个都是有效的观点):

显然,像 CloudFlare 这样的服务有一堆检测方法来决定是否允许客户端通过它们的各个保护层。

他们的网站上有很多关于这些功能的信息,但您可能找不到具体的规则和实施细节,因为这会使检测更容易规避。

我猜您可能会看到它是某种机器人,因为您从同一个 IP 收到多个站点的请求。但这也适用于许多合法 IP,例如 VPN。你如何分辨好坏?

轶事:在连接到 VPN 时,我确实经常被 CloudFlare 视为“可疑”。

我怀疑 Matthew 提到的许多因素(加载时间、请求的资源类型、下一次请求之前的暂停)导致 CloudFlare 不会立即阻止我。
相反,他们提供Google 的 ReCaptcha以确认我不是机器人/爬虫,然后让我通过。

更多信息:
James 的回答:电子邮件混淆
Matthew 的回答:Web Application Firewall/WAF