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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
python操作ie登陆土豆网的方法
May 09 Python
Python中tell()方法的使用详解
May 24 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
numpy linalg模块的具体使用方法
May 26 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
linux 下selenium chrome使用详解
Apr 02 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
Python多个装饰器的调用顺序实例解析
May 22 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
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Python实现队列的方法
2015/05/26 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python笔记之代理模式
2019/11/20 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
心得体会开头
2014/01/01 职场文书
广告业务员岗位职责
2014/02/06 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
小学教研工作总结2015
2015/05/13 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记