Angularjs Nodejs如何将facebook/twitter爬虫机器人重定向到另一个服务器生成的页面?

Angularjs Nodejs如何将facebook/twitter爬虫机器人重定向到另一个服务器生成的页面?,angularjs,node.js,express,Angularjs,Node.js,Express,我正在构建一个小应用程序,当我共享页面时,抓取HTML的爬虫程序不会评估JavaScript(有意义)。因此,我想做的是使用某种服务器端用户代理检测,在社交媒体爬虫到达时进行检测,然后将其重定向到服务器生成的页面,该页面将包含所需的元标记,并填充正确的信息,而不是显示普通的AngularJS模板文件。我知道有prerender.io可以做到这一点,但有没有一种简单的方法可以使用NodeJS/ExpressJS做到这一点?您可以在路由器中关闭请求参数的用户代理属性 Twitter声明其爬虫程序使用

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

您可以在路由器中关闭请求参数的
用户代理属性

Twitter声明其爬虫程序使用的用户代理将在其:

Twitter使用Twitterbot的用户代理(版本为 Twitterbot/1.0),可用于在 robots.txt文件

因此,一个简单的实现是:

app.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");
});
卷曲测试:

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

Hello Twitter

我可以想象,其他不执行JavaScript的爬虫程序遵循类似的格式,可以采用类似的策略。

您是否定义了
robots.txt
?@zero298不太可能,这有什么帮助?