目录
HTTP:Hyper Text Transfer Protocol(超文本传输协议)
URL:Uniform Resource Locator统一资源定位符(接口地址):
fiddler简介:
- fiddler是位于客户端和服务器端的HTTP代理;
- 目前最常用的http抓包工具之一;
- 功能强大,是web调试的利器;
- 监控浏览器所有HTTP/HTTPS流量;
- 查看、分析请求内容细节;
- 伪造客户端请求和服务器响应;
- 测试网站的性能;
- 解密HTTPS的web会话;
- 全局、局部断点功能;
- 第三方插件。
- 使用场景;
- 接口调试、接口测试、线上环境调试、web性能分析;
- 判断前后端bug、开发环境hosts配置、mock、弱网断网测试。
HTTP:Hyper Text Transfer Protocol(超文本传输协议)
- 用于从万维网服务器传输超文本(资源)到本地浏览器的传送协议;
- HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节, 主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容,默认端口是80;
- HTTP是基于请求与响应模式的、无状态的、应用层的协议。
完整的HTTP协议:
包括请求和响应两块内容。
Fiddler会话区:
- #:顺序号,按照抓包的顺序从1递增;
- result:HTTP状态码;
- Protocol:请求使用的协议,如HTTP/HTTPS/FTP等;
- HOST:请求地址的主机名或域名;
- URL:请求资源的位置(路径);
- Body:请求大小;
- Caching:请求的缓存过期时间或者缓存控制值;
- Content-Type:请求响应的类型;
- Process:发送此请求的进程;
- Comments:备注;
- Custom:自定义值。
HTTP请求报文:
HTTP请求报文主要由请求行、请求头部、空一行、请求正文(请求体)(get请求没有请求体)4部分组成。
请求行:请求方法、空格、URL、空格、协议版本、回车符、换行符;
请求头部:头部字符端:值、回车符、换行符;
头部字段名:值、回车符、换行符;
回车符、换行符;
请求数据
请求方法:
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:发送的参数。
请求头:
将客户端的一些信息记录在这里面。
请求头 | 描述 |
Host | 主机ip地址或域名 |
User-Agent | 客户端使用的操作系统和浏览器的名称和版本 |
Accept | 指定客户端接收信息类型,如:image/jpg,text/html,application |
Accept-Charset | 客户端接收的字符集,如gb2312,iso-8859-1 |
Accept-Encoding | 压缩方法 |
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作用一样 |
Connection | 网页打开后,客户端和服务器之间用于传输数据的TCP连接是否关闭,keep-alive表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接 |
HTTP响应报文:
HTTP响应报文主要由状态行、消息报头、空一行、响应正文4部分组成。
状态行:协议版本、空格、状态码、空格、状态码描述、回车符、换行符;
响应头部:头部字段名:值、回车符、换行符
回车符、换行符;
响应正文
状态码:
用以表示网页服务器HTTP响应状态的3位数字代码。
状态码 | 描述 |
1xx | 提示信息,请求被成功接收 |
2XX | 成功,请求被成功处理 200 |
3XX | 重定向相关 304 |
4XX | 客户端错误 404 |
5XX | 服务器端错误 500 |
响应头:
响应头 | 描述 |
Server | HTTP服务器的软件信息 |
Date | 响应报文的具体时间和日期 |
Expires | 浏览器会在指定过期时间内使用本地缓存 |
Set-Cookie | 把cookie发送到客户端 |
Last-Modified | 客户端请求的资源文件在服务器端最后被修改的时间 |
Content-Type | 告知客户端服务器本身响应的类型和字符集,如:Content-Type:text/html;charset=utf-8 |
content-Length | 内容长度 |
Connectiom | 如Keep-Alive,表示保持tcp连接不关闭,不会永久保持连接,服务器可设置 |
Location | 指明重定向的位置,新的URL地址,如304的情况 |
Cache-Control | private的消息不能被共享处理,public的消息可以被共享处理,对于其他用户的请求无效 |
fiddle设置断点:
按住R键,点击请求:
![](https://i-blog.csdnimg.cn/blog_migrate/e51d0d3044dcb29a5763fc2e2e9cb79d.png)
获取响应:
选择监听的程序:
Session List(会话列表):
- Fiddle抓取到的每条http请求(每一条城为一个session);
- 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息。
Statistics(统计):
- 请求总数、请求包大小、响应包大小;
- 请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP、传输时间;
- HTTP状态码统计;
- 返回的各种类型数的大小统计以及饼图展现。
Inspector(监控面板):
- Headers:信息头,若用手机和电脑打开的页面不一致,与此设置有关;
- TextView:以文本形式显示请求或响应的数据;
- SyntaxView:同Textview,但有语法着色;
- WebForm:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的;
- HEX:十六进制形式的数据;
- Auth:显示认证信息,如Authorization;
- Cookies:显示所有cookies;
- Raw:显示Headers和Body数据;
- JSON:请求或响应数据是json格式时,json形式显示请求或响应内容;
- XML:请求或响应数据时xml形式,xml形式显示请求或响应内容。
AutoResponder(自动响应器):
可用于拦截某一请求,进行如下操作:
- 重定向到本地的资源;
- 使用Fiddler的内置响应;
- 自定义响应。
拦截请求后可以手动更改响应:
Composer
- GET请求:
- POST请求:
需要加入:Content-Type:application/x-www-form-urlencoded;
Fiddler(过滤器):
拦截指定主机:
删除数据:
- 方式一:
- 方式二:
- 删除一条数据:
查看数据包内容: ![](https://i-blog.csdnimg.cn/blog_migrate/df1f7f47223a740d4e98c6817b004484.png)
设置指定请求头:
断点:
可以利用请求前断点和响应后断点做极端测试:
- 全局断点:
请求前:
响应后:
- 局部断点:
请求前:
取消断点:
请求后:
取消:
弱网测试:
- 常见问题:
- 上传文件时进度卡住不动;
- 登录不上或者登录后立即掉线;
- 响应过程中页面控件可点击,导致崩溃;
- 搜索不响应,多次点击后结果显示总在刷新被替换
- 模拟网络限速:
Rules----Customize Rules----Ctrl+F调起搜索-----Find what 输入300
Rules---Performance---Simulate Modem Speeds
HTTPS抓包:
配置证书:
iOS APP抓包:
- Fiddler设置:
- 点击Tools->Fiddler Options->Connections;
- 勾选Allow remote computer to connect;
- 重启Fiddler;
- 确保防火墙允许Fiddler进程可以远程连接;
- ios设备连接wifi;
- 确保ios设备可以访问到http://FiddlerMachineIP:8888(ipconfig查看IP),该地址会返回Fiddler Echo Service页面。
- iOS设备设置:
- 点击设置->WiFi->打开连接的WiFi设置;
- 点击配置代理->手动;
- 设置iOS代理服务器地址为Fiddler所在主机的IP地址;
- 设置端口为Fiddler监听的端口;
- 点击存储,保存代理设置;
- 打开一个非HTTPS的网站,此实Fiddler已经可以捕获HTTP请求了。
- 访问HTTPS请求:
- 安装证书:
Android APP抓包:
- 打开设置>WLAN>连接上的WLAN设置;
- 点击代理>手动,设置主机名为Fiddler所在主机的IP,端口为Fiddler监听端口;
- 打开Android设备浏览器,访问IP地址加端口号;
- 点击下载证书;
- 打开设置>安装设置>系统安全>加密与凭据>从存储设备安装;
- 此时可以正常抓取HTTPS包;
- 测试完毕后,关闭代理。
支付漏洞与解决方案:
支付漏洞 | 解决方案 |
在支付过程中直接发送含有需支付金额的数据包 | 让开发不要在数据包中加入价格和数量等敏感值 |
没有对购买数量进行限制 | 严格控制购买数量的大小,不允许数量为负数,控制总支付金额是一个正常的数 |
程序的异常处理 | 指支付的数据包异常的程序的错误处理 |
这种异常可以是数据与KEY不符,支付的金额有错误,购买的数量不正确等 | |
程序的异常处理出现的原因主要是开发人员对出现异常后的处理不当造成的 |