如何判断网页请求是否来自谷歌的抓取工具?

时间:2010-07-22 12:06:01

标签: web-crawler google-crawlers

从HTTP服务器的角度来看。

3 个答案:

答案 0 :(得分:8)

您可以阅读官方Verifying 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)。

答案 1 :(得分:6)

我已经在我的asp.net应用程序中捕获了Google抓取工具请求,这里是google抓取工具签名的外观。

  

申请知识产权66.249.71.113
  客户:Mozilla / 5.0(兼容; Googlebot / 2.1; + http://www.google.com/bot.html

我的日志会在66.249.71.*范围内观察到Google抓取工具的许多不同IP。所有这些IP都位于美国加利福尼亚州山景城的地理位置。

检查请求是否来自Google抓取工具的一个很好的解决方案是验证包含Googlebothttp://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客户端都可以轻易伪造这一点。

答案 2 :(得分:0)

如果你正在使用Apache Webserver,你可以查看日志文件'log \ access.log'。

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