【04】Selenium+Python 手动添加Cookie免登录(实例)

一、什么是Cookie?

Cookie 是一种由服务器创建并保存在用户浏览器中的小型数据文件。它用于存储用户的相关信息,以便在后续访问同一网站时可以快速检索这些信息。Cookie 主要用于以下几个方面:

1.状态管理: Cookie 可以保存用户的登录状态,这样用户在再次访问网站时无需重新登录。

2.个性化设置: Cookie 可以存储用户的偏好设置,例如语言选择、主题风格等,以提供更加个性化的体验。

3.跟踪和分析: 许多网站使用 Cookie 来跟踪用户的行为,以获取访问数据和用户偏好,从而进行分析和优化网站。

4.购物车功能: 在电子商务网站上,Cookie 可以用来保存用户的购物车信息,帮助用户方便地继续购物。

Cookie 通常由三个部分组成:名称、值和过期时间。其有效期可以是会话级的(浏览器关闭后过期)或者设置特定的过期时间。

需要注意的是,虽然 Cookie 对网站的功能和用户体验有很大帮助,但在隐私和安全方面也需要谨慎使用,用户可以选择管理或删除自己的 Cookie。

二、如何查看Cookie?

F12打开浏览器开发工具即可查看

三、Selenium 操作Cookie的方法

在 Selenium 中,可以通过以下五种方法来操作 Cookie。
1.获取所有 Cookie:

python 复制代码
cookies = driver.get_cookies()
for cookie in cookies:
    print(cookie)

2.获取特定 Cookie:

python 复制代码
specific_cookie = driver.get_cookie("cookie_name")
print(specific_cookie)

3.添加 Cookie:

python 复制代码
driver.add_cookie({
    'name': 'cookie_name',
    'value': 'cookie_value',
    'path': '/',
    'domain': 'example.com',
    'expiry': None  # 可以设置过期时间
})

4.删除特定 Cookie:

python 复制代码
driver.delete_cookie("cookie_name")

5.删除所有 Cookie:

python 复制代码
driver.delete_all_cookies()

四、浏览器手动添加Cookie免登录(实例)

1、查看浏览器cookie,并转为list包含字典的格式,一个cookie为一条字典

python 复制代码
cookies = [{'domain': '192.168.0.136', 'httpOnly': False, 'name': 'Admin-Token', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'eyJhbGciOiJIUzUxMiJ9.eyJ0ZW5hbnQiOiJtYXN0ZXIiLCJsb2dpbl91c2VyX2tleSI6IjcxNDMxNmExLWMwOWMtNGFjNC1hNWRlLTdmZmFlNGM0ZTJhYyJ9.lZzQNG1NHbnVHj02FQAt0KFeK1nhXBsurkgXVIGi9m8XMOiawBpITsW4IUNrvwLN9NnhVMqkJ8jsXSk1gbycEw'},
           {'domain': '192.168.0.136', 'httpOnly': False, 'name': 'Tenant-Key', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'master'}]

2、实例代码

python 复制代码
'''
实例 手动添加cookie免登陆

'''
import time
from selenium import webdriver
from chromedriver_py import binary_path # this will get you the path variable


#打印浏览器驱动路径
print(binary_path)
svc = webdriver.ChromeService(executable_path=binary_path)
driver = webdriver.Chrome(service=svc)

try:
    # 打开登录页
    driver.get("http://192.168.0.136:8082/login?redirect=%2Findex")
    # 等待页面加载
    time.sleep(2)

    #先删除所有cookies  再手动添加cookie
    driver.delete_all_cookies()
    #查看浏览器cookies把浏览器所有cookies 转为list包含字典的格式 一个cookie为一条字典
    cookies = [{'domain': '192.168.0.136', 'httpOnly': False, 'name': 'Admin-Token', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'eyJhbGciOiJIUzUxMiJ9.eyJ0ZW5hbnQiOiJtYXN0ZXIiLCJsb2dpbl91c2VyX2tleSI6IjcxNDMxNmExLWMwOWMtNGFjNC1hNWRlLTdmZmFlNGM0ZTJhYyJ9.lZzQNG1NHbnVHj02FQAt0KFeK1nhXBsurkgXVIGi9m8XMOiawBpITsW4IUNrvwLN9NnhVMqkJ8jsXSk1gbycEw'},
               {'domain': '192.168.0.136', 'httpOnly': False, 'name': 'Tenant-Key', 'path': '/', 'sameSite': 'Lax', 'secure': False, 'value': 'master'}]
    for cookie in cookies:
        if 'expiry' in cookie:
            del cookie['expiry']
        driver.add_cookie(cookie)
    #刷新页面 添加cookie成功后刷新登录页,会跳转至首页
    driver.refresh()
    time.sleep(10)

    # 判断是否免密登录成功 跳转到了首页
    if driver.current_url == "http://192.168.0.136:8082/index":
        print("登录成功")
    else:
        print("登录失败")


finally:
    # 关闭浏览器
    driver.quit()

3、运行结果

相关推荐
道满科技13 分钟前
Function Calling 参数总出错?只修参数就行
linux·windows·python
霸道流氓气质1 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
ch6233 小时前
《AI 辅助编程实战:从零跑通一个 Excel 报表生成脚本的踩坑与复盘》
人工智能·python
import_random4 小时前
[python]conda和pip(区别和联系2)
python
Aurorar0rua4 小时前
CS50 x 2024 Notes Python - 01
开发语言·python·学习方法
用户6602676118794 小时前
备注接口返回成功,数据库却没变:怎样限定一次修复的范围?
python
Dumbness4 小时前
用 Python + UI Automation 读写微信 PC 版:一个群消息自动回复程序的实现与踩坑
python
艺杯羹4 小时前
Windows跨平台编码地雷全解:从GBK静默崩溃到内核级原子写入防御
人工智能·python·桌面客户端
用户8356290780514 小时前
使用 Python 在 Excel 中识别并高亮重复数据与唯一数据
后端·python
CCblandy4 小时前
Agent 工具调用怎么编排?本机实测:并行只到 2.63 倍,慢的先发省 30ms,CPU 活加 worker 无效
人工智能·后端·python·性能优化