You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js:request库Cookie容器内目标cookies数组无法直接获取

解决Node.js中request库Jar无法直接获取cookies数组的问题

嘿,我来帮你搞定这个cookie获取的问题!你遇到的情况很典型——明明打印整个Jar对象能看到cookies数组,但直接访问j._jar.cookies却返回undefined,这是因为tough-cookie(request依赖的cookie管理库)并没有把cookies作为公开可直接访问的属性。

问题原因

虽然你通过JSON.stringify(j)能看到_jar里的cookies字段,但这只是对象序列化时展示的内部数据。实际运行时,Jar对象的cookies并不是直接暴露的可访问属性,直接访问自然拿不到值。

正确解决方案

应该使用tough-cookie提供的官方API来获取cookies,这是最稳妥且兼容的方式:

const j = require('request').jar(); 
const request = require('request').defaults({ jar: j }); 

request({ 
  method: 'GET', 
  url: "https://www.google.com/gen_204?atyp=csi&ei=_-34WouCCoaWsgWUsLfoBQ&s=newtab&adh=&conn=onchange&ima=1&ime=0&imeb=0&imeo=0&mem=ujhs.10,tjhs.10,jhsl.2190&rt=aft.13,ol.20,prt.14,xjs.317,xjsee.317,xjses.230,xjsls.37,wsrt.95,cst.0,dnst.0,rqst.18,rspt.10,rqstt.27,unt.25,cstt.25,dit.111&zx=1526264059738" 
}, function(err, res, body) { 
  // 使用Jar对象的getCookies方法,传入目标域名获取对应cookies
  const cookies = j._jar.getCookies('https://www.google.com');
  console.log(JSON.stringify(cookies));
});

备选方案(不推荐)

如果你非要直接访问内部存储(不建议,因为依赖库的实现细节,版本更新可能会失效),可以尝试访问store里的cookies:

console.log(JSON.stringify(j._jar.store.cookies));

但还是强烈推荐使用官方的getCookies方法,它会帮你处理域名匹配、过期时间等逻辑,比直接碰内部属性靠谱得多。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:31:23