Coo*_*oop 6 javascript seo bots node.js express
我正在尝试检测以下两个选项之一:
我见过类似的问题(如何识别Facebook用户代理),但没有解释如何在Node和Express中执行此操作.
我需要以这样的格式执行此操作:
app.get("*", function(req, res){
if (is one of the bots) //serve snapshot
if (is not one of the bots) res.sendFile(__dirname + "/public/index.html");
});
Run Code Online (Sandbox Code Playgroud)
mic*_*eee 10
您可以检查User-Agent请求对象中的标头并测试其不同机器人的值,
截至目前,Facebook表示他们有三种类型的User-Agent标题值(查看Facebook Crawler),twitter也有一个带有版本的User-Agent(检查Twitter URL Crawling&Caching),下面的例子应该涵盖两个机器人.
节点
var http = require('http');
var server = http.createServer(function(req, res){
var userAgent = req.headers['user-agent'];
if (userAgent.startsWith('facebookexternalhit/1.1') ||
userAgent === 'Facebot' ||
userAgent.startsWith('Twitterbot') {
/* Do something for the bot */
}
});
server.listen(8080);
Run Code Online (Sandbox Code Playgroud)
表达
var http = require('http');
var express = require('express');
var app = express();
app.get('/', function(req, res){
var userAgent = req.headers['user-agent'];
if (userAgent.startsWith('facebookexternalhit/1.1') ||
userAgent === 'Facebot' ||
userAgent.startsWith('Twitterbot') {
/* Do something for the bot */
}
});
app.listen(8080);
Run Code Online (Sandbox Code Playgroud)
您可以做的是使用该request.headers对象检查传入请求是否包含特定于该机器人的任何UA信息.一个简单的例子.
节点
var http = require('http');
var server = http.createServer(function(req, res){
if(req.headers['user-agent'] === 'facebookexternalhit/1.1') /* do something for the Facebook bot */
});
server.listen(8080);
Run Code Online (Sandbox Code Playgroud)
表达
var http = require('http');
var express = require('express');
var app = express();
app.get('/', function(req, res){
if(req.headers['user-agent'] === 'facebookexternalhit/1.1') /* do something for the Facebook bot */
});
app.listen(8080);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4050 次 |
| 最近记录: |