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基础教程之lambda表达式使用方法
Feb 12 Python
python中去空格函数的用法
Aug 21 Python
Python跳出循环语句continue与break的区别
Aug 25 Python
python中文编码问题小结
Sep 28 Python
python3.x上post发送json数据
Mar 04 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
python matlibplot绘制3D图形
Jul 02 Python
Python 实现域名解析为ip的方法
Feb 14 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
python 如何快速复制序列
Sep 07 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 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
杏林同学录(四)
2006/10/09 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python中 map()函数的用法详解
2018/07/10 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
C#中的验证控件有几种
2014/03/08 面试题
后勤部经理岗位职责
2014/02/23 职场文书
卖车协议书
2014/04/21 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL