Fiddler 简介

Fiddler 是位于客户端和服务器端的 HTTP 代理

目前最常用的 http 抓包工具之一

功能非常强大,是 Web 调试的利器

  • 监控浏览器所有的 HTTP/HTTPS 流量
  • 查看、分析请求内容细节
  • 伪造客户端请求和服务器响应
  • 测试网站的性能解密 HTTPS 的 Web 会话
  • 全局、局部断点功能
  • 第三方插件

场景使用场景

  • 接口调试、接口测试、线上环境调试、Web 性能分析
  • 判断前后端 bug、开发环境 hosts 配置、mock、弱网断网测试

Fiddler 抓包工具 - 全网最全最细教程,没有之一_服务器

B/S 架构

编写程序部署到 Web 服务器

Web 服务器运行在服务器上,绑定 ip 地址并监听某端口,接收和处理 http 请求

客户端通过 http 协议获取服务器上的网页、文档等

Fiddler 抓包工具 - 全网最全最细教程,没有之一_fiddler_02

工作原理

Fiddler 抓包工具 - 全网最全最细教程,没有之一_fiddler_03

HTTP

Hyper Text Transfer Protocol(超文本传输协议)

用于从万维网服务器传输超文本到本地浏览器的传送协议

HTTP 协议是基于 TCP 的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输 HTML 页面的内容。默认端口是 80

http 是基于请求与响应模式的、无状态的、应用层的协议

Fiddler 抓包工具 - 全网最全最细教程,没有之一_服务器_04

完整的 HTTP 协议

完整的 http 协议包含请求和响应两块内容

Fiddler 抓包工具 - 全网最全最细教程,没有之一_软件测试_05

HTTP 请求报文

HTTP 请求报文主要由请求行、请求头部、空一行、请求正文(请求体)4 部分组成

Fiddler 抓包工具 - 全网最全最细教程,没有之一_服务器_06

如下是 fiddler 某个会话的请求报文

Fiddler 抓包工具 - 全网最全最细教程,没有之一_软件测试_07

请求方法( Request Method)

请求方法

备注

GET

请求资源

POST

提交资源

Head

获取响应头

PUT

替换资源

DELETE

删除资源

OPTIONS

允许客户端查看服务器的性能

TRACE

回显服务器收到的请求,用于测试或诊断

URL

Uniform Resource Locator:统一资源定位符,用于描述网上的资源

格式:schema://host[:port#]/path/.../[?query-string]

scheme:协议,如 http,https,ftp 等

host:域名或者 IP 地址

port:端口

path:资源路径

query-string:发送的参数

如:https://www.baidu.com/s?wd=柠檬班

请求头(Request Header)

请求头

描述

Host

主机 ip 地址或域名

User-Agent

客户端相关信息,如果操作系统、浏览器等信息

Accept

指定客户端接收信息类型,如:image/jpg,text/html,application/json

Accept-Charset

客户端接受的字符集,如 gb2312、iso-8859-1

Accept-Encoding

可接受的内容编码,如 gzip

Accept-Language

接受的语言,如 Accept-Language:zh-cn

Authorization

客户端提供给服务端,进行权限认证的信息

Cookie

携带的 cookie 信息

Referer

当前文档的 URL,即从哪个链接过来的

Content-Type

请求体内容类型,如 Content-Type:
application/x-www-form-urlencoded

Content-Length

数据长度

Cache-Control

缓存机制,如 Cache-Control:no-cache

Pragma

防止页面被缓存,和 Cache-Control:no-cache 作用一样

HTTP 响应报文

HTTP 响应报文主要由状态行、消息报头、空一行、响应正文 4 部分组成

Fiddler 抓包工具 - 全网最全最细教程,没有之一_软件测试_08

如下是 fiddler 某个会话的响应报文

Fiddler 抓包工具 - 全网最全最细教程,没有之一_软件测试_09

状态码(Status Code)

用以表示网页服务器 HTTP 响应状态的 3 位数字代码

状态码

描述

1XX

提示信息,请求被成功接收

2XX

成功,请求被成功处理 200

3XX

重定向相关 304

4XX

客户端错误 404

5XX

服务器端错误 500

响应头(Response Header)

响应头

描述

Server

HTTP 服务器的软件信息

Date

响应报文的时间

Expires

指定缓存过期时间

Set-Cookie

设置 Cookie

Last-Modified

资源最后修改时间

Content-Type

响应的类型和字符集,如:Content-Type: text/html; charset=utf-8

Content-Length

内容长度

Connection

如 Keep-Alive,表示保持 tcp 连接不关闭,不会永久保持连接,服务器可设置

Location

指明重定向的位置,新的 URL 地址,如 304 的情况

GET 请求

格式 http://host:port/path?xx=aa&yy=bb

如:

http://120.78.128.25:8080/futureloan/mvc/api/member/register?mobilephone=13555555528&pwd=123456

说明:

  • http/https:协议类型
  • host:服务器主机 ip 地址或域名
  • port:端口号,如果是 80 可以省略,其它端口必须指明
  • path:访问资源的路径
  • ?:分隔符,用于区别 path 和参数
  • xx=aa、yy=bb:请求参数列表
  • &:多个参数的连接符号

总结

机会只垂青有准备的人,这是一个靠本事的社会。有时候,你之所以发展得不好,不是因为没有机遇,而是因为你没有准备好,导致机遇与你擦肩而过。如果你想要学习,什么时候开始都不晚,而不是瞻前顾后,你只要用尽全力,剩下的交给时间!