nodejs requestモジュール302は、解決方法をリダイレクトする.


nodejs requestモジュール302は、解決方法をリダイレクトする.
二つの方法があります.以下で処理します.https://bbs.125.la/例:
1、クッキーを記録するjarをオープンする
var request = require('request');
//    cookie,        cookie
request = request.defaults({
     jar: true})

var options = {
     
    url: 'https://bbs.125.la/forum-125-1.html',  
    encoding: null ,
    headers: {
     
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
        referer: 'https://bbs.125.la/'
    }
};

function callback(error, response, body) {
     
    if (!error && response.statusCode == 200) {
     
        let enc=iconv.decode(body,'gbk');
        console.log(enc);
    }
}
request(options, callback);
2、自動リダイレクトをオフにして、statusCodeが302かどうかを検出します.cookieを取ってから、再度cookieを要求して添付します.
var options = {
     
    url: 'https://bbs.125.la/forum-125-1.html',  
    encoding: null , 
    followRedirect:false, 
    headers: {
     
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
        referer: 'https://bbs.125.la/',
        /* cookie:'__ancc_token=fAKAtKODEupdBE9U/SgDYQ==' */
    }
};

function callback(error, response, body) {
     
    if(response.statusCode==302){
     
        options.headers.cookie=response.headers['set-cookie'][0];
        request(options, callback);
    }else{
     
        let enc=iconv.decode(body,'gbk');
       console.log(enc);
    } 
}

request(options, callback);