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循环监控远程端口的方法
Mar 14 Python
用Python制作简单的朴素基数估计器的教程
Apr 01 Python
谈谈python中GUI的选择
Mar 01 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
python实现windows下文件备份脚本
May 27 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
python实现AES加密解密
Mar 28 Python
python pygame实现五子棋小游戏
Oct 26 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 Python
如何用python识别滑块验证码中的缺口
Apr 01 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
深入PHP autoload机制的详解
2013/06/09 PHP
php ios推送(代码)
2013/07/01 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python机器学习之神经网络实现
2018/10/13 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
Django多个app urls配置代码实例
2020/11/26 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
2015年房地产个人工作总结
2015/05/26 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书