谷歌机器人 -- 多么神奇的梦幻之舟!他了解我们的灵魂和各个组成部分。或许他并不寻求什么独一无二的东西;他阅览过其它数十亿个网站(虽然我们也与其他搜索引擎机器人分享自己的数据:)),但是就在今晚,作为网站和谷歌机器人,我们将真正地了解对方。
我知道第一次约会的时候,过分地分析从来就不是什么好主意。我们将通过一系列的文章,一点点地了解谷歌机器人:
我们的第一次约会(就在今晚):谷歌机器人发出的数据标头和他所留意到的文件格式是否适于被进行压缩处理;
判断他的反应:响应代码(301s、302s),他如何处理重定向和If-Modified-Since;
下一步:随着链接,让他爬行得更快或者更慢(这样他就不会兴奋地过了头)。
今晚只是我们的第一次约会……
***************
谷歌机器人: 命令正确应答
网站: 谷歌机器人,你来了!
谷歌机器人:是的,我来了!
GET / HTTP/1.1
Host: wuxuxiao.com
Connection: Keep-alive
Accept: */*
From: googlebot(at)googlebot.com
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Accept-Encoding: gzip,deflate
网站: 这些标头太炫了!无论我的网站在美国、亚洲还是欧洲,你都用同样的标头爬行吗?你曾经用过其他标头吗?
谷歌机器人: 一般而言,我在全球各地所用的标头都保持一致。我试图从一个网站默认的语言和设定出发,搞清楚一个网页究竟长得什么样。有时候人们的用户代理各不相同,例如Adsense读取使用的是“Mediapartners-Google”:
User-Agent: Mediapartners-Google
或者对于图像搜索:
User-Agent: Googlebot-Image/1.0
无线读取的用户代理因运营商而异,而谷歌阅读器RSS读取则包含了订阅者数量等额外信息。
我通常会避免Cookies(因此不存在所谓“Cookie:”标头),因为我并不希望与具体对话有关的信息对内容产生太大的影响。此外,如果某个服务器在动态URL而不是Cookies上使用对话ID,通常我都能识别出来,这样就不用因为每次对话ID的不同而成千上万遍地重复爬行同一个网页。
网站:我的结构非常复杂。我是用许多类型的文件。你的标头说:“Accept:*/*”。你会对所有的URL进行收录,还是自动过滤某些文件扩展名?
谷歌机器人:这要取决于我想找什么。
如果我只是对常规的Web搜索进行检索,当我看到指向MP3和视频内容的链接,我可能不会下载这些东西。类似地,如果我看到了一个JPG文件,处理方法自然 就与HTML或者PDF链接有所区别。例如JPG 的变动频率往往比HTML低很多,所以我不太经常检查JPG的变动,以节约带宽。同时,如果我为谷歌学术搜索寻找链接,那么我对PDF文章的兴趣就会远远高于对JPG文件的兴趣。对于学者而言,下载涂鸦绘画(例如JPG),或者是关于小狗玩滑板的视频,是容易让他们分散注意力的,你说对吗?
网站:没错,他们可能会觉得被打扰到了。你的敬业精神令我佩服得五体投地。我自己就喜欢涂鸦绘画(JPG),很难抗拒它们的诱惑力。
谷歌机器人:我也一样。实际上我并不是一直都在做学问。如果我为搜索图像而爬行,就会对JPG非常感兴趣,碰到新闻,我会花大力气考察HTML和它们附近的图像。
还有很多扩展名,例如exe、dll、zip、dmg等,它们对于搜索引擎而言,既数量庞大,又没有多大用处。
网站:如果你看到我的URL“http://blog.0579skys.com/page1.LOL111”,(呜噎着说)你会不会只是因为里面包含着未知的文件扩展名就把它拒之门外呢?
谷歌机器人: 网站老兄,让我给你讲点背景知识吧。一个文件真正下载完成后,我会使用“内容—类别”(Content-Type)标头来检查它属于HTML、图像、文本还是别的什么东西。如果它是PDF、Word文档或Excel工作表等特殊的数据类型,我会确认它的格式是否合法有效,并从中抽取文本内容。但是你永远也不能确定里面是否含有病毒。但是如果文档或数据类型混乱不清,我除了把它们扔掉之外,也没有什么更好的办法。
所以,如果我爬行你的“http://blog.0579skys.com/page1.LOL111”URL并发现未知文件扩展名时,我可能会首先把它下载。 如果我从标头中无法弄清内容类型,或者它属于我们拒绝检索的文件格式(例如MP3),那么只能把它放在一边了。除此之外,我们会接着对文件进行爬行。
网站:谷歌机器人,我很抱歉对你的工作风格“鸡蛋里挑骨头”,但我注意到你的“Accept-Encoding”标头这样说:
Accept-Encoding: gzip,deflate
你能跟我说说这些标头是怎么回事吗?
谷歌机器人:当然。所有的主流搜索引擎和WEB浏览器都支持对内容进行gzip压缩,以节约带宽。你或许还会碰到其它的一些
···
···