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 相关文章推荐
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python与R语言的简要对比
Nov 14 Python
Python for循环生成列表的实例
Jun 15 Python
django中forms组件的使用与注意
Jul 08 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
Python使用xpath实现图片爬取
Sep 16 Python
python 图像增强算法实现详解
Jan 24 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
行政主管岗位职责
2013/11/18 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
教师听课评语大全
2014/12/31 职场文书
介绍信范文
2015/01/31 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
Vue深入理解插槽slot的使用
2022/08/05 Vue.js