我正在寻找以HTML格式提供机器人内容,然后针对所有其他请求提交index.html
并让我的Backbone.js应用程序启动。
我最好尝试为Google,Facebook等创建一系列已知机器人...然后如果用户代理不在该数组中,则渲染index.html
,或者Node中有什么东西快递可以说“这是一个真正的用户,而不是任何类型的机器人”?
app.use(function(req, res) {
var ua = req.headers['user-agent'];
// TODO
res.render('index.html');
});
答案 0 :(得分:0)
考虑将动态网页预渲染为静态HTML,并使用您所描述的类似方法使用快递服务机器人。
您可以使用phantomjs和一些现成的库来处理页面呈现。
请记住,谷歌不喜欢当你为机器人提供不同的东西时,他们会采用他们的机器人来处理动态内容,因为单页体验在网络上越来越受欢迎。
答案 1 :(得分:0)
我们为节点(expressjs)编写了中间件,可以让您确定用户是否是机器人,然后将请求转发到提供预渲染HTML的服务器上。代码可以在这里找到:https://github.com/prerender/prerender-node
它的工作原理是支持_escaped_fragment_
协议,因此我们只检查用户代理是否支持不支持该协议的服务(facebook,twitter,linkedin等)。
它目前用于将请求转发到我们的Prerender.io服务,该服务处理将javascript页面转换为静态HTML的所有工作,但我们也开放了我们的phantomjs服务器:https://github.com/prerender/prerender。这样,如果你愿意,你可以自己主持一切。
这不被视为隐藏真实内容,因为您实际上正在为用户看到的内容提供服务。只是不要将静态HTML更改为与用户访问这些页面时实际看到的不同,你会没事的。我们的服务每天为搜索引擎提供超过100万的页面,我们的用户都没有因为隐藏真实内容而受到惩罚。
如果您有任何问题,请查看并告诉我。