1. fiddler
https://www.yuque.com/haoyi-gjz5j/hnehzl/ci3387
1. 断点调试,截包 改包
使用Fiddler断点调试功能,可以修改头信息,请求/响应数据,模拟请求超时等,进而构造不同的测试场景。
【全局断点,此方法会拦截所有请求】通过在菜单栏中选择Rules规则->Automatic Breakpoints自动断点来设置断点,在菜单栏中设置的断点拦截请求或响应
- Bofore Requests:在浏览器请求发送到服务器端前进行拦截,修改相关数据后,发送给服务器端,服务器端根据数据返回内容。
- After Response:在响应返回浏览器前进行拦截,修改相关数据,浏览器接收到伪造的数据后,呈现相应的效果。
- 如果选择的是Bofore Requests,之后所有的请求都被拦截,选择被拦截的会话,在会话列表右侧,选择Inspectores->WebForms网格视图,在此处可以修改请求参数,Break on Response按钮表示在服务器返回时进行拦截,Run to COmpletion按钮表示继续运行,Choose Responses下拉列表用户自定义返回的内容。
- 【单个断点,此方法只拦截指定请求网址】快捷命令行输入
请求前断点 bpu 地址
响应后断点 bpafter 地址然后Enter
取消就输入bpu或者bpafter
2. 自定义列
显示服务器端主机地址,右键会话列表表头,选择自定义列Costomize columns。
3. 常用命令
Fiddler的QuickExec功能可以通过命令,帮助快速定位会话。打开Fiddler,在session列表下方,黑色的文本框,通过ALT+Q快捷键可以快速激活文本框,以下是常用的命令。
- =ResponseCode:快速选择指定的HTTP状态码。在文本框输入=404,按下Enter键,Fiddler会将会话列表中所有http状态码为404的会话选中。
- =Method:快速选择指定HTTP请求方法。在文本框输入=GET(不区分大小写),所有GET请求会话会被选中。
- @host:快速选择主机中包含指定内容的会话。如在文本框中输入@jd ,nam jd.com,sale.jd.com等也会被选中
- bold:将命令执行后,所有URL包含指定内容的会话加粗显示,在文本框中输入bold static后,新抓取的url中包含static的将会加粗显示。输入命令前的会话即时符合条件,也不会加粗显示
- ?search:搜索符合条件的url,在?后面加搜索条件,即写即搜,命中的会话北京会被置灰,按下Enter键后,所有符合条件的会话被选中。
- 其他常用命令:
- cls或clear:清除所有会话。
- dump:保存所有会话。
- urlreplace A B:将url中的A替换成B
- select *:选中头信息中包含指定内容的会话
- tail *:置顶会话列表的行数
- nuke:清空WinINET缓存和cookie。
- quit:退出Fiddler。
4. 抓取https的包
通过伪造CA证书来欺骗了浏览器和https服务器。大致原理就是在浏览器面前fiddler伪装成为一个https服务器,而在真正的https服务器面前fiddler又伪装成为浏览器,从而实现解密https数据包的目的;
- 抓取web端解密https需要手动开启,步骤如下:
2 . 设置抓取手机端的HTTPS协议包,多设置一个连接后重启
Fiddler端设置完成后,接下来设置手机端。
进入手机正在使用WiFi的详情页面。代理方式选择“手动”,主机名是Fiddler所在机器的IP,端口是上面设置的8888端口。
抓APP上的HTTPS请求
1.如果app都是http请求,是不需要安装证书,能直接抓到的,如果是https请求,这时候手机就需要下载证书了。
2.打开手机浏览器输入:http://10.224.xx.xx:8888,这个中间的host地址就是ipconfig查到的本机地址。
3.出现如下画面,点箭头所指的位置,点击安装就可以了。
5. 模拟弱网测试
每上传1KB数据,延时300ms
每下载1KB数据,延时150ms
计算2G和3G上下行速率
1KB = 8kb
2G网络:
上行:2.7K
下行:9.6K
上行:[1/(2.7/8)]X1000=2962ms
下行:[1/(9.6/8)]X1000=833ms
模拟2G,修改为如下图所示:
3G网络:
电信:上行:1.8M 1.8x1024
下行:3.1M 3.1x1024
上行:{1/[(1.8x1024)/8]}x1000=4.34ms
下行:{1/[(3.1x1024)/8]}x1000=2.52ms
移动:上行:384k
下行:2.8M
上行:[1/(384/8)]x1000=20.8ms
下行:{1/[(2.8x1024)/8]}x1000=2.79ms
联通:上行:5.76M
下行:7.2M
上行:{1/[(5.76x1024)/8]}x1000=1.35ms
下行:{1/[(7.2x1024)/8]}x1000=1ms
相应修改上方步骤二对应的数值,定义好数值去应用就可以模拟2G和3G进行弱网测试了!
6. 设置过滤
Show only if URL contains 和 Hide if URL contains 使用方法类似 功能相反。都是url中包含某些字符的filter,多种情况空格分隔。支持正则表达式和完全匹配,如下是个例子,可以简单理解为隐藏所有js和css请求。
url过滤:REGEX:.(js|css|png|jpg|gif|htmlio|ico|js?.|css?.)$
2. Charles/mitmproxy
mac推荐使用