81 位表示想打赏此文章

fiddler抓取网络请求

因本文是ppt转化过来,衔接可能不太连贯,但终会日益完善,感谢垂阅!

网络结构

一般网络可以分为三部分

一、终端(例如:用户、浏览器、APP、服务器~)
二、网络(例如:网卡、路由、代理服务器~)
三、服务器(例如:平台、服务器~)

本节所讲的fiddler就是担任代理服务器的角色

 

fiddler基本设置

8888:fiddler默认代理端口,也可以进行修改
Act as system proxy on startup:fiddler启动后,会将fiddler设置为系统默认代理。
Allow remote computers to connect:开启后能对android、ios手机进行抓包

 

fiddler基本操作

Capturing:点击即可开始/暂停抓包
×:清空已经抓取的报文列表,快捷键ctrl+x
Save:保存已经抓取的报文

 

过滤器

Use Filters:勾选后过滤器内容才能生效。
Actions-Run Filterset now:过滤器的修改实时生效。
Show only traffice from:显示指定进程的报文。选择Remote Process后,可以只显示手机端的报文。
Show only if URL contains:url中含有指定关键字才会显示到列表中。

 

查看区

上方为request,下方为respond。
无论上下方,均有TextView、WebForms、Raw、JSON、XML,可以不同格式查看报文。
TextView非常适用于篡改请求功能。
若respond区出现红框提示,点击即可解码查看。

 

自定义列

默认展示列可能不满足所有人的需求,右键列名提供自定义列功能,可按照个人性进行展示。

 

篡改请求

路径:Rules – automatic breakpoints – before requests / after respond / disabled

 

before request

拦截所有request(从服务器发送的请求)
点击Run to Completion后才可放行
适用于篡改不同入参以调试接口是否符合协议、达到安全性标准

 

after request

拦截所有respond(从服务器返回的响应)
点击Run to Completion后才可放行
适用于模拟接口返回(Mock),临时调试前端页面、解决接口阻塞影响
Mock成本较高,建议做成AutoRespond

    183 位表示想打赏此文章

fiddler抓取https请求

HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

访问HTTPS站点时,请求、响应都通过TLS协议在浏览器和服务器之间加密传输,并且通过数字证书技术保证数据的保密性和完整性;任何“中间人”、包括代理服务器都只能转发数据,而无法窃听或者篡改数据

要抓取HTTPS流量的明文内容,Fiddler必须解密HTTPS流量。要解密HTTPS流量,则必须加入数字证书

因fiddler默认证书生成器不兼容ipad、android等设备,所以需要使用FiddlerCertMaker来生成证书,下载地址:www.enhanceie.com/dl/FiddlerCertMaker.exe

安装成功后,启动fiddler,检查证书类型。如果是CertEnroll,则为默认证书,请求改为MakeCert,然后重启fiddler

手机端接入fiddler代理地址,以电脑热点为例,广播的ip地址为192.168.137.1,上一篇教程讲到fiddler代理端口为8888。

手机端连上fiddler,但未安装证书情况下,访问https地址,将会出现如下提示:

安装证书在ios上分为三步,android则比较简单,所以这里以ios为例:(下载证书→安装证书→允许证书)

①下载证书:

路径:使用手机浏览器,访问fiddler代理地址,一般为ip:8888。

出现fiddler echo service页面后,点击证书进行下载。

②安装证书:

路径:通用→描述文件。

选择已下载的描述文件进行安装。

③信任证书:

路径:通用→关于本机→证书信任设置。

开启信任即可。

 

 

    219 位表示想打赏此文章

postman的时间日期/时间戳

接口测试时往往需要自定义生成时间、日期、时间戳,网上较多资料是使用math,但我并不建议使用。

postman的sanbox功能(JavaScript的执行环境)支持moment库,在pre-request script和tests中引用moment能方便直观地生成时间、日期和时间戳。详细语法可以参考官网:https://momentjs.com/

moment常见的用法介绍:(假设目前长时间戳为:1561892651418)

moment().format("X") //X:短时间戳
--1561892651
moment().format("x") //x:长时间戳
--1561892651418
moment().format("ss") //ss:秒数
--11
moment().format("SSS") //SSS:毫秒数
--418
moment().format("YYYYMMDD-hhmmss") //hh:12小时制度
--20190630-070411
moment().format("YYYYMMDD-HHmmss") //HH:24小时制
--20190630-190411
  • SSS、YYYY代表3位毫秒数、4位年份。只输入1位S则表示只取第一位毫秒数。
  • 利用此特性,moment().format(“XS”)则表示短时间戳+第一位毫秒数。

实例:(在pre-request script或tests中编辑,假设目前长时间戳为:1561892651418)

//先引用moment库
var moment = require('moment')
//X代表短时间戳,SSS代表毫秒
//X+S ≈ 精确到0.1秒
pm.globals.set("now", moment().format("XS"));
-------------------------------------
全局变量now的值为15618926514
    153 位表示想打赏此文章

postman+newman做自动化测试

一、安装node.js

官网地址:https://nodejs.org/en/

安装完成后,打开cmd(win+R),运行npm -version,顺利提示版本号即安装成功。

二、安装newman

打开cmd(win+R),运行 npm install -g newman

安装完成后,运行 newman –version 校验是否安装成功

三、安装reporter

执行npm install -g newman-reporter-html来全局安装支持Newman生成html报告的组件

这里只列举了html,因为实际使用过程中就html的可读性比较高。

四、newman命令

语法:newman run <collection-file-source> [options]

详情参阅:command_line_integration_with_newman

Options:

Utility:
-h, --help output usage information
-v, --version output the version number

Basic setup:
--folder [folderName] Specify a single folder to run from a collection.
-e, --environment [file|URL] Specify a Postman environment as a JSON [file]
-d, --data [file] Specify a data file to use either json or csv
-g, --globals [file] Specify a Postman globals file as JSON [file]
-n, --iteration-count [number] Define the number of iterations to run

Request options:
--delay-request [number] Specify a delay (in ms) between requests [number]
--timeout-request [number] Specify a request timeout (in ms) for a request

Misc.:
--bail Stops the runner when a test case fails
--silent Disable terminal output
--no-color Disable colored output
-k, --insecure Disable strict ssl
-x, --suppress-exit-code Continue running tests even after a failure, but exit with code=0
--ignore-redirects Disable automatic following of 3XX responses

 

下面细说几个常用的[option]

newman run <collection-file-source>
newman run mycollection.json
newman run https://www.getpostman.com/collections/cb208e7e64056f5294e5

newman是全局命令,打开cmd即可运行。<collection-file-source>可以写绝对路径,或者相对路径。

mycollection.json是从postman导出来的工程,导出方法:

-e, –environment [file|URL]
newman run mycollection.json -e dev.json
newman run mycollection.json --environment test.json

dev.json是从postman导出来的环境变量,导出方法:

需要注意,环境变量或者全局变量,存在两列的值,分别是initial value和current value。current value是你在postman中使用的值,initial value才是你导出值。

-g, –globals [file]
newman run mycollection.json -g globals.json
newman run mycollection.json --globals globals.json

globals.json是从postman导出来的全局变量,导出方法:

在环境变量的底部,会发现有全局变量的入口。在全局变量的底部,有导出按钮。

–reporters cli,html,junit –reporter-html-export <reporter-path>
newman run mycollection.json --reporters cli,html,junit --reporter-html-export result.html