【Python】Selenium操作cookie实现免登录

文章目录

    • 一、查看浏览器cookie
    • 二、获取cookie基本操作
    • 三、获取cookie并实现免登录
    • 四、封装成函数

一、查看浏览器cookie

cookie、session、token的区别:

  • cookie存储在浏览器本地客户端,发送的请求携带cookie时可以实现登录操作。
  • session存放在服务器。
  • token应用于应用程序。

F12查看浏览器cookie:
在这里插入图片描述

二、获取cookie基本操作

from selenium import webdriverurl = "http://www.baidu.com/"
driver = webdriver.Chrome()
driver.implicitly_wait(20)
driver.get(url)
cur_cookies = driver.get_cookies() #获取所有cookie
baidu_id_cookie = driver.get_cookie('BAIDUID')  #获取单个cookie
print(len(cur_cookies))
print(cur_cookies) #输出cookie值
print(baidu_id_cookie)
driver.quit()

运行结果如下:
在这里插入图片描述

三、获取cookie并实现免登录

以登录163邮箱为例。
1、首先登录163邮箱,将cookie保存到本地文件中:

from selenium import webdriver
from time import sleep
import json
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://mail.163.com/')
driver.implicitly_wait(20)
driver.switch_to.frame(0)
driver.find_element(By.NAME,"email").send_keys('xxx@163.com')
driver.find_element(By.NAME,"password").send_keys('xxxxxx')
driver.find_element(By.ID,"dologin").click()
sleep(3)
mycookies = driver.get_cookies()
jsoncookies = json.dumps(mycookies)
with open("mycookie.json",'w') as f:f.write(jsoncookies)
driver.quit()

运行完成后,脚本所在目录会生成一个名为"mycookie.json"的文件,文件内容如下:
在这里插入图片描述
2、然后通过读取该cookie文件,实现免登录效果:

from selenium import webdriver
import time
import json
from time import sleepdriver = webdriver.Chrome()
driver.get("https://mail.163.com")
cookie_file_path = "mycookie.json"
with open(cookie_file_path,"r") as f:cookies_str = f.readline()cookies_dict = json.loads(cookies_str)driver.delete_all_cookies() # 删除当前网址的所有cookie
for cookie in cookies_dict: # 循环读取cookiefor k in cookie.keys(): # 判断一下if k == "expiry":cookie[k] = int(cookie[k]) # expiry参数必须为整型driver.add_cookie(cookie)
time.sleep(2)
driver.refresh()
sleep(5)
driver.quit()

注意:

  • 在添加cookie时,需要将expiry对应的值转换为整型,否则会报错。
  • 添加cookie后,需要借助refresh关键字刷新页面
  • cookies存在有效期,之前导出的cookie可能会失效,失效则需要重新导出。

四、封装成函数

为方便后续调用“通过cookie实现免登录”的方法,可以将代码封装成函数:

def url_with_cookie(driver, target_url, file):cookies_file_path = filecookies_file = open(cookies_file_path,"r")cookies_str = cookies_file.readline()cookies_dict = json.loads(cookies_str)time.sleep(2)driver.get(target_url)driver.delete_all_cookies()for cookie in cookies_dict:for k in cookie.keys():if k =="expiry":cookie[k] = int(cookie[k])driver.add_cookie(cookie)time.sleep(2)driver.refresh()if __name__ == '__main__':from selenium import webdriverimport jsonimport timefrom time import sleepdriver = webdriver.Chrome()url_with_cookie(driver,'https://mail.163.com','mycookie.json')sleep(5)driver.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13137.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

户外运动耳机推荐,盘点最适合运动时佩戴的五款耳机

音乐能有效地激发人体潜能,充分释放能量,达到更好的运动效果,因此对于运动爱好者来说,一个合适的运动耳机至关重要。面对产品种类众多的运动耳机,很多人都会感到迷茫,经常有人问“有什么适合运动的时候佩戴…

【成都】EFDC建模方法、SWAT模型高阶研修

EFDC建模方法及在地表水环境评价、水源地划分、排污口论证应用 为了定量地描述地表水环境质量与污染排放之间的动态关系,EFDC、MIKE、Delft3D、Qual2K等数值模型被广泛应用在环境、水务、海洋等多个领域。Environmental Fluid Dynamics Code(EFDC&#…

STM32的ADC模式及其应用例程介绍

STM32的ADC模式及其应用例程介绍 📍ST官方相关应用笔记介绍资料:https://www.stmcu.com.cn/Designresource/detail/application_note/705947📌相关例程资源包:STSW-STM32028:https://www.st.com/zh/embedded-software/…

微信小程序使用第三方组件wxParse加载富文本html

微信小程序使用第三方组件wxParse加载富文本html 微信小程序微信小程序加载富文本html微信小程序富文本第三方组件wxParsewxParse富文本html wxParse简介 wxParse 是一个微信小程序富文本解析组件,支持支持Html及markdown转wxml。 wxParse gitHub地址&#xff1…

ARM中断实验

#ifndef __KEY_H__ #define __KEY_H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_gic.h"//对RCC/GPIO/EXTI章节的初始化 void hal_key1_exti_init();//对GIC的初始…

Css基础:盒子模型

1.盒子模型的构成: 边框 外边距 内边距 实际内容 2.table表格的单元格之间的线太粗需要border-collapse:collapse;合并一下边框宽度 3.内边距 padding 4.外边距 margin 块元素水平居中的做法,margin:0 auto; 行内元素和行内块元素 水平居中做…

Pyqt5+PyQt-Fluent-Widgets+Pycharm环境安装

文章目录 1. Pyqt5环境安装2. Pycharm配置QtDesigner3. PyQt-Fluent-Widgets插件安装4. 在QtDesigner中使用PyQt-Fluent-Widgets 1. Pyqt5环境安装 使用miniconda创建一个新环境作为pyqt5的开发。这里使用的python3.8版本,网上说太高的python3.10版本无法同时安装py…

Linux 共享内存

概念: 在Linux系统中,共享内存是一种用于进程间通信的机制,它允许多个进程共享同一块内存区域。 Linux 共享内存的作用和目的: Linux共享内存的主要目的是在不同的进程之间实现高效的数据交换和共享。它可以用于以下几个方面&…

Excel如何在运算中过滤重复数据?

来百度APP畅享高清图片 问题:两个对比表格内的数据实际是有重复的但是不是完全重复,比如a-b 和b-a 只是顺序换了但是条件格式就无法筛选了,只能筛选出a-b a-b 的相同数据。 需求:要筛选出a-b a-b b-a的重复数据,或者把…

7月7日发布?OPPO A78 4G手机跑分库曝光

据报道,OPPO计划在7月7日发布A78 4G手机。在正式发布之前,该手机已经在GeekBench跑分库中出现。根据GeekBench 6.1版本,A78 4G单核成绩为411分,多核成绩为1263分。 跑分页面显示 OPPO A78 4G 型号为 CPH2565,主板代号为…

如何提高力扣(Leetcode)的解题能力?

如何提高力扣(Leetcode)的解题能力? 力扣(Leetcode)是一个在线编程平台,提供了各种算法和数据结构的题目,让程序员可以练习和提高自己的编程技能。很多人都把力扣(Leetcode&#xf…

Mybatis-plus——增删改查相关+id生成策略+多数据操作(删除)+逻辑删除+乐观锁+代码生成器

项目文件总览 Dao层中 domain层中 测试类中含有三个测试方法,分别对应,插入删除和修改 id生成策略 针对不同的场景使用不同的id,用到提供的一个注解TableId 在实体类中使用Tablefiled注解时可以看见有如下的多种策略 使用第一个AUTO策略 运行插入方法得…