You need to enable JavaScript to run this app. Python3如何将字典列表形式的多个cookie添加到RequestsCookieJar中
优惠活动
大模型
产品
解决方案
定价
更多

Python3如何将字典列表形式的多个cookie添加到RequestsCookieJar中

问题原因

你之前使用r.cookies.update(c)的方式是错误的:

  • update方法仅接收{cookie名称: cookie值}格式的普通键值对字典,你传入包含完整属性的cookie字典时,它会把name、value、domain等字段都当成独立的cookie键存储
  • 遍历第二个cookie时,字段同名就会覆盖前一个cookie的属性,所以最终只会保留最后一个cookie的相关字段
可行解决方案

直接构造标准Cookie对象,再调用set_cookie方法添加到RequestsCookieJar中,这种方式可以完整保留httpOnly、sameSite等自定义属性,也不会覆盖已有cookie。

完整代码示例

import requests
from http.cookiejar import Cookie

# 你的Flaresolverr/selenium格式cookie列表
cookies = [
      {
        "name": "ASP.NET_SessionId",
        "value": "SOMEVALUE",
        "domain": "sub.mydomain.co.uk",
        "path": "/",
        "expires": -1,
        "size": 41,
        "httpOnly": true,
        "secure": false,
        "session": true
      },
      {
        "name": "__cfduid",
        "value": "SOMEVALUE",
        "domain": ".mydomain.co.uk",
        "path": "/",
        "expires": 1622898293.967355,
        "size": 51,
        "httpOnly": true,
        "secure": true,
        "session": false,
        "sameSite": "Lax"
      }
   ]

session = requests.Session()

for c in cookies:
    # 构造标准Cookie实例,非标准属性放到rest参数中
    cookie_obj = Cookie(
        version=0,
        name=c["name"],
        value=c["value"],
        port=None,
        port_specified=False,
        domain=c["domain"],
        domain_specified=True,
        domain_initial_dot=c["domain"].startswith("."),
        path=c["path"],
        path_specified=True,
        secure=c["secure"],
        expires=c.get("expires") if c.get("expires") != -1 else None,
        discard=c.get("session", False),
        comment=None,
        comment_url=None,
        rest={
            "HttpOnly": c.get("httpOnly", False),
            "SameSite": c.get("sameSite")
        },
        rfc2109=False
    )
    # 添加到会话的cookie jar中
    session.cookies.set_cookie(cookie_obj)

# 验证结果
print(session.cookies)
说明
  • 非标准的cookie属性统一放到构造参数rest字典中即可正常保留,后续会话发起请求时会遵守对应属性规则
  • 代码中对expires=-1做了兼容处理,这类会话级cookie不会写入持久化存储
  • 所有原有cookie都会正常存入,不会出现覆盖问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:54:04