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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python模拟登陆实现代码
Jun 14 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
Python socket服务常用操作代码实例
Jun 22 Python
基于Python的自媒体小助手---登录页面的实现代码
Jun 29 Python
python3爬虫中异步协程的用法
Jul 10 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
原生js实现无缝轮播图效果
2021/01/28 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
python进行两个表格对比的方法
2018/06/27 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
邮政员工辞职信
2014/01/16 职场文书
一年级评语大全
2014/04/23 职场文书
产品生产计划书
2014/05/07 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
element tree树形组件回显数据问题解决
2022/08/14 Javascript