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

如何将Requests的Cookies转换为Selenium/反检测浏览器兼容格式?

把 Requests Cookies 转换为 Selenium 可识别的格式

别用session.cookies.get_dict(),这玩意儿会丢掉domain、expiry、httpOnly这些Selenium必须的属性。直接遍历Requests的CookieJar对象,把每个cookie转换成Selenium需要的字典结构就行,一步到位。

完整代码示例

import requests
from selenium import webdriver

# 1. 先用 Requests 获取会话 Cookies
url = "https://example.com"
s = requests.Session()
s.get(url)

# 2. 转换 Cookies 格式
selenium_cookies = []
for cookie in s.cookies:
    cookie_dict = {
        "domain": cookie.domain,
        "name": cookie.name,
        "value": cookie.value,
        "path": cookie.path,
        "expiry": cookie.expires,
        "httpOnly": cookie.has_nonstandard_attr('HttpOnly'),
        "secure": cookie.secure,
        # 按需设置 sameSite,常见值:"Lax"、"None"、"Strict"
        "sameSite": "Lax"
    }
    # 移除无过期时间的字段,避免Selenium报错
    if cookie_dict["expiry"] is None:
        del cookie_dict["expiry"]
    selenium_cookies.append(cookie_dict)

# 3. 加载到 Selenium 浏览器
driver = webdriver.Chrome()
driver.get(url)  # 必须先访问目标域名,否则无法添加跨域Cookies
for cookie in selenium_cookies:
    driver.add_cookie(cookie)

# 刷新页面验证
driver.refresh()

关键点说明

  • 一定要先让Selenium访问目标域名,浏览器会拒绝添加不属于当前站点的Cookies。
  • cookie.has_nonstandard_attr('HttpOnly')是判断HttpOnly类型Cookie的准确方式,Requests的Cookie对象没有直接暴露该属性。
  • 部分会话型Cookie没有expiry字段,删掉该字段即可,Selenium会自动识别为会话Cookie。
  • sameSite属性根据目标网站的实际要求调整,不确定的话默认填"Lax"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:56:08