Nodejs如何将facebook / twitter crawler bot重定向到另一个服务器生成的页面?

时间:2017-10-05 14:19:20

标签: angularjs node.js express

我正在构建一个小应用程序,当我共享页面时抓取HTML的抓取工具不会评估JavaScript(有意义)。所以我想做的是使用某种服务器端用户代理检测来获取社交媒体爬虫何时到达,然后将其显示为普通的AngularJS模板文件,将其重定向到服务器生成的页面它将包含所需的元标记,所有元标记都填充了正确的信息。我知道prerender.io可以做到这一点,但有一种简单的方法可以使用NodeJS / ExpressJS来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您可以在路由器中键入请求参数的user-agent属性。

Twitter声明其抓取工具使用的用户代理将Twitterbot/X.X中的X.Xapp.get("/test", (req, res) => { if (/^Twitter/.test(req.headers["user-agent"])) { return res.redirect("/twitter-friendly"); } res.send("You're not Twitter!"); }); app.get("/twitter-friendly", (req, res) => { res.send("Hello Twitter"); }); 为版本字符串):

  

Twitter使用Twitterbot的User-Agent(带有版本,例如   Twitterbot / 1.0),可用于在中创建异常   robots.txt文件。

所以一个天真的实现将是:

curl -L -A "Twitterbot/1.0" http://localhost:3001/test

使用cURL进行测试:

Hello Twitter

提供输出:

Type Name Price
A    ec1  1.5
B    ec2  2
A    ec2  3
C    ec1  1
B    ec3  1

我认为其他不执行JavaScript的抓取工具遵循类似的格式,可以采用类似的策略。