当前位置: 首页 > news >正文

在使用Python的Selenium库打卡网页后,通过CDP命令获取所有cookies(包括Httponly和Secure的cookies)

通过 Chrome DevTools Protocol (CDP) 结合 Selenium 可以直接获取浏览器存储的所有 Cookies(包括所有域名下的 Cookies),以下是详细步骤:

步骤 1:配置 Chrome 启用 CDP启动 Chrome 浏览器时需启用远程调试端口(Remote Debugging Port),这是使用 CDP 的前提:

from selenium import webdriver
from selenium.webdriver.chrome.options 
import Options
# 配置 Chrome 选项
chrome_options = Options()chrome_options.add_argument("--remote-debugging-port=9222")  
# 启用调试端口
chrome_options.add_argument("--headless=new")  
# 可选:无头模式# 初始化 
WebDriverdriver = webdriver.Chrome(options=chrome_options)

步骤 2:通过 CDP 命令获取所有 Cookies使用 Selenium 的 execute_cdp_cmd 方法发送 CDP 命令 Network.getAllCookies

# 发送 CDP 命令获取所有 
Cookiescookies_response = driver.execute_cdp_cmd("Network.getAllCookies", {})
all_cookies = cookies_response.get("cookies", [])
# 打印结果
print("所有 Cookies 列表:", all_cookies)

完整代码示例

from selenium import webdriver
from selenium.webdriver.chrome.options 
import Options
# 配置 Chrome 并启用 CDP
chrome_options = Options()chrome_options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Chrome(options=chrome_options)
# 打开任意网页(可选)
driver.get("https://www.example.com")
# 使用 CDP 命令获取所有 Cookies
try:    cookies = driver.execute_cdp_cmd("Network.getAllCookies", {}).get("cookies", [])print("获取到的 Cookies 数量:", len(cookies))    for cookie in cookies:        print(f"名称: {cookie['name']}, 值: {cookie['value']}, 域名: {cookie['domain']}")
except Exception as e:    print("获取 Cookies 失败:", e)# 关闭浏览器driver.quit()

关键点说明

  1. 启用调试端口: - --remote-debugging-port=9222 是使用 CDP 的关键配置。 - 如果未启用此端口,execute_cdp_cmd 将无法工作。
  2. CDP 命令 Network.getAllCookies: - 该命令返回浏览器存储的 所有 Cookies,包括不同域名下的 Cookies。 - 返回的 Cookies 信息包含 namevaluedomainpathexpires 等字段。
  3. 与传统方法的区别: - 传统 driver.get_cookies() 只能获取当前页面域名下的 Cookies。 - CDP 方法可以获取浏览器全局存储的 Cookies,无需切换标签页或域名。

常见问题

  • 返回空列表
    • 确保浏览器已加载过页面(部分 Cookies 可能在页面加载后生成)。
    • 检查浏览器隐私设置(如隐身模式下可能无 Cookies)。
  • 安全限制
    • 部分 Cookies 可能标记为 HttpOnlySecure,但 CDP 通常仍可获取(与 JavaScript 不同)。
  • 浏览器兼容性
    • CDP 需要 Chrome 或基于 Chromium 的浏览器(如 Edge)。
    • 确保 Chrome 和 ChromeDriver 版本兼容(建议使用最新稳定版)。通过上述方法,你可以直接通过 Selenium 调用底层 CDP 接口,高效获取完整的浏览器 Cookies 数据。

相关文章:

  • 【大模型ChatGPT+R-Meta】AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表“
  • jclasslib 与 BinEd 结合的二进制分析技术指南
  • Vue中自定义指令钩子详解
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记6
  • git 查看用户信息
  • git pull报错error: cannot lock ref ‘refs/remotes/origin/feature/xxx
  • InferType和_checked_type的区别?
  • Qt/C++面试【速通笔记四】—Qt中的MVC模式
  • es2025新特性
  • 全开源、私有化部署!轻量级用户行为分析系统-ClkLog
  • 【JAVAFX】controller中反射调用@FXML的点击事件失败
  • 使用KNN预测图像
  • ECharts散点图-散点图20,附视频讲解与代码下载
  • Go语言->练习6例
  • 《算法吞噬幻想乡:GPT-4o引发的艺术平权运动与版权核爆》
  • 利用EMQX实现单片机和PyQt的数据MQTT互联
  • 【Git】项目多个分支开发、维护与优化处理 -- 还未实测 记录初
  • 嵌入式多功能浏览器系统设计详解
  • CentOS 7环境配置DHCP服务器
  • 微信小程序分页和下拉刷新
  • 走访中广核风电基地:701台风机如何乘风化电,点亮3000万人绿色生活
  • 北美票房|《罪人》遭媒体唱衰,好莱坞业内人士集体反击
  • 人社部:对个人加大就业补贴支持,对企业加大扩岗支持
  • 牛市早报|今年国内核电项目审批首次开闸,离境退税起退点下调
  • 钟声:美以芬太尼为借口滥施关税,纯属“内病外治”
  • 江苏、安徽跨省联动共治“样板间”:进一扇门可办两省事