如何判断网络请求是否来自Google的爬虫?

问题描述 投票:0回答:6

从HTTP服务器的角度来看。

web-crawler google-crawlers
6个回答
14
投票

您可以阅读官方验证Googlebot页面。

在此引用该页面:

您可以验证访问您服务器的机器人是否确实是 Googlebot (或另一个 Google 用户代理)通过使用反向 DNS 查找, 验证该名称是否在 googlebot.com 域中,然后执行 使用该 googlebot 名称进行正向 DNS 查找。这很有用,如果 您担心垃圾邮件发送者或其他麻烦制造者正在访问 您的网站同时声称是 Googlebot。

例如:

> host 66.249.66.1
1.66.249.66.in-addr.arpa domain name pointer  crawl-66-249-66-1.googlebot.com.

> host crawl-66-249-66-1.googlebot.com
crawl-66-249-66-1.googlebot.com has address 66.249.66.1

Google 不会发布公开的 IP 列表 网站管理员将地址列入白名单。这是因为这些IP 地址范围可能会发生变化,这会给任何网站管理员带来问题 对它们进行了硬编码。识别 Googlebot 访问的最佳方式 是使用用户代理(Googlebot)。


12
投票

我已经在我的 asp.net 应用程序中捕获了 google 爬虫请求,这是 google 爬虫的签名的样子。

请求IP66.249.71.113
客户端:Mozilla/5.0(兼容;Googlebot/2.1;+http://www.google.com/bot.html

我的日志在

66.249.71.*
范围内观察到谷歌爬虫的许多不同IP。所有这些 IP 的地理位置均位于美国加利福尼亚州山景城。

检查请求是否来自 Google 抓取工具的一个很好的解决方案是验证请求是否包含

Googlebot
http://www.google.com/bot.html
。正如我所说,同一请求客户端观察到许多 IP,我不建议检查 IP。也许这就是客户身份发挥作用的地方。因此,请验证客户身份。

这是 C# 示例代码。

    if (Request.UserAgent.ToLower().Contains("googlebot") || 
             Request.UserAgent.ToLower().Contains("google.com/bot.html"))
    {
        //Yes, it's google bot.
    }
    else
    {
        //No, it's something else.
    }

需要注意的是,任何 Http 客户端都可以轻松伪造这一点。


1
投票

您现在可以通过检查 googlebot 在 https://developers.google.com/search/apis/ipranges/googlebot.json

发布的 IP 地址列表来执行 IP 地址检查

来自文档

您可以通过将抓取工具的 IP 地址与 Googlebot IP 地址列表 相匹配,通过 IP 地址识别 Googlebot。对于所有其他 Google 抓取工具,请将抓取工具的 IP 地址与 Google IP 地址的完整列表进行匹配。


0
投票

如果您使用 Apache Web 服务器,您可以查看日志文件“log access.log”。

然后从 http://www.iplists.com/nw/google.txt 加载 google 的 IP,并检查其中一个 IP 是否包含在您的日志中。


0
投票

基于此。 __curious_geek的解决方案,这是javascript版本:

if(window.navigator.userAgent.match(/googlebot|google\.com\/bot\.html/i)) {
  // Yes, it's google bot.
}

0
投票

要验证网络请求是否来自 Google 的抓取工具,您可以检查 IP 地址是否属于 Google 发布的 IP 范围(可在此处找到):

https://developers.google.com/search/apis/ipranges/googlebot.json

或者,您也可以进行反向 DNS 查找并检查该域是否与 Google 的某个域匹配。

注意:您还可以检查用户代理字符串,但由于它可能被欺骗,因此明智的做法是使用上述方法之一。

您可以使用 NPM 包

crawl-bot-verifier
来验证 Google、Bing、百度和许多其他爬虫,该库会进行可靠的 DNS 查找,并且具有非常好的 API。您可以在这里找到该包:

https://www.npmjs.com/package/crawl-bot-verifier

© www.soinside.com 2019 - 2024. All rights reserved.