WebDriver 与 cookie 进行交互的方法。
通常用于网站识别用户的身份,保持登录状态或追踪用户浏览记录。
添加操作只接收一组定义的、可序列化的JSON
对象。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# Adds the cookie into current browser context
driver.add_cookie({"name": "foo", "value": "bar"})
根据name
获取单条cookie
。
driver.add_cookie({"name": "foo", "value": "bar"})
print(driver.get_cookie("foo"))
"""
{'domain': 'example.com', 'httpOnly': False, 'name': 'foo', 'path': '/', 'secure': False, 'value': 'bar'}
"""
获取所有 cookie。
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})
print(driver.get_cookies())
"""
[
{'domain': 'example.com', 'httpOnly': False, 'name': 'test2', 'path': '/', 'secure': False, 'value': 'cookie2'},
{'domain': 'example.com', 'httpOnly': False, 'name': 'test1', 'path': '/', 'secure': False, 'value': 'cookie1'}
]
"""
根据 name 删除单条 cookie。
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})
driver.delete_cookie("test1")
print(driver.get_cookies())
"""
[
{'domain': 'example.com', 'httpOnly': False, 'name': 'test2', 'path': '/', 'secure': False, 'value': 'cookie2'}
]
"""
删除所有 cookie。
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})
driver.delete_all_cookies()
print(driver.get_cookies())
"""
[]
"""
在项目中,通常把获取到的 cookie
保存到文件,在调用处直接读取即可。
"""
cookies 保存到文件
"""
driver.get("已经登录后的网站")
cookies = driver.get_cookies()
with open("cookies.yaml", "w", encoding="utf-8") as f:
yaml.dump(cookies, f)
"""
使用 cookies 时从文件进行读取
"""
driver.get("重新打开一个未登录的窗口")
with open("cookies.yaml", encoding="utf-8") as f:
cookies = yaml.safe_load(f)
for cookie in cookies:
driver.add_cookie(cookie)
SameSite 是用来限制第三方Cookie
的属性,该设置防止CSRF
(跨站请求伪造)攻击和用户追踪。
使用限制:
属性设置:
cookies
与第三方网站请求一起发送cookies
与第三方网站 GET
请求一起发送from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# 设置方式
driver.add_cookie({"name": "foo1", "value": "value", 'sameSite': 'Strict'})
driver.add_cookie({"name": "foo2", "value": "value", 'sameSite': 'Lax'})
cookie1 = driver.get_cookie('foo1')
cookie2 = driver.get_cookie('foo2')
print(cookie1)
print(cookie2)