从 HTTP 服务器的角度来看。
5 回答
您可以阅读官方验证 Googlebot页面。
在这里引用页面:
您可以通过使用反向 DNS 查找来验证访问您服务器的机器人确实是 Googlebot(或另一个 Google 用户代理),验证该名称是否在 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)。
我在我的 asp.net 应用程序中捕获了谷歌爬虫请求,这是谷歌爬虫签名的外观。
请求 IP:66.249.71.113
客户端:Mozilla/5.0(兼容;Googlebot/2.1;+ http://www.google.com/bot.html)
我的日志在范围内观察到谷歌爬虫的许多不同 IP 66.249.71.*
。所有这些 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 客户端都可以轻松伪造这一点。
如果您使用的是 Apache Webserver,您可以查看日志文件“log\access.log”。
然后从http://www.iplists.com/nw/google.txt加载 google 的 IP,并检查其中一个 IP 是否包含在您的日志中。
基于此。__curious_geek 的解决方案,这里是 javascript 版本:
if(window.navigator.userAgent.match(/googlebot|google\.com\/bot\.html/i)) {
// Yes, it's google bot.
}
您现在可以通过检查 googlebot 在https://developers.google.com/search/apis/ipranges/googlebot.json上发布的 IP 地址列表来执行 IP 地址检查
从文档:
您可以通过将爬虫的 IP 地址与Googlebot IP 地址列表相匹配来通过 IP 地址识别 Googlebot 。对于所有其他 Google 抓取工具,请将抓取工具的 IP 地址与完整的 Google IP 地址列表相匹配。