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实现的tab文件操作类分享
Nov 20 Python
Python二分法搜索算法实例分析
May 11 Python
Python爬虫工程师面试问题总结
Mar 22 Python
python绘制热力图heatmap
Mar 23 Python
python实现转圈打印矩阵
Mar 02 Python
python抓取搜狗微信公众号文章
Apr 01 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python中实现词云图的示例
Dec 19 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
Pandas 稀疏数据结构的实现
Jul 25 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
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php表单提交问题的解决方法
2011/04/12 PHP
php基础学习之变量的使用
2011/06/09 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
pytorch 共享参数的示例
2019/08/17 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
早餐连锁店计划书
2014/01/08 职场文书
计划生育宣传标语
2014/06/21 职场文书
物理学专业求职信
2014/07/04 职场文书
实习班主任自我评价
2015/03/11 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
贫困证明书范文
2015/06/16 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers