python selenium操作cookie的实现


Posted in Python onMarch 18, 2020

由于HTTP协议是无状态协议,所以服务器与客户端通过http协议通讯时,服务器不能记录客户端的信息。

为了解决这个问题,通过 Cookie 和 Session 技术来实现。

  • Cookie保存在客户端中
  • Session保存在服务器中

cookie的属性

一般cookie所具有的属性,包括:

Domain:域,表示当前cookie所属于哪个域或子域下面。

对于服务器返回的Set-Cookie中,如果没有指定Domain的值,那么其Domain的值是默认为当前所提交的http的请求所对应的主域名的。比如访问 http://www.example.com,返回一个cookie,没有指名domain值,那么其为值为默认的www.example.com。

Path:表示cookie的所属路径。

Expire time/Max-age:表示了cookie的有效期。expire的值,是一个时间,过了这个时间,该cookie就失效了。或者是用max-age指定当前cookie是在多长时间之后而失效。如果服务器返回的一个cookie,没有指定其expire time,那么表明此cookie有效期只是当前的session,即是session cookie,当前session会话结束后,就过期了。对应的,当关闭(浏览器中)该页面的时候,此cookie就应该被浏览器所删除了。

secure:表示该cookie只能用https传输。一般用于包含认证信息的cookie,要求传输此cookie的时候,必须用https传输。

httponly:表示此cookie必须用于http或https传输。这意味着,浏览器脚本,比如javascript中,是不允许访问操作此cookie的。

得到cookie

#从百度首页登录百度账号,并获取cookie
from selenium import webdriver
from time import sleep
import json
 
#启动chome浏览器并访问百度首页
option=webdriver.ChromeOptions()
option.add_argument('--start-maximized')
drive=webdriver.Chrome(options=option)
drive.get('http://www.baidu.com')
print(drive.title)
 
#点击“登录”
eled=drive.find_element_by_link_text("登录")
eled.click()
sleep(2)
 
#点击“用户名登录”
namelogin=drive.find_element_by_css_selector('p.tang-pass-footerBarULogin')
namelogin.click()
sleep(2)
 
#输入用户名,密码并登录
username = drive.find_element_by_id('TANGRAM__PSP_10__userName')
username.send_keys('********')
sleep(1)
 
password = drive.find_element_by_id('TANGRAM__PSP_10__password')
password.send_keys('********')
sleep(1)
 
submit = drive.find_element_by_id('TANGRAM__PSP_10__submit')
submit.click()
sleep(3)
 
#获取网站cookie
diccookie=drive.get_cookies()
fw=open('baiducookie.txt','w')
json.dump(diccookie,fw)
fw.close()

从硬盘读取cookie,加入到request请求发送服务器。

import time
import json
 
启动chome浏览器并访问百度首页
option=webdriver.ChromeOptions()
option.add_argument('--start-maximized')
drive=webdriver.Chrome(options=option)
 
drive.get('http://www.baidu.com')
print(drive.title)
 
fr=open('baidu_cookie.txt','r')
cookielist=json.load(fr)
fr.close()
for cookie in cookielist:
  drive.add_cookie(cookie)
     
sleep(5)
drive.get('http://www.baidu.com')
drive.refresh()

通过cookie登录百度失败:

Message: unable to set cookie
Message: invalid argument: invalid 'expiry'

到此这篇关于python selenium操作cookie的实现的文章就介绍到这了,更多相关python selenium操作cookie内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
Django验证码的生成与使用示例
May 20 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
python学习教程之使用py2exe打包
Sep 24 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
实例讲解python中的协程
Oct 08 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python中for循环变量作用域及用法详解
Nov 05 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
详解Python中第三方库Faker
Sep 25 Python
Selenium 滚动页面至元素可见的方法
Mar 18 #Python
python字符串判断密码强弱
Mar 18 #Python
详解Python3中的 input() 函数
Mar 18 #Python
Python通过socketserver处理多个链接
Mar 18 #Python
python实现密码强度校验
Mar 18 #Python
Python tcp传输代码实例解析
Mar 18 #Python
python实现用户名密码校验
Mar 18 #Python
You might like
广播爱好者需要了解的天线知识
2021/03/01 无线电
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
JavaScript类库D
2010/10/24 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
pandas分组聚合详解
2020/04/10 Python
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
高中生学习的自我评价
2013/12/14 职场文书
质量月活动总结
2014/08/26 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
开学典礼观后感
2015/06/15 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers