【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、运行结果

相关推荐
冷雨夜中漫步6 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴6 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再6 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
喵手8 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934738 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy8 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
可可南木8 小时前
3070文件格式--15--bootptab文件
功能测试·测试工具·pcb工艺
肖永威9 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ10 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha10 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全