当前位置:首页 > php > 正文内容

Fiddler抓包设置及常见问题

phpmianshi2个月前 (11-27)php54

Fiddler简介

官网:https://www.telerik.com/fiddler

Fiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试,


Fiddler抓取HTTPS请求配置

由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置。配置方式:

Tools--->Options--->HTTPS,勾选CaptureHTTPS CONNECTs、Decrypt HTTPS traffic 、ignore server certificate errors(unsafe),点击OK,会弹出证书直接确认即可。


此时,在电脑chrome浏览器上就可以访问https的请求了,且fiddler会话列表上就可以显示出https请求。


Fiddler抓取APP请求配置

在配置移动端证书之前检查下如下配置,Tools---->Connections---->勾选Allow remote computers to connect:

1. 保持手机和电脑处于同一网络中

2. 在手机上设置代理:设置—>无线网络,设置代理服务器ip和端口号

3. 然后手机safari浏览器输入地址:电脑ip:8888如:http://192.168.1.42:8888会出现如下页面


图片.png


点击“FiddlerRoot certificate”进行证书安装,安装完成后,如下说明安装成功


此时,证书还不算完成安装完,假如手机是ios10.0以上系统,需要在手机系统设置---关于手机----证书信任设置,在此页面把证书开启即可


设置断点,篡改和伪造数据


前面讲过fiddler作为代理服务器时的请求流程图,请求时,可被篡改的两个点:Before Requests、After Responses。 


修改Requests方法:Rules---->Automatic Breakpoints---->Before Requests

将右侧requests  body里面的字段message内容前新增内容:“篡改requests数据成功!”,然后点击Run to Completion,先关闭掉拦截Rules---->Automatic Breakpoints---->Disabled,其他请求都放过,点击工具栏中的“Go”


还有一种方式在命令行中中断某一个域名的方式,如中断www.87testing.com,在命令行输入命令:bpu www.87testing.com,这样就可以拦截www.87testing.com的请求了,取消拦截输入命令:bpu

修改Responses方法:Rules---->Automatic Breakpoints---->After Responses,方法跟修改Requests类似,无非修改的内容变成了Response。


HTTP请求统计视图

页面请求时间的统计,比较详细,如果要看整个页面从请求,到最后一个请求结束的整体时间,也可以在会话列表中,ctrl+点击需要统计的请求,右边Statistics可以看到总体明细。


简单并发测试

在测试中,这样的场景也非常多,比如被测平台可以有多种货币,有可能从一种货币可以直接兑换成另一种平台货币,在兑换的时候,要多关注下两点安全:数据篡改及并发情况,数据篡改要测试扣减A货币时,篡改金额为负值或金额变少,那么兑换到B货币的数据校验,这个有点类似支付拿少的钱买多的东西,这里就不过多描述了。另外,并发情况,再比如经常会有一些活动相关的测试,假如抽奖活动,一般都有限制一个人一天只能抽一次,那么抽奖的时候同一个用户并发,会不会领取多次奖励。当然最好还是要有正规的压测,或者在测试中可以借助fiddler做一个简单的并发测试,都是很有必要的。

一个人一天只能有一次抽奖机会,那么在点击抽奖按钮发出请求之前,要设置Before Requests Breakpoints,点击抽奖后在会话列表中会看到一个被断点的请求,此时鼠标选中此请求,按shift+u,会弹出并发次数的设置,如下,设置并发次数5次(下面演示截图是发布帖子并发时的截图,可参考)


此时,点击工具栏“GO”,六个请求同时发到对应的服务端,即可形成6个并发请求


慢网络测试(限制网速)

 

1、Fiddler---》Rules---》Customize Rules ,

2、在CustomRules.js里搜索找到:m_SimulateModem,

3、在如下脚本中修改上传及下载延时毫秒数即可:

if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "300"; 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150"; 
        }

修改完成后,重启下fiddler,Rules---->Performance---->Simulate Modem Speeds,选中即可生效。

 

显示出服务器IP方法

Fiddler默认配置中是看不到服务器IP的,接下来简单介绍下在fiddler上也能够看到请求的服务器IP:

1、Fiddler---》Rules---》Customize Rules ,

2、在CustomRules.js里搜索找到:static function Main() ,

3、添加如下一行脚本:

FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP");

完整JS代码如下:

static function Main() {  
var today: Date = new Date();  
FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today;  
// Uncomment to add a "Server" column containing the response "Server" header, if present  
FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP");  
}

添加完成后,重启下fiddler,就可以显示出请求的服务器ip。


命令行QuickExec用法

 常用命令:

help-----打开官方QuickExct命令用法帮助

?87testing------选中带有87testing的请求

请求前断点

bpu https://www.baidu.com

请求后断点

bafter https://www.baidu.com


常见问题

问题一:证书在ios上信任后仍提示不受信任的解决方法


ios 上一般信任 HTTPS 证书即可抓HTTPS的包,但最近发现 ios 系统 13以上出现即使安装并信任了证书,当用 safari 浏览百度时仍出现是否信任该网站的弹窗。经过一番搜索后发现原来 Fiddler 默认的证书生成工具对移动端可能会出现不兼容的情况,建议安装一个插件CertMaker for iOS and Android

iOS devices and Android devices may not work with the default HTTPS interception certificates used by Fiddler. To resolve this incompatibility, you may install a Certificate Generating plugin that generates interception certificates compatible with those platforms.

image

https://www.telerik.com/fiddler/add-ons

插件直接下载地址

安装完后Fiddler原来的证书就会失效掉,重新安装信任即可


问题二:重新安装后可能导致firefox无法上网

解决方法:
fiddler的tools->fiddler options->Export Root Certificate to Desktop 导出到桌面

打开firefox,高级->证书->证书机构->导入刚才的证书即可


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

php中使用swoole加速lumen项目-laravelS实战

背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目https://github.com/hhxsv5/laravel-s下面...

从0到1搭建基于swoole的websocket服务

源码安装wget  https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz tar -xzvf ...

Laravel神奇的服务容器

IoC 容器, laravel 的核心Laravel 的核心就是一个 IoC 容器,根据文档,称其为“服务容器”通过举例来让读者去理解什么是 IoC(控制反转) 和&nb...

PHP中const和static的区别和联系

1.const是类中的常量,类外用define定义常量2.const只可以修饰类的属性,不能修饰类的方法,static可以修饰属性,也可以修饰方法3.const和static都属于类本身,而不属于ne...

php-fpm backlog参数优化

php-fpm backlog参数优化

一、问题分析       1、分析php-fpm.slow.log发现没有执行慢的地方,然后把目光放到了nginx 与php建立连接的阶段上,使用tcpdump...

PHP中如何实现进程间通讯

PHP中如何实现进程间通讯

进程间通讯机制——IPC(Inter-Process-Communication)。为了使得php5可以使用共享内存和信号量,必须在编译php5程序时激活shmop和sysvsem这两个扩展模块。  ...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。