Selenium Cookie 全面解析:一文搞懂获取、添加与删除的易混点

157 阅读2分钟
name=value;

例子:

BAIDUID=2545AFED555788AD50D37E8A9FE95848:FG=1;
BD_HOME=1;
my_cookie=aok;
  • name:cookie 的名字(标识符,相当于 key)
  • value:cookie 的值(真正的数据,比如 token、session id)

2. Selenium 中的 Cookie 表示

在 Selenium 中,browser.get_cookies() 返回的是一个 列表,其中每个元素是一个 字典,代表一条 cookie。

示例:

[
  {
    'domain': '.baidu.com',
    'expiry': 1787622537,
    'httpOnly': False,
    'name': 'BAIDUID',
    'path': '/',
    'sameSite': 'Lax',
    'secure': False,
    'value': '2545AFED555788AD50D37E8A9FE95848:FG=1'
  },
  {
    'domain': 'www.baidu.com',
    'httpOnly': False,
    'name': 'my_cookie',
    'path': '/',
    'sameSite': 'Lax',
    'secure': True,
    'value': 'aok'
  }
]

3. ⚠️ 最容易混淆的地方

  • get_cookies() → 返回 列表
  • 列表中每个元素 → 字典 → 一条 cookie 的完整信息

在 cookie 字典里:

  • 字典["name"] → cookie 的名字(key)
  • 字典["value"] → cookie 的值(value)
  • 其他字段(domain、path、expiry 等) → 附加属性,不是 cookie 的值

👉 所以,一条 cookie 的真正键值对是: name : value


举例解析

get_cookies() 里取出:

{'name': 'my_cookie', 'value': 'aok', 'domain': 'www.baidu.com'}

等价于:

my_cookie=aok;

再比如:

{'name': 'BAIDUID', 'value': '2545AFED555788AD50D37E8A9FE95848:FG=1', ...}

等价于:

BAIDUID=2545AFED555788AD50D37E8A9FE95848:FG=1;

转换成更直观的字典

cookie_dict = {item['name']: item['value'] for item in browser.get_cookies()}
print(cookie_dict)

输出:

{
  'BAIDUID': '2545AFED555788AD50D37E8A9FE95848:FG=1',
  'my_cookie': 'aok'
}

这样就不会再混淆:name 是名字,value 才是值。


4. Selenium 操作 Cookie 的方法

获取 Cookie

cookies = browser.get_cookies()

添加 Cookie

import time
browser.add_cookie({
    'name': 'my_cookie',
    'value': 'aok',
    'expiry': int(time.time()) + 3600
})

注意namevalue 必须有;只能给当前域名加 cookie;expiry 必须是 int 时间戳。

删除指定 Cookie

browser.delete_cookie("my_cookie")

这里 "my_cookie" 指的是 cookie 的名字

删除所有 Cookie

browser.delete_all_cookies()

5. 应用场景

  1. 模拟登录:保存一次登录后的 cookie,下次直接注入,免输账号密码。
  2. 身份伪造 / 绕过限制:注入特定 cookie,跳过广告或进入受限页面。
  3. 测试调试:注入不同 cookie,模拟不同用户身份。

6. Cookie 字段对照表

Selenium 字段含义是否核心
namecookie 的名字✅ 核心(key)
valuecookie 的值✅ 核心(value)
domaincookie 作用的域名附加
pathcookie 生效路径附加
expiry过期时间(时间戳)附加
httpOnly是否 HttpOnly(JS 可否访问)附加
secure是否仅在 HTTPS 下使用附加
sameSiteSameSite 策略附加

✅ 总结

  1. 一条 cookie = get_cookies() 返回列表中的一个字典
  2. cookie 的名字 = 字典["name"]
  3. cookie 的值 = 字典["value"]
  4. 其他字段只是附加属性,不要和 cookie 的值混淆