【测试】Selenium操作Cookie

本文介绍了如何使用Selenium进行Cookie的操作,包括通过ChromeDriver获取和删除Cookie,设置单个Cookie,以及保存和读取Cookie到JSON文件。同时,提到了加载用户文件夹以使用已登录状态的Cookie,但需注意需关闭Chrome浏览器以避免冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.操作Cookie

操作Cookie无非就是读取和删除Cookie,下面这些是主要方法

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.chrome.service import Service

options = ChromeOptions()
options.add_argument("--ignore-certificate-errors")
s = Service(executable_path=r"E:\webdriver\chromedriver.exe")
driver = Chrome(service=s, options=options)
driver.maximize_window()
driver.get("https://www.baidu.com/")
driver.get_cookies() # 获取所有的cookie
driver.get_cookie(name) # 获取指定的 cookie
driver.delete_cookie(name) # 删除指定的 cookie
driver.delete_all_cookies() # 删除所有的 cookie
driver.add_cookie(cookie_dict) # 添加一个 cookie
2.设置单个Cookie

通过add_cookie()方法添加Cookie,参数是一个字典,一个Cookie字典的键有name、value、domain、httpOnly、path、sameSite、secure等,但是至少,必须要有name和value这两个键,比如说我们设置一下百度的Cookie

首先在浏览器开发者工具找到百度的关键Cookie,BDUSS,把它的name和value复制下来
在这里插入图片描述粘贴带Cookie字典里,如下

driver = Chrome(service=s, options=options)
driver.maximize_window()
driver.get("https://www.baidu.com/")
driver.add_cookie({"name": "BDUSS", "value": "5MbEN....AAAAAAAAAAAAAAAAAAJbLdWSWy3VkVn"})
driver.refresh()

注意,在调用add_cookie()方法之前,至少要先打开一个网页,不然会报错的,添加好Cookie之后再refresh一下,这样就处于登录状态了

3.保存和读取Cookie

上面是通过一个关键的BDUSS Cookie让我们处于登录状态,既然已经处于登录状态了,我们可以趁机把该页面的全部Cookie都保存为一个JSON文件,下次可以读取这个JSON文件

driver.get("https://www.baidu.com/")

# 保存Cookie
# cookies_str = json.dumps(driver.get_cookies())
# with open("baidu_cookies.json", "w", encoding="utf-8") as f:
#     f.write(cookies_str)

# 读取之前保存的Cookie
with open("baidu_cookies.json", "r", encoding="utf-8") as f:
    cookies_list = json.loads(f.read())
    for cookie in cookies_list:
        driver.add_cookie(cookie)

driver.refresh()
time.sleep(1)

4.加载用户文件夹

直接通过selenium打开浏览器,相当于打开了一个无痕模式,它不会加载任何Cookie或其他平时使用Chrome的一些设置。如果你嫌每次都手动设置Cookie很麻烦,希望它能像你平时打开浏览器一样使用自动保存的Cookie,我们可以通过加载本地Chrome浏览器的配置文件夹的方式打开Chrome

那如何知道自己的配置文件夹的路径呢?你可以在浏览器地址栏打开chrome://version/,看到的那个“个人资料路径”就是了
Chrome浏览器个人资料路径但是注意,我们在使用的时候,只用到"User Data"这一级就可以了,后面的删掉,例如我这里就是C:\Users\admin\AppData\Local\Google\Chrome\User Data

options = ChromeOptions()
options.add_argument("--no-sandbox")
options.add_argument(r'--user-data-dir=C:\Users\admin\AppData\Local\Google\Chrome\User Data')
s = Service(executable_path=r"E:\webdriver\chromedriver.exe")
driver = Chrome(service=s, options=options)
driver.get("https://www.baidu.com")
print("cookies:", json.dumps(driver.get_cookies()))

现在,只要你之前在浏览器登录过了,那在Selenium中打开的网页也会处于登录状态(除非登录过期了),但这种加载用户文件夹的方式也有个缺点,那就是启动Selenium之前,要先把Chrome浏览器关闭,不然是会报错的

5.请求头Cookie

在平时使用Cookie,我最喜欢直接复制开发者工具中的请求头Cookie的那一段值,因为这样最方便了,但是,好像Selenium不支持通过请求头的方式指定Cookie,至少我没有找到,如果哪位大佬知道,欢迎在评论区分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值