nodejs requestモジュール302は、解決方法をリダイレクトする.
7423 ワード
nodejs requestモジュール302は、解決方法をリダイレクトする.
二つの方法があります.以下で処理します.https://bbs.125.la/例:
1、クッキーを記録するjarをオープンする
二つの方法があります.以下で処理します.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);