接口测试

接口测试

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

posted @ 2022-08-23 19:50  小胖子学编程  阅读(313)  评论(0编辑  收藏  举报