[测试开发]--抓包工具(charles&fiddler)

  • 状态码

image-20240717182452045

常见状态码

  • 200 OK //客户端请求成功
  • 400 Bad Request //客户端请求有语法错误, 不能被服务器所理解
  • 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden //服务器收到请求,但是拒绝提供服务
  • 404 Not Found //请求资源不存在,eg: 输入了错误的URL
  • 500 Internal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

1. http协议介绍

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

1.1 HTTP协议的主要特点

1.支持客户/服务器模式
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。 请求方法常用的有GET、HEAD、POST。 每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单, 使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接: 无连接的含义是限制每次连接只处理一个请求。 服务器处理完客户的请求, 并收到客户的应答后, 即断开连接。 采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

1.2 HTTP协议之请求

http请求由三部分组成,分别是:请求行、消息报头、请求正文

请求方法有多种, 各个方法的解释如下:

  • GET请求获取Request-URI所标识的资源

  • POST在Request-URI所标识的资源后附加新的数据

  • HEAD请求获取由Request-URI所标识的资源的响应消息报头

  • PUT请求服务器存储一个资源, 并用Request-URI作为其标识

  • DELETE请求服务器删除Request-URI所标识的资源

  • TRACE请求服务器回送收到的请求信息,主要用于测试或诊断

  • CONNECT保留将来使用

  • OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求

应用举例:

  • GET方法在浏览器的地址栏中输入网址的方式访问网页时, 浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)

  • POST方法要求被请求服务器接受附在请求体的数据, 常用于提交表单。

1.3 HTTP协议之响应

在接收和解释请求消息后,服务器返回一个HTTP响应消息。

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

  • 1xx:指示信息–表示请求已接收,继续处理

  • 2xx:成功–表示请求已被成功接收、理解、接受

  • 3xx:重定向–要完成请求必须进行更进一步的操作

  • 4xx:客户端错误–请求有语法错误或请求无法实现

  • 5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码、状态描述、说明:

  • 200 OK //客户端请求成功

  • 400 Bad Request //客户端请求有语法错误, 不能被服务器所理解

  • 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

  • 403 Forbidden //服务器收到请求,但是拒绝提供服务

  • 404 Not Found //请求资源不存在,eg: 输入了错误的URL

  • 500 Internal Server Error //服务器发生不可预期的错误

  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

2. charles简介

2.1 charles是什么

charles是一款基于http协议的代理服务器,通过称为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。

2.2 charles工作原理

在这里插入图片描述
前置步骤:
1、需要运行charles并配置代理
2、在客户端上面需要配置代理
步骤
1、有客户端发送请求
2、charles接受再发送给服务器
3、服务器返回请求结果给charles
4、由charles转发给客户端

2.3 charles能做什么

  • 支持http及https代理
  • 支持流量控制(模拟弱网测试环境)
  • 支持接口并发请求
  • 支持重发网络请求
  • 支持断点调试功能

2.4 charles优点

对比fiddler

  • charles能够支持linux、macOS
  • charles支持按域名和按接口查看报文,简介明了
  • charles支持反向代理
  • charles网络限速可选择网络类型
  • charles可以解析AMF协议

2.5 charles组件介绍

在这里插入图片描述

在这里插入图片描述

2.6 charles代理设置

在这里插入图片描述

2.7 charles访问控制

在这里插入图片描述

2.8 windows客户端–代理设置

在这里插入图片描述

2.9 证书安装

在这里插入图片描述

2.10 charles弱网测试

在这里插入图片描述
未开启弱网
在这里插入图片描述
开启弱网
在这里插入图片描述

2.11 charles断点配置

作用:构建异常的测试场景

1. 点击接口链接,选择"Breakpoints"
2. 在浏览器刷新对应接口的页面
3. 此时会自动跳转到charles并显示出接口请求信息
4. 点击“Edit Request”,修改请求的信息,点击“Execute”
5. 点击“Edit Response”
6. 在数据格式栏中选择合适的显示格式,比如“Json”
7. 修改对应的数据,点击“Execute”
8. 回到浏览器查看数据应该为修改之后的Response的信息

3.fiddler

3.1 fiddler介绍

  • fiddler是一个http协议调试代理工具,他能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”fiddler的数据(指cookie、html、js、css等

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

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

    • 监控浏览器所有的http/https流量
    • 查看、分析请求内容细节
    • 伪造客户端请求和服务器响应
    • 测试网站的性能
    • 全局、局部断点功能
    • 第三方插件
  • 使用场景

    • 接口调试
    • 接口测试、线上环境调试、web性能分析
    • 判断前后端bug、开发环境hosts配置、mock、弱网断网测试
#ResultProtocolHostURLBodyCachingContent-TypeProcessCommentsCustom
10200HTTP106.54.9.13/index.php?m=Admin&c=Admin&a=login&t=0.2364512131685396876private; Expires: Thu, 19 Nov 1981 08:52:00 GMTtext/htmlmsedge:18644

3.2 fiddler会话图标

image-20240717155120787

3.3 fiddler模拟返回响应数据

image-20240717150939304

image-20240717151033609

3.4 fiddler模拟弱网环境操作

网络环境指标

4eaa9b899d808733dc61b369fd6bcca

打开模拟现代速度 开关

Rules->Performance->Simulate Modern Speeds

image-20240717152045982

自定义规则

Rules->Customize Rules

image-20240717152727060

image-20240717152840721

未开启弱网

image-20240717152420595

开启弱网

image-20240717154106256

3.5 Fiddler抓包解析

1.Session List

image-20240717202133035

  • # :HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。

  • Result : HTTP响应的状态

  • Protocol:请求使用的协议(如HTTP/HTTPS)

  • HOST:请求地址的域名 URL:请求的服务器路径和文件名,也包含GET参数

  • URL:(Uniform Resource Locator)统一资源定位符,请求的服务器路径和资源路径,也包括get参数

  • Body:请求的大小,以byte为单位

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

  • Content-Type:请求响应的类型

  • Process:发出此请求的Windows进程及进程ID

  • Comments :用户通过脚本或者菜单给此session增加的备注

  • custom:用户可以通过脚本设置的自定义值

2. 工具栏

image-20240717192434450

  • WinConfig:

  • comment:添加评论备注

  • Replay:重放(重复串行请求接口)

    • r 重放一次
    • shitf+r 多次重放
  • X:remove

    • shift+delete(删除未选中会话)
    • delete(删除选中会话)
    • ctrl+x (删除所有会话)
    • shitf+F5(去缓存刷新)
  • go:

image-20240717193742428

image-20240717193819390

点击go

image-20240717193941635

  • stream:流模式(一般都用缓冲模式)
  • Decode:解码
  • AnyProcess:将靶心拖到你需要监听的程序

image-20240717200338095

3.Quick Exec

image-20240717203258741

  • bpu login

image-20240717203527141

image-20240717203642842

再次输入bpu取消

  • =status

  • =method

image-20240717204114081

image-20240717204514255

  • Capturing:是否使用fiddler作为代理服务器

  • 空格

    • 点一下,打一个请求前断点
    image-20240717205006536
    • 点两下,打一个响应后断点
    image-20240717205119950
  • help : 打开官方的使用页面介绍, 所有的命令都会列出来

  • select : 选择会话的命令, 选择所有相应类型select image、select css、select html

  • >size : 选择请求响应大小小于size字节的会话

  • quit:退出fiddler

  • Bpafter,Bps, bpv, bpm, bpu这几个命令主要用于批量设置断点

    • Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应

    • Bps xxx:中断 HTTP 响应状态为指定字符的全部 session 响应。

    • Bpv xxx:中断指定请求方式的全部 session 响应

    • Bpm xxx:中断指定请求方式的全部 session 响应,等同于bpv xxx

    • Bpu xxx:与bpafter类似。

4. 状态栏

image-20240718084500834

  • Statistics统计页签

通过该页签, 用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求, 可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多, 从而对页面的访问进行访问速度优化

  • inspectors检查页签

它提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,它分为上下两部分:上部分为HTTP Request(请求)展示,下部分为HTTPResponse(响应)展示

  • AutoResponse自动响应页签

Fiddler最实用的功能, 它可以抓取在线页面保存到本地进行调试, 大大减少了在线调试的困难, 可以让我们修改服务器端返回的数据, 例如让返回都是HTTP404或者读取本地文件作为返回内容。

image-20240717150939304

image-20240717151033609

  • composer构建页签

支持手动构建和发送HTTP, HTTPS和FTP请求, 我们还可以从web session列表中拖曳session, 把它放到composer选项卡中, 当我们点击Execute按钮, 把请求发送到服务器端。操作如下图所示:

image-20240718084257242

  • 这样设置发送的请求,就不是浏览器发出的了,而是fiddler发出的,查看inspectors里面的信息便可看出
image-20240718084323358

log日志页签: 打印日志

Filters过滤页签

过滤器可以对左侧的数据流列表进行过滤, 我们可以标记、 修改或隐藏某些特征的数据流。

image-20240718085812580

①选择Filters页签,勾选use Filters勾选 Request Headers 中的 Hide if url contains 过滤项

②在里面输入:REGEX:(?insx)/[^?/].(css|ico|jpg|png|gif|bmp|wav)(?.)?$

REGEX: 表示启用正则表达式(?insx) 设置正则解释的规则,忽略大小写等。

此表达式表示过滤掉 url 中包括 css、ico、jpg 等后缀的请求

③勾选 Request Headers中的show only if URL contains,在里面输入

REGEX:(?insx)..?baidu.com/home. 只显示: baidu.com/Home

Fiddler过滤指定域名

第二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上www.baidu.com

“No Host Filter”不设置hosts过滤

“Hide The Following Hosts”隐藏过滤到的域名

“Show Only The Following Hosts”只显示过滤到的域名

“Flag The Following Hosts”标记过滤到的域名

  • Timeline时间轴页签

时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。 每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴, 用图表的形式展现出来, 就形成了瀑布图。 在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间

3.6 fiddler断点

请求前断点&请求后断点

image-20240717205006536 image-20240717205119950
  • 全局断点

1、Rules -> Automatic Breakpoints

image-20240718090241560

2、点击空白格

image-20240718090321155
  • 局部断点

    Bpafter,Bps, bpv, bpm, bpu这几个命令主要用于批量设置局部断点

    • Bpafter xxx: 对 URL 包含指定字符的 session 响应设置响应后断点

      • 模拟网络中断
    • Bps xxx:中断 HTTP 响应状态为指定字符的全部 session 响应。

    • Bpv xxx:中断指定请求方式的全部 session 响应

    • Bpm xxx:中断指定请求方式的全部 session 响应,等同于bpv xxx

    • Bpu xxx:对 URL 包含指定字符的 session 响应设置请求前断点

      • 模拟极端情况,测试前端显示

示例:

在quick exec输入 bpu login – 对包含login的请求设置请求前断点

image-20240717203642842

再次输入bpu取消局部断点

3.7 IOS抓包

  1. 点击 Tools -> Options -> Connections
  2. 勾选“Allow remote computers to connect” 后面的复选框, 点击“OK” 按钮,然后重启fiddler
  3. 确保防火墙允许Fiddler可以远程连接
  4. ios设备与pc连接到同一个局域网
  5. 确保ios设备可以访问到http://FiddlerMachineIP:8888,该地址会返回Fiddler Echo Service页面(FiddlerMachineIP:pc IP地址 )
  6. 点开wifi设置 ->配置代理 ->手动 ->设置ios代理服务器地址为Fidderler所在主机的IP地址,设置端口为Fiddler监听的端口 -> 点击存储 保存代理设置
  7. 此时就可以捕获http请求了
  1. 在ios设备上打开浏览器,访问http://ipv4:8080/
  2. 点击Fiddler Echo Service页面底部FiddlerRoot certificate下载证书
  3. 打开FiddlerRoot.cer文件并安装
  4. 安装成功后,在通用 - > 关于本机 -> 证书信任设置中,信任刚刚安装的证书
  5. 此时就可以捕获https请求了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr Maria

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值