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

相关推荐
万邦科技Lafite16 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K17 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
苍煜18 小时前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
AllData公司负责人19 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
Flittly20 小时前
【LangGraph新手村系列】(5)时间旅行:浏览历史、分叉时间线与修改过去
python·langchain
2301_7820404520 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python
yaoxin52112321 小时前
400. Java 文件操作基础 - 使用 Buffered Stream I/O 读取文本文件
java·开发语言·python
用户83562907805121 小时前
使用 Python 自动创建 Excel 折线图
后端·python
小白学大数据1 天前
面向大规模爬取:Python 全站链接爬虫优化(过滤 + 断点续爬)
开发语言·爬虫·python
WL_Aurora1 天前
【每日一题】贪心
python·算法