要区分服务器日志中访问请求是来自遵循 `robots.txt` 规则的 Googlebot,还是忽略该规则的用户触发式抓取器,可以结合使用反向 DNS 查找和正向验证等技术。根据 Google 提供的资料,可以从以下几个方面进行识别:
**1. 了解 Google 抓取工具的分类:**
Google 抓取工具和抓取器主要分为三类:
* **常见抓取工具:** 例如 Googlebot,这类工具“始终会遵循自动抓取的 robots.txt 规则”。
* **特殊情况下的抓取工具:** 它们为 Google 产品执行特定功能,可能遵循或不遵循 `robots.txt` 规则。
* **用户触发的抓取器:** 这类抓取器是“最终用户触发抓取操作的工具和产品功能”,例如 Google 网站验证工具。资料明确指出,这类抓取器“会忽略 robots.txt 规则”。
**2. 利用 DNS 验证方法:**
资料中介绍了两种验证 Google 请求的方法:手动验证(适用于一次性查找)和自动验证(适用于大规模查找)。手动验证主要依赖命令行工具,涉及 DNS 查找:
* **反向 DNS 查找(`host` 命令):** 对日志中访问服务器的 IP 地址运行反向查找,以验证域名是否为 `googlebot.com`、`google.com` 或 `googleusercontent.com` 等。
* **正向验证(`host` 命令):** 对第一步检索到的域名运行正向查找,然后验证该域名与日志中访问服务器的原始 IP 地址是否一致。
**3. 识别不同类型的请求源:**
* **Googlebot 等常见抓取工具:** 它们通常会遵循 `robots.txt` 规则,其反向 DNS 掩码包括 `crawl-***-***-***-***.googlebot.com` 或 `geo-crawl-***-***-***-***.geo.googlebot.com`,IP 范围可以在 `common-crawlers.json` 中找到。
* **用户触发的抓取器:** 这类请求的特征是它们会忽略 `robots.txt` 规则。其反向 DNS 掩码可能涉及 `***-***-***-***.gae.googleusercontent.com` 或 `google-proxy-***-***-***-***.google.com`,IP 范围则可以在 `user-triggered-fetchers.json`、`user-triggered-fetchers-google.json` 和 `user-triggered-agents.json` 中找到。
综上所述,通过执行 DNS 反向查找确认请求的域名结构,并结合该域名是否属于已知遵循 `robots.txt` 规则的 Googlebot 范围,还是属于已知会忽略规则的用户触发器范围,可以辅助判断访问请求的来源性质。