使用NodeJS收集Origin URL的所有重定向URL

时间:2017-06-11 05:29:28

标签: node.js .htaccess express redirect

我想检索从原始网址X重定向的网址列表,它可能有很多重定向的网址,但我想要所有的网址列表。

例如:

http://www.example.com/origin-url

它将重定向到

http://www.example.com/first-redirect

它将再次重定向到

http://www.example.com/second-redicect

最后是这个

http://www.example.com/final-url

所以我想要的是使用 NodeJs或Express

列出所有这些网址
 http://www.example.com/origin-url -->> http://www.example.com/first-redirect
 -->> http://www.example.com/second-redicect -->> http://www.example.com/final-url

给我一​​个建议,我应该使用哪个节点模块来实现这个目标。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用NodeJS的http模块。您需要检查statusCode,其中重定向的范围是300-400。请看下面的代码。

    var http = require('http')


    function listAllRedirectURL(path) {
      var reqPath = path;
      return new Promise((resolve, reject) => {
        var redirectArr = [];

        function get(reqPath, cb){
            http.get({
              hostname: 'localhost',
              port: 3000,
              path: reqPath,
              agent: false  // create a new agent just for this one request
            }, (res) => {
              cb(res)
            }); 
        }

        function callback(res) {
            if (res.headers.hasOwnProperty('location') && res.statusCode >= 300 && res.statusCode < 400) {
               console.log(res.headers.location);
               redirectArr.push(res.headers.location);
               reqPath = (res.headers.location);
               get(reqPath, callback);
            } else {
              resolve(redirectArr);
            }
        }

        get(reqPath, callback);
      })
    }

    listAllRedirectURL('/');