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脚本判断 Linux 是否运行在虚拟机上
Apr 25 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
python检查URL是否正常访问的小技巧
Feb 25 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
通过Python实现自动填写调查问卷
Sep 06 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
python迭代器常见用法实例分析
Nov 22 Python
Python使用Excel将数据写入多个sheet
May 16 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
php实现mysql封装类示例
2014/05/07 PHP
10个简化PHP开发的工具
2014/12/25 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
Python yield 使用浅析
2015/05/28 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
python3 logging日志封装实例
2020/04/08 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
事务机电主管工作职责
2014/02/25 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
SQL Server表分区删除详情
2021/10/16 SQL Server