Cloudflare 机器人对策设置 |拦截流程和WAF自定义规则设置流程

您将摆脱每次处理抓取和可疑机器人访问的麻烦。借助 Cloudflare 的免费计划,您可以在恶意机器人到达您的网站之前将其阻止,同时允许必要的抓取工具(例如 Googlebot)正确通过。

  • 即使使用 Cloudflare 的免费计划,您也可以将机器人战斗模式与 WAF 自定义规则结合起来,在大多数恶意机器人到达您的站点之前将其阻止。
  • 使用用户代理作为条件的设置很容易涉及合法的抓取工具,例如 Googlebot,因此请务必在设置后检查 Search Console 和活动日志。
  • 通过使用Cloudflare的块计数和GA4的访问趋势来检查实施效果,您可以同时了解措施的有效性和测量数据的改进。

目次

借助 Cloudflare 的免费计划,您可以在大多数恶意机器人到达您的网站之前将其阻止。我们先来了解一下无需引入付费Bot Management(根据分数详细控制)即可免费实施的对策流程。

  1. 云耀添加站点,并将域的 DNS 切换为通过 Cloudflare(如果您已经安装了,则无需执行此步骤)
  2. 启用机器人战斗模式以自动阻止已知的恶意机器人
  3. 如果存在无法通过机器人战斗模式阻止的特定机器人,请使用 WAF 自定义规则单独指定条件来阻止它。
  4. 检查是否涉及 Googlebot 等合法抓取工具。
  5. 检查实施前后机器人访问减少了多少

如果您已经通过 Cloudflare 运行您的网站,则可以跳过以下实施步骤。机器人战斗模式设置从这里继续下去是没有问题的。

免费计划可以做什么和不能做什么

您可以滚动

机能免费计划
机器人战斗模式(自动阻止已知恶意机器人和抓取工具)可用的
WAF自定义规则您最多可以创建 5 个
托管规则集(自动阻止 SQL 注入等常见攻击模式)可用的
基于机器人分数的精细控制(机器人管理)仅付费计划

对于个人博客和中小型网站,Bot Fight模式和WAF自定义规则的结合可以处理大部分日常发生的抓取和可疑访问。

梅古尔特编辑部

由于 Google 提供的 reCAPTCHA 免费套餐自 2024 年起已大幅减少,我认为许多个人和小型企业已迁移到 Cloudflare。

即使免费套餐也能提供足够的针对机器人的保护,即使您没有安全专家也可以轻松实施。

Cloudflare安装步骤(针对尚未通过/DNS迁移的站点)

要使用 Cloudflare 的反机器人功能,您首先需要将站点的 DNS 切换到 Cloudflare。由于需要更改名称服务器,因此在迁移前仔细准备可以避免出现问题。

跟踪您当前的名称服务器和 DNS 记录

从租赁服务器管理屏幕中,检查您当前使用的名称服务器的名称以及 A、CNAME、MX、TXT 等 DNS 记录列表,并保存屏幕截图。

特别是如果您使用电子邮件,请检查是否丢失了与 MX、SPF、DKIM 或 DMARC 相关的任何记录。这将作为迁移后出现问题时决定是否切换回来的依据。

使用 Cloudflare 注册您的网站

云耀创建一个帐户并添加您的域。

添加后,它将自动扫描当前的 DNS 记录并显示候选记录,但此内容可能不正确,因此请检查您在步骤 1 中保存的列表,以确认您拥有所需的所有记录。

在域管理屏幕上将名称服务器更改为 Cloudflare 的名称服务器

从管理您域的服务(例如 Onamae.com 或 Mumu Domain)的管理屏幕将名称服务器更改为 Cloudflare 指定的名称服务器。

如果您进行更改,您的网站不会立即消失;它将继续显示在其原始名称服务器上,直到切换完成。

系统将“域 → 服务器”的流程更改为“域 → Cloudflare → 服务器”,中间的 Cloudflare 会阻止机器人。

等待 DNS 反映并检查 SSL 设置

名称服务器更改最多可能需要 24-48 小时才能在全球范围内传播。

这取决于域名管理公司,但就我而言,只需要几分钟,如果算上 Cloudflare 更新所需的时间,大约需要 15 到 30 分钟。

确认更新后,从 Cloudflare 的“SSL/TLS”菜单中设置加密模式,并在 WordPress 的“设置”>“常规”中检查站点地址是否设置为 HTTPS。

如果您在启用 DNSSEC 时更改名称服务器,则切换后您的域可能会变得无法解析。迁移之前,请检查域管理公司的 DNSSEC 设置,如果已启用,请暂时禁用它。

梅古尔特编辑部

如果是新站点,请勿从一开始就将其配置为使用 Cloudflare,而是在完成 SSL 设置等后继续进行 Cloudflare 设置。

如果您从一开始就配置 Cloudflare,您可能无法配置 SSL 设置。

启用机器人战斗模式以自动阻止机器人

完成DNS迁移后,首先启用Bot Fight模式。此功能会自动阻止 Cloudflare 确定的已知恶意机器人和抓取工具,而无需创建单独的条件。

在 Cloudflare 仪表板上打开目标站点

登录 Cloudflare 并选择您要为其设置机器人防护的域。

从“安全”菜单中打开“摘要”

单击左侧菜单中的“安全”,然后单击“概述”并选择检测工具下的“机器人流量”。

开启“机器人战斗模式”

只需打开开关即可。一种通过 JavaScript 挑战自动验证来自已知僵尸网络和抓取工具的访问并阻止恶意机器人的机制开始发挥作用。

另外,请确保在“安全”>“WAF”菜单中启用 Cloudflare 托管规则集。由于它也在免费计划中提供,因此它会自动阻止机器人以外的常见攻击模式,例如 SQL 注入和 XSS。

机器人战斗模式只能开启和关闭,但无法精细调整目标。如果您想额外阻止特定机器​​人,请结合下面介绍的安全规则。

梅古尔特编辑部

看看GA4,如果测算大量来自海外的不必要访问,单靠Bot Fight模式往往效果不佳。

我对此并不满意,所以我创建了一条安全规则。这使得阻止许多海外机器人成为可能。

使用安全规则额外阻止目标机器人

如果某些机器人无法使用机器人战斗模式进行阻止,您可以使用安全规则基于用户代理添加阻止规则。即使使用免费计划,您也可以创建最多 5 条规则,因此请查看实际的访问日志并按顺序添加它们,从您感兴趣的机器人开始。

打开“安全”>“安全规则”

从 Cloudflare 仪表板打开目标站点,然后从“安全”菜单中选择“安全规则”。在该页面上,选择“+创建规则”,然后选择“自定义规则”。

从“安全规则”创建规则

输入任何规则名称并指定您要阻止“如果传入请求匹配”的机器人的用户代理。例如,如果您想一次阻止多个SEO工具爬虫,请设置以下条件。

(http.user_agent contains "SemrushBot") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "MJ12bot") or (http.user_agent contains "DotBot")

将操作设置为“阻止”并保存

将符合条件的访问操作设置为“阻止”并保存规则。如果你不能立即找到你感兴趣的机器人,你可以使用“JS Challenge”看看它进展如何,然后再切换,而不是立即“阻止”它。

具体操作示例:只有来自海外的可疑访问才会受到托管挑战

如果统一屏蔽所有海外访问,连合法的海外用户和服务链接都会受到牵连。

如果您将托管挑战(确定它们是否是人类)仅应用于来自日本境外的访问(排除已知的机器人),您可以缩小来自海外的可疑访问范围,并避免阻止可能造成真正伤害的访问。

(not ip.geoip.country in {"JP"}) and not cf.client.bot

选择“托管挑战”作为操作。对符合条件的访问源提出挑战,如果确定是人,则可以正常查看站点。

使用用户代理作为条件时,请务必检查您是否未涉及官方搜索引擎抓取工具(例如 Googlebot)。如果您不小心在阻止规则中添加了包含“Googlebot”的条件,则会影响您对搜索结果的评估。

如果您想一次仅阻止 AI 学习爬虫,可以使用 Cloudflare 初始设置屏幕中的“机器人流量”或“安全”下的“设置”菜单中的“机器人流量”来执行此操作,而无需单独设置自定义规则。

梅古尔特编辑部

通过使用 Cloudflare 创建自定义规则,现在可以在不阻止正常访问的情况下阻止机器人等异常访问,并且 Google Analytics 等数据现在不会受到污染。

如何检查您是否意外阻止了合法的抓取工具,例如 Googlebot

设置机器人战斗模式和自定义规则后,请务必检查它们是否不会阻止搜索引擎爬虫。如果您跳过此步骤,您阻止机器人的意图可能最终会降低您在搜索结果中的排名。

检查 Google Search Console 中的抓取错误

谷歌搜索控制台打开“设置 > 抓取统计”,查看更改设置后抓取请求总数是否突然下降。

如果您还检查已抓取但未在“页面索引”中注册的页面数量是否突然增加,您将能够及早发现异常情况。

检查站点地图获取状态

检查 Google Search Console 的“站点地图”部分,查看提交的站点地图是否被标记为“无法检索”。

如果出现此信息,除了Googlebot被屏蔽的可能性外,也可能是站点地图文件本身的大小或格式有问题,所以请隔离并检查这两种可能性。

检查 Cloudflare 活动日志中的实际块内容

您可以从 Cloudflare 仪表板上的安全 > 事件查看实际阻止的访问列表。

最可靠的方法是直接检查列表,看看用户代理中包含“Googlebot”的访问是否被阻止。

如果您不小心屏蔽了Googlebot,请禁用相应的自定义规则或修改条件,以便Googlebot的用户代理不会陷入该条件。

在极少数情况下,机器人战斗模式是原因,但如果您怀疑它,请暂时将其关闭以隔离它。

梅古尔特编辑部

即使你使用上面提到的自定义规则,到目前为止它也没有阻止任何你需要的东西,比如Google。

如何检查实施后机器人数量是否减少 (Cloudflare Analytics/GA4)

我们不会设置好就这样,而是从两个角度检查机器人的访问是否确实减少了。在 Cloudflare 端,检查“区块数量”,在 GA4 端,检查“测量数据的干净程度”。

检查 Cloudflare 分析中的块数

您可以通过查看仪表板“安全”>“分析”页面上的“流量”和“事件”选项卡来查看每个时间段的块数和挑战数。

实施后,您可以立即看到可疑访问的数量,从而轻松了解措施的有效性。

查看GA4端活跃用户数变化和异常会话数

由 Cloudflare 停止的访问将在到达 GA4 之前被阻止,因此请通过转至 GA4 上的报告 > 参与度 > 概述来比较实施前后的活跃用户数量和平均参与时间。

检查特定于机器人的倾向(例如特定页面上异常高的会话数或异常高的跳出率)是否已消退。