我正在构建一个小应用程序,当我共享页面时抓取HTML的抓取工具不会评估JavaScript(有意义)。所以我想做的是使用某种服务器端用户代理检测来获取社交媒体爬虫何时到达,然后将其显示为普通的AngularJS模板文件,将其重定向到服务器生成的页面它将包含所需的元标记,所有元标记都填充了正确的信息。我知道prerender.io可以做到这一点,但有一种简单的方法可以使用NodeJS / ExpressJS来做到这一点吗?
答案 0 :(得分:1)
您可以在路由器中键入请求参数的user-agent
属性。
Twitter声明其抓取工具使用的用户代理将Twitterbot/X.X
中的X.X
(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");
});
为版本字符串):
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的抓取工具遵循类似的格式,可以采用类似的策略。