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中常用检测字符串相关函数汇总
Apr 15 Python
关于Python数据结构中字典的心得
Dec 04 Python
Python反射的用法实例分析
Feb 11 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
python 初始化一个定长的数组实例
Dec 02 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Python PyQt5整理介绍
Apr 01 Python
python3 配置logging日志类的操作
Apr 08 Python
Python定义一个Actor任务
Jul 29 Python
Python基于Faker假数据构造库
Nov 30 Python
flask项目集成swagger的方法
Dec 09 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
php字符串截取问题
2006/11/28 PHP
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
用python写asp详细讲解
2013/12/16 Python
python daemon守护进程实现
2016/08/27 Python
Python爬取三国演义的实现方法
2016/09/12 Python
python requests 使用快速入门
2017/08/31 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
大学生就业自我鉴定
2013/10/26 职场文书
高二物理教学反思
2014/02/08 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
工人先进事迹材料
2014/12/26 职场文书
初中运动会前导词
2015/07/20 职场文书