谷歌如何索引通过XHR或WebSocket动态加载消息的网页聊天内容?
谷歌索引Gitter.im公开聊天内容的原理
- 首先要明确,当前的Googlebot已经具备完整的JavaScript渲染能力,不再只能抓取静态HTML内容。爬虫访问页面后会模拟浏览器行为执行页面内的所有JS代码,等待动态资源(包括XHR请求返回的内容)加载完成、DOM渲染稳定后再提取页面内容完成索引,只要是公开可访问、无需登录就能加载的动态内容,都可以被常规爬虫抓取,不需要单独适配WebSocket协议,Gitter的历史消息本身就是通过XHR分页拉取的,也不需要长连接加载。
- Gitter本身针对公开内容做了搜索引擎友好的适配:所有公开的聊天房间没有在robots.txt中设置抓取屏蔽,针对带
at参数的单条消息永久链接,服务端会直接返回包含该条消息及上下文的静态HTML,爬虫访问时不需要执行JS就能拿到完整内容,进一步降低了抓取门槛。 - 不存在谷歌为Gitter开发专属爬虫的情况,也没有Gitter给谷歌提供私有抓取接口的情况。二者都遵循通用的互联网公开内容抓取规则:Gitter允许搜索引擎抓取公开内容并做了通用适配,Googlebot用通用的JS渲染能力就能完成内容提取,不需要针对单一站点做特殊开发。
内容的提问来源于stack exchange,提问作者pavelkolodin
相关产品推荐
相关产品推荐

