接口测试
接口测试
Filddler基础的使用
一、Fiddler
1.工具栏中各个按钮的含义
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps1.jpg)
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps2.jpg):配置windows中特定应用的抓包(默认抓取不到)
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps3.jpg):添加备注信息
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps4.jpg):重新发起指定请求
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps5.jpg):清空指定会话内容
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps6.jpg):断点放行
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps7.jpg):模式切换
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps8.jpg):相应数据解码
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps9.jpg):显示会话数
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps10.jpg)
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps11.jpg):抓取指定进程发出的请求
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps12.jpg):关键字查找
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps13.jpg):保存当前的会话数据
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps14.jpg):截图+计时
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps15.jpg):打开浏览器
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps16.jpg):清空缓存
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps17.jpg):加密/解密
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps18.jpg):浮窗显示详细内容
2.任务面板功能详解
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps19.jpg)
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps20.jpg):fiddler脚本
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps21.jpg):日志
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps22.jpg):过滤规则配置
Use filters:启用过滤规则
Hosts:
show only the following hosts 只展示指定的hosts
Hide the following hosts:隐藏指定的hosts
Flag the following hosts:标记指定的hosts
Clients process
Request headers
Response headers
Breakpoints
Response status code
Response content-type
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps23.jpg):时间线
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps24.jpg):会话数据统计
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps25.jpg):请求+响应详情
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps26.jpg)
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps27.jpg)
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps28.jpg):模拟服务端响应
添加响应规则,抓取到的请求如果满足已启用规则,则会被fiddler拦截,并返回规则中设置的相应内容(请求不会被发送服务器)
可以手动输入规则内容,也可以直接从会话列表中拖拽到autoresponder中
Regex:使用正则表达式进行匹配
Exact:精确匹配
Method:匹配请求方法
Header:匹配请求头
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps29.jpg):模拟客户端请求
可以手动输入规则内容,也可以直接从会话列表中拖拽到composer中
添加规则后,点击execute按钮即可发送请求
![img](file:///C:\Users\zhouchao\AppData\Local\Temp\ksohtml43056\wps30.jpg):抓取移动端流量
3.断点
在rules菜单下选择automatic breakpoints
(1)请求前断点,选择before request(快捷键F11)
请求发出后会被fiddler拦截(此时请求还未被发送到服务端),拦截后就可以修改请求内容,修改完成后点击请求信息窗口中的run to completion按钮或工具栏中的go按钮即可放行(此时修改后的请求会被发送到服务端)
(2)响应后断点,选择after response(快捷键Alt+F11)
服务端响应请求后会被fiddler拦截(此时响应内容还未被发送到客户端),拦截后就可以修改响应内容,修改完成后点击响应信息窗口中的run to completion按钮或工具栏中的go按钮即可放行(此时修改后的响应信息会被发送到服务端)
(3)关闭断点功能,disabled(快捷键Shift+F11)
4.常用命令
(1)?+关键字,从protocol、host、url三个字段中进行模糊匹配,高亮显示匹配到的请求
(2)@+关键字,从host字段中进行模糊匹配,高亮显示匹配到的请求
(3)<+数字,与body的大小作比较,高亮显示小于指定数字的请求
(4)>+数字,与body的大小作比较,高亮显示大于指定数字的请求
(5)=+状态码,与result作比较,高亮显示等于指定状态码的请求
(6)cls,清空当前会话列表中的所有请求
(7)dump,转存当前会话列表的所有请求数据
(8)Select+空格+关键字,从content-type中进行模糊匹配,高亮显示匹配到的请求
(9)start,开启代理
(10)stop,关闭代理
(11)bpu+空格+关键字,从protocol、host、url三个字段中进行模糊匹配,拦截匹配到的请求
(12)bpm/bpv+空格+method,拦截指定的方法的请求
(13)bps+空格+状态码,拦截指定响应状态码的请求
(14)bpafter+空格+关键字,从protocol、host、url三个字段中进行模糊匹配,拦截匹配到的响应
(15)g/go,放行当前被拦截的请求或响应
(16)Alt+Q:光标定位到命令行的快捷键
5.Fiddler允许移动端抓包
(1)Tools--options--https:全部勾选
(2)Tools--options--connections:
勾选allow remote computers to connect
端口号默认:8888
(3)移动端和PC端在同一个网络下
(4)移动端设置代理ip为PC的ip,端口号为:8888(与fiddler中设置的端口号保持一致)
(5)如果要抓https的包,在移动端访问: http://<pc端ip>:8888,下载证书安装,并设置信任证书
(6)如果所有配置都已配好,还是无法正常抓包,可以查看移动设备型号是否需要额外配置
6.模拟弱网
(1)在FiddlerScript中搜索m_SimulateModem,修改上传和下载的延迟时长,即可达到模拟弱网的目的
二、HTTP协议
-
超文本传输协议
-
查看网页源代码:鼠标右键选择'查看网页源代码'
常见标签:
input img i a button link span
-
http的特点
(1) 无连接(不是不连接,是不保持连接)
(2) 媒体独立(约定的 mime-type)
(3) 无状态(没有记忆力)
-
http和tcp /ip的区别
(1) tcp协议传输数据,HTTP进行解释
(2) http是无连接,tcp是有连接
(3) http是无状态,tcp是有状态
(4) http是应用层协议,tcp是传输层协议
-
http请求内容
(1) request
Request method: 请求方法 (get post)
Request URL: 请求地址
Request headers: 请求头
-
Content-type:指定接收数据的格式Accept:指定可接受数据类型
Accept-language:指定客户端可接受语言类型 -
Accept-length:指定客户端可接受的数据长度
-
Accept-encoding:指定客户端可接受的编码格式
-
Cookies:存放在客户端本地的身份认证信息
-
Host:服务器主机地址
-
User-agent:客户端系统和系统版本,浏览器和浏览器版本
-
Referer:请求是从哪里发出来的,可以用来鉴别爬虫数据
Request body: 请求体(post 要传的参数一般放在body中进行传输)
- Application/x-www-form-urlencoded:表单数据
- Mutipart-form:表单数据(可传文件),
(2) response
Response status: 响应状态码
Response headers: 响应头
Response body: 响应体
(3)
常见请求方法
get:从服务器获取信息
传参方式:一般直接在url上面跟要传的参数,参数和路径之间用?间隔,不同参数之间用&间隔
post:修改服务器的信息
传参方式:一般在body 中跟要传的参数
form-data:表单形式,既可以传文本,也可以传文件
**x-www-form-urlencoded:表单形式,只能传文本,不能传文件 ** Raw:支持多种格式:
text:纯文本
javascript:js脚本
json:按照json数据格式的要求传参
html:网页源代码
xml:xml配置文件
binary:二进制文件
put:更新服务器的文档信息
patch:更新服务器文档的局部信息
delete:删除指定页面
head: 获取响应头,无响应体
Connect:预留给代理服务器用来建立连接管道
Options:允许查看服务端性能
Trace:回显服务器的请求,用于测试诊断
资料>>>>
https://tool.oschina.net/commons?type=5
https://baike.baidu.com/item/http/243074?fr=aladdin#2 •
https://germey.gitbooks.io/python3webspider/content/2.1-HTTP 基本原理.html
-
三、Json数据
1.json(javascript object notation------js对象表示法) 是一种轻量级数据交换格式,独立于语言和平台.
2.json语法规则
(1)键值对(同一层中key不能重复)
(2)键和值之间用冒号间隔
(3)每组数据间用逗号隔开
(4)值可以是:字符串,数字,数组,对象,bool值,null
四、postman
1.鉴权
(1)鉴权方式:basic-auth(账号密码)、digest-auth(账号密码+realm)、Oauth1.0(customer key+)、Oauth2.0、hawk authentication