我一直在尝试使用Node JS通过请求承诺进行网络抓取,但是最近我发现,当尝试通过对每个请求使用相同的cookie罐创建请求会话时,请求会话不会持久。到目前为止,这是我的代码:
var rp = require('request-promise'); //requests module
var jssoup = require('jssoup').default; //crawler
global.useragent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)';
function kithCheckoutLink(bypass, link){
var cookiejar = rp.jar()
if (bypass == 1){
global.options = {
uri: 'https://kith.com/cart/18914757476421:1',
jar: cookiejar,
followAllRedirects: true,
headers:{
'User-Agent':useragent
},
}
console.log(options.uri);
bypassrequest = rp.get(options, function(error, response){
var bypasslink = bypassrequest.uri.href;
console.log(bypasslink);
options.uri = 'https://kith.com/cart/change?line=1&quantity=0';
removerequest = rp.get(options, function(error, response){
console.log(removerequest.uri.href);
});
});
}
};
kithCheckoutLink(1, 'www.google.com');
因此,当我运行代码时,一切正常,直到第二个GET请求为止。我收到一个巨大的“错误请求”错误,提示“无法更新空购物车”。事实是,通过第一个GET请求,我成功地将产品添加到网站上的购物车中,并且控制台记录了结帐链接以进行证明。我什至使用chrome浏览器手动尝试了此操作,但清理购物车没有任何问题。这意味着问题一定是cookie没有转移到每个请求,就像cookie正在转移一样,因为我只是将产品添加到购物车,所以不会收到我的购物车已经为空的错误。我在这里做什么错了?