Fiddler:手机抓包、排坑、异常情况、展示服务器ip

一、fiddler安装

  1. 官网下载地址:https://www.telerik.com/download/fiddler

二、fiddler设置

  1. Tools->Options->HTTPS.默认是只抓取http,这里需要勾选https
    Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第1张图片
  2. 设置connection,这里的端口号默认为8888,可修改(这里端口号在后边手机设置用到,若电脑上有其它应用使用该端口,最好区分开,可能会有影响);勾选Capture FTP requests和Allow remote computers to connect,抓取ftp请求和允许手机上抓取到信息发送到fiddler。
    Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第2张图片
    排坑:保存后需重启fiddler生效。

三、手机设置、证书安装

  1. 使手机和电脑在同一局域网内
  2. 查看电脑ip地址:打开cmd,输入ipconfig回车找到电脑ipFiddler:手机抓包、排坑、异常情况、展示服务器ip_第3张图片
  3. 手机打开wlan,在连接的wifi上找到手动代理,输入电脑ip和前面fiddler配置的端口号。
    Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第4张图片
  4. 手机浏览器进入:http://10.10.20.160:8888,下载fiddler证书安装。(此处若出现错误见底部解决方式)
    Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第5张图片
    Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第6张图片
  5. 手机安装完证书后,操作手机,电脑上fiddler就能看到抓取的信息啦!
    Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第7张图片
    排坑:下载证书时可能会出现此错误 No root certificate was found. Have you enabled HTTPS traffic decryption in Fiddler yet?
    解决方法:cmd进入到Fiddler的安装目录中,运行下面这一段话
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012 

如下图,提示成功后即可重新进入下载安装证书!
Fiddler:手机抓包、排坑、异常情况、展示服务器ip_第8张图片

四、异常情况分析

fiddler抓不到的情况:
fiddler并不是支持全部协议,目前已知的有http2、tcp、udp、websocket等,如果应用走了以上协议,那么fiddler是抓不到的;http2是因为fiddler是基于.net framework实现的,因为.net framework不支持http2,所以fiddler无法抓取http2。
证书写死在app中,fiddler不能抓取:fiddler抓包的原理是中间人gong’j攻击,也就是说,两头瞒,欺骗客户端和服务端,如果https证书写死在App里,也就是说,App不信任fiddler颁发给他的证书,App只信任自己的证书,fiddler没法瞒客户端了,因此fiddler也就抓取不到包了(如果自己开发的App,开发调试方便起见,可以使用类似wireshark的工具导入服务器证书,抓包解密)
排查过程:
确认能否抓到手机浏览器的百度首页:因为百度是https加密的,所以如果配置正确肯定是可以抓取的。
重新安装证书:如果抓不到,可以确定是配置有问题。核实fiddler使用certmarker插件并且在手机上也安装了;如果已安装,则重新安装。如果还不工作,那么,重新生成证书,电脑和手机都要重新安装,然后重启fiddler。
手机设置代理后,无法访问网络,如断网般…
(1)打开注册表,在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2下创建一个DWORD(32位),值设置为80(十进制)
(2)对FiddlerScript rule,点击Rules—Customize Rules,用ctr+f 查找OnBeforeRequest方法,在此方法下ti添加一行代码:此处的“webserver”:端口为上面设置的自定义端口号。
if (oSession.host.toLowerCase() == “webserver:8888”){ oSession.host = “webserver:80”;}
1

五、Fiddler展示服务器IP

Fiddler默认配置中看不到服务器IP的,如何修改如下:
1、Fiddler—Rules—Customize Rules(和上面调试所展示出的文件一致)
2、在此Js文件中,搜索static function Main()
3、添加一行脚本

FiddlerObject.UI.lvSessions.AddBoundColumn(“Server IP”, 120, “X-HostIP”);
1
添加后的js文件如下:

重启Fiddler后,就可以显示出请求的服务器IP,位置展示在最后。

————————————————
参考文献链接:
https://blog.csdn.net/wangzhimin0928/article/details/105350404/
https://blog.csdn.net/qq_34659777/article/details/82702406

你可能感兴趣的:(Fiddler:手机抓包、排坑、异常情况、展示服务器ip)