多数资料摘抄至 https://www.cnblogs.com/miantest/p/7289694.html

一、在 macOS 下如何安装 (https://www.telerik.com/fiddler)

首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)。安装程序可以从http://www.mono-project.com/download/#download-mac地址下载。

安装完后,在Terminal里执行以下命令:1、/Library/Frameworks/Mono.framework/Versions/5.16.0/bin/mozroots --import --sync  ️ 5.16.0 的地方写对应的 Mono.framework 版本

此步是为了从Mozilla LXR上下载所有受信任的root证书,存于Mono的证书库里。root证书能用于请求https地址。

2、接下来如果想要运行Fiddler,还需要把Mono加入到环境变量中。编辑.bash_profile文件:

sudo vi ~/.bash_profile

加入文本

export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/5.0.1

export PATH=$PATH:$MONO_HOME/bin

️ 5.0.1 改成自己的 Mono.framework 版本

保存后重新打开Terminal,Mono环境已装好。

3、Fiddler的安装

从Fiddler官网https://www.telerik.com/download/fiddler下载fiddler-mac.zip的压缩包。解压到非中文字符的路径下。

Fiddler运行,先 cd 到 Fiddler 的路径下面

打开Terminal,进入到刚才解压的Fiddler路径,执行命令运行:

sudo mono Fiddler.exe

如果报错的话就用 mono --arch=32 Fiddler.exe 这个命令

二、Fiddler 基础?(多数资料摘抄至 https://www.cnblogs.com/wangning528/p/6388464.html)

Fiddler 是啥:Fiddler 是位于客户端和服务器端的 HTTP 代理,目前最常用的 HTTP 抓包工具,能够记录客户端和服务器端的所有 HTTP 请求,可以针对特定的 HTTP 请求,分析请求数据、设置断点、调试 web 应用,修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 web 调试的利器。

学习的前提,必须懂 HTTP 相关知识:

1、了解 web 及 网络基础

HTTP

a :超文本传输协议,是一种通信协议,它允许将文本标记语言(html)文档从 web 服务器传送到客户端的浏览器,是一个应用层协议,由请求和响应构成,HTTP 是一个无状态的协议(同一个客户端这次请求和上次请求是没有对应关系的)。(网络协议:网络中数据交换而建立的规则,因为两个数据终端所用字符集不同,所以要用协议让它们转化成另一个客户端认识的)

b  : HTTP 的端口号为 80, HTTPS 的端口号为 443 (端口号:当一台电脑启动了一个让远程电脑访问的程序,那么它就需要开启至少一个端口号来让外界访问,所以当一个系统开启了一个可以让外界访问的程序后自然需要在房间上开一个窗口来接受外界的访问,这个窗口就是端口,那为什么要给端口编号来区分它们呢?既然一个程序开了一个端口,那么不是外部信息都可以通过这个开启的端口来访问了吗?答案是不可以,因为数据是端口号来通知传输协议送给哪个软件来处理的,数据是没有智慧的,如果很多程序共用一个端口来接受程序的话,那么外界的一个数据包送来的传输层就不知道该送给哪个软件来处理,这样势必会混乱。摘抄至:https://blog.csdn.net/flying_man_/article/details/79392923)

c  :工作流程

一次 HTTP 操作称为一个事务

1) 客户机和服务器需要建立连接,只要单击某个超级链接,HTTP 开始工作。

2) 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,MIME 信息包括请求修饰符、客户机信息和可能的内容。

3) 服务器接收请求后,给予相应的相应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或者错误的代码,后面是 MIME 信息包括服务器信息、实体信息和可能的内容

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏桑,然后客户机与服务器断开链接。

如果以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出,对于用户来说,这个过程是由 HTTP 自己完成的,用户只需要鼠标点击,等待信息显示就 OK 了。

三、了解 Fiddler 各个字段的含义(多数资料摘抄至 https://www.cnblogs.com/miantest/p/7289694.html) 如何抓取浏览器的 数据包?

#:顺序号,按照抓包的顺序从1递增

Result:HTTP状态码  ( 200 :一切 OK ;500("Bad Request”); 502("Bad Gateway"))     

Protocol:请求使用的协议,如HTTP/HTTPS/FTP等(HTTPS简略讲是HTTP的安全版)

HOST:请求地址的主机名或域名(比如我要登录百度,然后请求的主机名就是 www.baidu.com)

URL:请求资源的位置

Body:请求大小

Caching:请求的缓存过期时间或者缓存控制值

Content-Type:请求响应的类型

Process:发送此请求的进程ID

Comments:备注

Custom:自定义值

3)每个Fiddler抓取到的数据包都会在该列表中展示,点击具体的一条数据包可以在右侧菜单点击Insepector查看详细内容。主要分为请求(即客户端发出的数据)和响应(服务器返回的数据)两部分。

4)HTTP Request Header:以百度为例,查看请求百度主页这条数据包的请求数据,从上面的Headers中可以看到如下内容:

请求方式:GET

协议: HTTP/1.1

Client 头域:

Accept: text/html, application/xhtml+xml, image/jxr, */*                             ---------浏览器端可以接受的媒体类型

Accept-Encoding: gzip, deflate                                                                  ---------压缩方法

Accept-Language: zh-CN                                                                          ---------语言类型

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393                             ---------客户端使用的操作系统和浏览器的名称和版本

COOKIE头域:将cookie值发送给服务器(web 服务器通过发送一个称为 Set-Cookie 的 HTTP 消息头来创建一个 cookie,然后存储在用户电脑上,在随后的请求中将这些信息发送至服务器,web 服务器就可以使用这些信息来识别不同用户。)

Transport 头域:

Connection:当网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接是否关闭。keep-alive表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;close表示关闭,客户端再次访问这个服务器上的网页,需要重新建立连接。

HOST:主机名或域名,若没有指定端口,表示使用默认端口80.

  5)HTTP Response Header:继续以百度为例,如图所示:

协议:HTTP/1.1

状态码:200

Cache头域:

Cache-Control: private                                               ---------此响应消息不能被共享缓存处理,对于其他用户的请求无效

Date: Sat, 05 Aug 2017 04:37:43 GMT                      ---------生成消息的具体时间和日期

Expires: Sat, 05 Aug 2017 04:37:42 GMT                  ---------浏览器会在指定过期时间内使用本地缓存

Cookie/Login 头域:

Set-Cookie: BDSVRTM=264; path=/                           ---------把cookie发送到客户端

Set-Cookie: BD_HOME=1; path=/

Set-Cookie: H_PS_PSSID=1425_21097_22157; path=/; domain=.baidu.com

Entity头域

Content-Length: 202740                                              ---------正文长度

Content-Type: text/html;charset=utf-8                         ---------告知客户端服务器本身响应的对象的类型和字符集

Miscellaneous 头域:

Bdpagetype: 2

Bdqid: 0x99791efd00036253

Bduserid: 2577220064

Server: BWS/1.1                                                          ---------指明HTTP服务器的软件信息

X-Ua-Compatible: IE=Edge,chrome=1

Security头域:

Strict-Transport-Security: max-age=172800                ---------基于安全考虑而需要发送的参数,关于这个参数的解释,请参考:http://www.freebuf.com/articles/web/66827.html

Transport头域:

Connection: Keep-Alive

6)TextView:显示请求或响应的数据。

7)WebForms:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的。

8)Auth:显示认证信息,如Authorization

9)Cookies:显示所有cookies

10)Raw:显示Headers和Body数据

11)JSON:若请求或响应数据是json格式,以json形式显示请求或响应内容

12)XML:若请求或响应数据是xml格式,以xml形式显示请求或响应内容

13)上面是以百度主页为例,百度主页采用的是GET请求,在TextView中没有请求body,我们再以无忧行网站登录接口为例,它是一个POST请求,除了请求头外,在TextView中多了请求数据。这也是GET请求和POST请求的一个区别。GET请求是将请求参数放在url中,而POST请求一般是将请求参数放在请求body中。

 

总结:通过Fiddler可以抓取请求和响应参数,通过对参数进行分析,可以定位是前端还是后台问题。例如我们在测试登录接口时,输入了正确的手机号和密码,但前端提示“请输入正确的用户名和密码”;仅仅通过界面提示我们只能描述bug表象,但不能分析出问题原因。假设通过抓包我们发现是由于前端参数名错误或参数值为空,从而导致后台报错。这个时候我们将bug指向前端开发人员,并将参数数据和接口文档中对应的报文数据作为附件上传,是不是可以提高bug的解决效率呢?Fiddler在实际的功能测试中有很大的作用,一方面帮助我们更好的了解某个业务中客户端和服务器端是通过哪些接口进行请求的,从而更好的了解代码逻辑;另一方面,我们还可以通过响应数据判断哪里出现了问题,例如可能服务器程序挂了,导致前端报“服务器故障”,这时我们通过抓包发现响应数据返回502,这时我们可以手动去重启服务或是联系运维重启服务,从而提高问题的解决效率。(可以根据返回响应数据是多少 (502、500 什么的,推测是什么 bug)

四、如何抓取手机 APP 的数据包(https://www.cnblogs.com/miantest/p/7290176.html),我用自己的 Apple 手机,没有成功,我怀疑是因为 macOS 安装 Fiddler 的问题,因为我设置 Fiddler 的 option ,设置以后要重启,但是没有重启后我的设置数据就还原了。

软件测试_Fiddler抓包工具的更多相关文章

  1. 软件测试_Fiddler抓包工具一

    多数资料摘抄至 https://www.cnblogs.com/miantest/p/7289694.html 一.在 macOS 下如何安装 (https://www.telerik.com/fid ...

  2. 软件测试必须掌握的抓包工具Wireshark,你会了么?

    作为软件测试工程师,大家在工作中肯定经常会用到各种抓包工具来辅助测试,比如浏览器自带的抓包工具-F12,方便又快捷:比如时下特别流行的Fiddler工具,使用各种web和APP测试的各种场景的抓包分析 ...

  3. 抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程

    转自:http://www.51testing.com/html/80/n-3726980.html   抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程 发表于:2018-6-06 11: ...

  4. Jmeter实现登录bugfree、新建bug、解决bug脚本(抓包工具实现)

    环境 Chrome jmeter3.1 fiddler4 win7 32位 Linux CentOs6.4 bugfree3.0.1 链接:http://pan.baidu.com/s/1gfHpbp ...

  5. 抓包工具Wireshark过滤器

    抓包工具WireShark分为两种过滤器: 捕捉过滤器(CaptureFilters) 显示过滤器(DisplayFilters) 捕捉过虑器语法: Protocol  Direction  Host ...

  6. 跨平台网络抓包工具-Microsoft Message Analyzer

    Microsoft Message Analyzer (MMA 2013)是微软最受欢迎的Netmon的最新版本. 在Netmon网络跟踪和排除故障功能的基础上提供了更强大的跨平台网络分析追踪能力.园 ...

  7. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  8. 网络抓包工具-Wireshark学习资料

    wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 ...

  9. 【抓包工具】wireshark

    wireshark下载地址:http://download.csdn.net/detail/victoria_vicky/8819777 一.wireshark优劣势 wireshark劣势:只能查看 ...

  10. Fiddler 抓包工具总结

    阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截制 ...

随机推荐

  1. [转]By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find...

    在编译安装的时候出现如下问题,是Eigen3的Cmake依赖问题, 已经安装eigen3,但在项目的find_package(Eigen3 QUERIED)中,无法找到FindEigen3.Cmake ...

  2. CDS标准视图:维护计划员组 I_MAINTENANCEPLANNERGROUP

    视图名称:维护计划员组 I_MAINTENANCEPLANNERGROUP 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Maintenance Planne ...

  3. DICOM-SCP,可以直接使用的SCP(.net framework 4.6.1以上)控制台接收端

    此程序只能运行在.net framework 4.6.1版本上的环境,如果要运行在低版本环境,请看上一篇文档 using System; using System.IO; using System.T ...

  4. MQ的定时任务改装,实现自定义定时:MQ+redis

    package com.*.server.live.listener; import com.*.common.core.entity.constant.LiveConstant; import co ...

  5. 创建react脚手架(项目)

    现在安装 react 脚手架的有三种, react-boilerplate react-redux-starter-kit create-react-app(国内主要运用这一种) 1==>npm ...

  6. 玩转云端 | AccessOne实用窍门之三步搞定门户网站防护与加速

    随着互联网的飞速发展,网站建设已成为企事业单位推广.提供服务的重要途径之一.在数字技术快速迭代的当下,如何在保障网站安全的前提下提供高效服务,是企事业单位需要着重考虑的内容. 网站安全防护是网站建设后 ...

  7. Windows&Mac解决端口占用问题

    Windows解决端口占用问题 1.打开命令窗口(以管理员身份运行) 以管理员方式打开cmd 2.查找所有运行的端口 我这里运行了一个项目127.0.0.1:5000,使用的是5000端口,以此来做示 ...

  8. 爬虫无限Debugger解决方案

    爬虫无限Debugger解决方案 在应对网站中的debugger语句以防止爬虫被调试时,一些网站会在代码中插入这些断点以干扰调试行为. 一种极端但直接的方法是通过禁用浏览器的断点激活功能来绕过所有de ...

  9. I2C死锁产生机理与解决方法

    在I2C实际使用过程中,最容易出现的一个问题就是死锁 ,其主要表现为:SCL持续为高,SDA持续为低. 产生机理 I2C死锁产生的机理是:当Slave输出应答信号或者输出数据0时,Master发生异常 ...

  10. Q:Tomcat使用的jdk版本而不依赖环境变量

    1)在tomcat中显式配置-JVM启动使用内存大小 解决:vim打开tomcat目录下的bin/catalina.sh文件,在文件最上部配置JAVA_OPTS属性. windows下在catalin ...