selenium(四)操作cookie,伪造cookie
简介:
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据。
常见的用途就是保留用户登陆信息,登陆时的7天免登陆,记住我…………这些都是通过cookie实现的。
一:认识cookie
还是firefox,打开百度,登陆一下,shifit+F9,即可弹出存储探查器。看到cookie了吧,百度给你留下的东西还真不少。

chrome快捷键是ctrl+shifit+i

Cookie由变量名和值组成,类似Javascript变量。其属性里既有标准的Cookie变量,也有用户自己创建的变量,属性中变量是用“变量=值”形式来保存。
根据Netscape公司的规定,Cookie格式如下:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
NAME=VALUE
这是每一个Cookie均必须有的部分。NAME是该Cookie的名称,VALUE是该Cookie的值。在字符串“NAME=VALUE”中,不含分号、逗号和空格等字符。
Expires=DATE:Expires变量是一个只写变量,它确定了Cookie有效终止日期。该属性值DATE必须以特定的格式来书写:星期几,DD-MM-YY HH:MM:SS GMT,GMT表示这是格林尼治时间。反之,不以这样的格式来书写,系统将无法识别。该变量可省,如果缺省时,则Cookie的属性值不会保存在用户的硬盘中,而仅仅保存在内存当中,Cookie文件将随着浏览器的关闭而自动消失。
Domain=DOMAIN-NAME:Domain该变量是一个只写变量,它确定了哪些Internet域中的Web服务器可读取浏览器所存取的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息。这项设置是可选的,如果缺省时,设置Cookie的属性值为该Web服务器的域名。
Path=PATH:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie。一般如果用户输入的URL中的路径部分从第一个字符开始包含Path属性所定义的字符串,浏览器就认为通过检查。如果Path属性的值为“/”,则Web服务器上所有的WWW资源均可读取该Cookie。同样该项设置是可选的,如果缺省时,则Path的属性值为Web服务器传给浏览器的资源的路径名。
可以看出我们借助对Domain和Path两个变量的设置,即可有效地控制Cookie文件被访问的范围。
Secure:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。
二:python+selenium 获取cookie
尝试运行下面的代码
from selenium import webdriver driver=webdriver.Firefox()
driver.get('http://www.baidu.com')
cookie=driver.get_cookies()
print(cookie)
driver.quit()
print('----------')
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
cookie=driver.get_cookies()
print(cookie)
driver.quit()
输出结果大概是这样的:
firefox
[{'name': 'BAIDUID', 'value': '53****************
chrome
[{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H***********
这是由字典组成的列表,也就是列表的嵌套。
分解看一下:
from selenium import webdriver driver=webdriver.Firefox()
driver.get('http://www.baidu.com')
cookie=driver.get_cookies()
print('firefox')
print(cookie)
for i in cookie:
for k,v in i.items():
print(k,'-->',v)
print('-------')
driver.quit()
print('-------------------')
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
cookie=driver.get_cookies()
print('chrome')
print(cookie)
for i in cookie:
for k,v in i.items():
print(k,'-->',v)
print('-------')
driver.quit()
结果比较多,firefox chrome各取一组吧
firefox:
name --> BAIDUID
value --> 77E48BCEEFBD3936310DDD65BF9B2732:FG=1
path --> /
domain --> .baidu.com
expiry --> 3665365219
secure --> False
httpOnly --> False
chrome:
domain --> .baidu.com
expiry --> 1549417579.219434
httpOnly --> False
name --> BAIDUID
path --> /
secure --> False
value --> E5F0899A387E3944B0B8F09D255D9A73:FG=1
虽然顺序不一样,但是结构是一样的。
domain path name value expiry secure httpOnly
三:写入cookie
首先介绍一个web调试网站:http://httpbin.org/
这个网站就是调试web用的,比如说我们现在操作的cookie,和服务器交互等等的原理不考虑,但是我们和服务器交互的内容怎么看呢?
这个网站就提供了显示交互内容的功能,不仅有cookie,还有ip user-agent headers …………
现在我们看一下cookies http://httpbin.org/cookies

cookies是空的。
我们尝试一下写个cookie进去。
"""
Adds a cookie to your current session. :Args:
- cookie_dict: A dictionary object, with required keys - "name" and "value";
optional keys - "path", "domain", "secure", "expiry" Usage:
driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure':True}) """
from time import sleep
from selenium import webdriver driver = webdriver.Firefox()
driver.get('http://httpbin.org/cookies')
print(driver.get_cookies())
c1 = {
'name':'username',
'value':'jackadam',
# 'path':'/',
# 'domain':'httpbin.org',
# 'secure':False,
# 'expiry':None,
}
driver.add_cookie(c1)
print(driver.get_cookies())
sleep(3)
driver.refresh()
sleep(3)
driver.quit()
首先访问http://httpbin.org/cookies,然后增加一条cookie,等3秒后刷新,再等3秒,关闭浏览器。
官方文档写的,必选项name value,可选项path domain secure expiry
所以,注释掉的可选项,你也可以加上去。
注意:要首先打开这个网站,才可以给这个网站增加cookie。或许可以通过profile方式,先加载cookie再打开网站(研究中)
selenium(四)操作cookie,伪造cookie的更多相关文章
- Python3+Selenium2完整的自动化测试实现之旅(四):Selenium-webdriver操作浏览器、Cookie、鼠标键盘、警示框、设置等待时间、多窗口切换
本篇学习总结webdriver模块操作浏览器.Cookie.鼠标键盘.警示框.设置等待时间.多窗口切换等方法的使用 1 浏览器控制 Selenium-webdriverAPI提供了对页面元素定位 ...
- Python+selenium 之操作Cookie
在验证浏览器中cookie是否正确时,有时基于真实cookie的测试是无法通过白盒和集成测试进行的.Webdriver提供了操作Cookie的相关方法,可以读取,添加和删除cookie信息. 文本we ...
- Selenium系列(21) - Cookie操作和源码解读
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- selenium 操作cookie (cookie测试)
前言 在实际的web应用中,可能会涉及到cookie测试,验证浏览器中的cookie是否正确..Cookies 验证:如果系统使用了cookie,测试人员需要对它们进行检测.如果在 cookies 中 ...
- PHP弱类型:WordPress Cookie伪造
1 PHP弱类型 PHP是弱类型语言,所以变量会因为使用场景的不同自动进行类型转换.PHP中用 == 以及 != 进行相等判断时,会自动进行类型转换,用 === 以及 !== 进行判断时不会自动转换类 ...
- 跨站请求伪造和cookie伪造
CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站 ...
- PHP 通过curl POST传递 伪造cookie 传递信息
一些论坛网站需要每日签到太麻烦,于是写了一个Win 的定时任务,通过curl 去处理传递的伪造Cookie 和 header; 有不妥的地方,希望各位大佬们多多指正,谢谢各位大佬: $fp = @fo ...
- Selenium(十五)cookie
有时候我们需要验证浏览器中是否存在某个 cookie,因为基于真实的 cookie 的测试是无法通过集成测试完成的.WebDriver 提供了操作 Cookie 的相关方法可以读取.添加和删除 coo ...
- selenium登录163邮箱,得到cookie,requests后续请求
1.场景 很多时候登录操作是比较复杂的,因为存在各种反爆破操作,以及为了安全性提交数据都会存在加密.如果要完全模拟代码去实现登录操作是比较复杂,并且该网站后续更新了登录安全相关功能,那么登录的模拟操作 ...
- Java操作Session与Cookie
1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...
随机推荐
- cogs 1962. [HAOI2015]树上染色
★★☆ 输入文件:haoi2015_t1.in 输出文件:haoi2015_t1.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 有一棵点数为N的树,树边有边 ...
- Python3基础 str 通过拆分字符串与插入新的内容形成新的字符串
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Node10.15.0的安装
1. 首先我们需要去node官网下载最近版本的压缩包,然后我们把他们解压到我们自定义的安装路径,我使用的是/usr/local/lib/nodejs VERSION=v10.15.0 DISTRO=l ...
- 不在同一主机:vsftpd+pam+mysql
配置环境:Centos7上的mariadb + Centos6上的vsftpd 一.安装所需要程序 1.安装vsftpd和pam_mysql(在centos6-->192.168.108.160 ...
- Spirng boot 启动的时候进行监控检查不通过停止服务与自定义健康监控节点
基于 spring-boot-starter-actuator • 前提条件: <dependency> <groupId>org.springframework.bo ...
- js delete可以删除对象属性及变量
,对象属性删除 function fun(){ this.name = 'mm'; } var obj = new fun(); console.log(obj.name);//mm delete o ...
- Python day9函数部分
函数的学习:函数对于一门编程语言来说挺重要的,尤其是c语言,是完全使用函数来编写的 1.函数的定义:逻辑结构化和过程化的一种编程方法 def squre(x): "求一个数的平方 retur ...
- grub 启动错误 "file not found"
刚安装ubuntu 14.4 竟然出现这么尴尬的事,ubuntu 行不行? 幸好还是能从u盘启动后,转到硬盘. 然后在网上找到了解决方法. http://askubuntu.com/questions ...
- 第一个 MVC 应用程序(上半部分)(《精通 ASP.NET MVC5》 的第二章)
本章将使用 ASP.NET MVC 框架创建一个简单的数据录入应用程序. 笔者会将过程分解成一个个的步骤,以便能够看出如何构造 ASP.NET MVC 应用程序.(对于一些未进行解释的内容,笔者提供了 ...
- MySQL--Workbench表及表种数据导出
MySQL--Workbench表及表种数据导出 1.-->点击Management,--->出现Navigator. 2.点击Date Export,选择导出的库. 3)选择库中的某个表 ...