javascript NodeJs ExpressJS中间件,允许特定于bot / crawler的路由。基于OS项目的Prerender.IO中间件用于节点。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript NodeJs ExpressJS中间件,允许特定于bot / crawler的路由。基于OS项目的Prerender.IO中间件用于节点。相关的知识,希望对你有一定的参考价值。

require("requirejs").define("middleware/onlyCrawlers", ["url"], function (url) {
    var crawlerUserAgents = [
//        'googlebot',
//        'yahoo',
//        'bingbot',
        'baiduspider',
        'facebookexternalhit',
        'twitterbot',
        'rogerbot',
        'linkedinbot',
        'embedly',
        'quora link preview',
        'showyoubot',
        'outbrain',
        'pinterest'
    ];

    return function (req, res, next) {
        var userAgent = req.headers['user-agent']
            , bufferAgent = req.headers['x-bufferbot']
            , isCrawler = false;

        if (!!userAgent && req.method == 'GET') {
            //if it contains _escaped_fragment_, show prerendered page
            if (url.parse(req.url, true).query.hasOwnProperty('_escaped_fragment_')) {
                isCrawler = true;
            }

            //if it is a bot...show prerendered page
            if (crawlerUserAgents.some(function (crawlerUserAgent) {
                return userAgent.toLowerCase().indexOf(crawlerUserAgent.toLowerCase()) !== -1;
            })) {
                isCrawler = true;
            }

            //if it is BufferBot...show prerendered page
            if (bufferAgent) {
                isCrawler = true;
            }

            if (isCrawler)
            {
                next();
            }
            else{
                next("route");
            }
        }
        else {
            next("route");
        }
    };
});

以上是关于javascript NodeJs ExpressJS中间件,允许特定于bot / crawler的路由。基于OS项目的Prerender.IO中间件用于节点。的主要内容,如果未能解决你的问题,请参考以下文章

javascript #upload #nodejs #multer #express

javascript NodeJs + Express中的CORS问题

javascript #nodejs #express #bodyparser访问表单正文

使用 NodeJs Express 在 JavaScript 上推送通知

NodeJS:Express 框架实战解析视频教程

javascript 将图像上传到MongoDB - (NodeJS Express Multer && GridFsStorage)