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

如何读取HttpOnly Cookie?Python+Selenium会话迁移遇阻

问题分析与解决方案

为什么document.cookie读不到session-token?

session-token带有HttpOnly属性,这是浏览器的安全机制:标记为HttpOnly的Cookie禁止通过JavaScript访问,目的是防范XSS攻击窃取会话凭证,所以你用控制台JS代码自然拿不到它。

Postman Interceptor是怎么导出HttpOnly Cookie的?

Postman Interceptor作为浏览器扩展,并非通过JS读取Cookie,而是调用浏览器原生的Cookie API(比如Chrome的chrome.cookies接口)。浏览器扩展在申请了对应权限(如<all_urls>)后,能够直接访问浏览器Cookie存储中的所有Cookie——包括HttpOnly、Secure、HostOnly类型的,因此可以捕获到session-token并同步到Postman桌面端。

如何用Selenium获取session-token并迁移到Requests?

Selenium的driver.get_cookies()方法可以直接获取当前浏览器会话中的所有Cookie(包括HttpOnly的),因为它是直接和浏览器内核交互,而非通过JS。接下来只需要把这些Cookie转换成Requests会话能识别的格式即可,步骤如下:

1. 用Selenium获取所有Cookie

# 假设你已经完成登录,driver是已初始化的Selenium浏览器实例
selenium_cookies = driver.get_cookies()

2. 转换Cookie并导入到Requests会话

import requests

# 创建Requests会话
requests_session = requests.Session()

# 遍历Selenium获取的Cookie,逐个添加到Requests会话中
for cookie in selenium_cookies:
    # 提取Cookie的核心属性:name、value、domain、path、secure等
    requests_session.cookies.set(
        name=cookie['name'],
        value=cookie['value'],
        domain=cookie.get('domain'),
        path=cookie.get('path', '/'),
        secure=cookie.get('secure', False),
        # HttpOnly属性不需要手动设置,Requests会根据Cookie的来源自动处理发送逻辑
    )

3. 验证迁移效果

用这个Requests会话发送请求,就能自动带上session-token等所有Cookie:

response = requests_session.get("https://目标网站的URL")
# 检查响应状态码或内容,确认会话有效
print(response.status_code)

注意事项

  • HostOnly Cookie:这类Cookie的domain属性通常为空,Requests会根据你请求的URL自动匹配HostOnly规则,确保请求域名和Cookie的宿主域名完全一致即可。
  • Secure Cookie:只有当请求是HTTPS协议时,浏览器/Requests才会发送这个Cookie,所以务必使用HTTPS的URL发起请求。
  • 若直接用Requests登录失败,大概率是目标网站的登录流程包含复杂验证(如验证码、JS加密、设备指纹),此时通过Selenium迁移会话是更可靠的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:35:10