我正在使用Parse.com构建一个网站,并尝试通过FB和Google机器人对其进行抓取。该网站基于parse.com,并没有使用Angular。
我已经查看了帖子Here,并在我的结尾设置了相应的内容。我已经创建了一个端点来测试这些东西:
app.get('/hello/:id', function(req, res) {
res.render('hello');
});
这是我在日志中的内容,当谷歌机器人提取像
这样的网址时https://www.example.org/hello/#!a/b
I2015-11-10T05:35:18.580Z]v642 Ran custom endpoint with:
Input: {"method":"GET","url":"/hello/","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","accept-encoding":"gzip,deflate","cache-control":"no-cache","from":"googlebot(at)googlebot.com","host":"www.example.org","user-agent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","version":"HTTP/1.1","x-forwarded-for":"10.252.5.60","x-forwarded-proto":"https"}}
Result: Success
由于Google抓取工具不会使用片段重写Url,因此会发送错误的网页快照(对应于没有参数的基本网址+路径)。有趣的是,facebookbot用一个转义片段取代了shebang并获取了下面的url:
/hello/?_escaped_fragment_=posts/abcdef
在解析结束时正确处理,pre-render.io发送正确的缓存页面。
我现在已经在这个问题上敲了几个小时,Parse的人无处可寻找一个有点相当基本和重要的问题。
有人曾经设法让Parse的单页设计与谷歌和Facebook机器人合作,还是仅仅是一个失败的原因?
谢谢!
PS:似乎现在,谷歌机器人试图渲染AJAX页面,而不管是否有转义的碎片。换句话说,现在似乎是默认行为,但与此同时,现有的AJAX页面可能仍然会被转义的片段抓取...请参阅主题here以获取来自网络的反馈开发者。