前言

一般在浏览器场景下,我们可以利用Fiddler很好的完成抓包,对HTTP或HTTPS连接可以清晰地看到各种数据包。但是对于一些pc端的客户端,比如各种exe可执行文件,就很有可能无法直接使用fiddler抓包。

本文就来看下fiddler如何抓包windows系统里的pc软件的通讯数据包。

1、Proxifer下载和配置

1.1、下载Proxifer

Proxifer链接:https://www.proxifier.com/download
在这里插入图片描述
下载目录如下 :
在这里插入图片描述
不过官网下载的试用期只用31天:
在这里插入图片描述
如何注册:

  • 注册码:
    • L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition)
    • 5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition) (亲测有效)
    • P427L-9Y552-5433E-8DSR3-58Z68(MAC)
      在这里插入图片描述

1.2、Proxifier配置

默认是关闭HTTP协议的,使用需要配置开启,配置文件->高级->HTTP代理服务器->启用HTTP代理服务器支持:
在这里插入图片描述
启动Http代理服务器设置:
在这里插入图片描述
配置Proxifer代理服务器,配置文件->代理服务器->添加:
在这里插入图片描述
然后添加:
在这里插入图片描述
设置代理规则,配置文件->代理规则:
在这里插入图片描述
在这里插入图片描述
新建代理规则,动作选择Direct:
在这里插入图片描述

2、FIddler下载和配置

2.1、FIddler下载

Fiddler官网下载安装:https://www.telerik.com/download/fiddler
在这里插入图片描述

在这里插入图片描述
关于Fiddler的基本使用,飘易就不再赘述,基本属于即开即用,注意软件的左下角Capturing状态,点击这个小图标可以开启或关闭抓包。

Fiddler抓包的原理,实际上就是相当于给windows设置了一个HTTP/HTTPS代理,类似于在IE浏览器中设置代理,如[Internet 选项] — [连接] — [局域网设置] — [高级]中设置代理 [127.0.0.1:8888],Fiddler在8888端口提供HTTP/HTTPS代理服务。

2.2、FIddler配置

Fiddler->Tools->Options->HTTPS,这里全选上,同时选择…from all processes:
在这里插入图片描述
在这里插入图片描述
Fiddler->Tools->Options->Connections,Fiddler监听端口:8888:
在这里插入图片描述
设置成功后,可以看到Proxifer监控到PC软件的接口:
在这里插入图片描述

在Fiddler也可以:
在这里插入图片描述

3、三、为什么抓不到有些应用程序的HTTP(s)的包?

开启 [All Processes] 抓包后,我们运行第三方程序,会发现有的HTTP/HTTPS包可以抓到,而有的却抓不到,这是怎么回事?那是因为Fiddler的这种设置全局代理的方式,只对以下几种情况有效:

  • IE、Chrome等浏览器。

  • 程序使用Windows提供的WinInet库进行HTTP/HTTPS通信。

  • 程序内嵌WebBrowser,比较常用的是IE控件和CEF。

  • 例如如果应用程序中使用的是libcurl库进行HTTP(s)请求,则fiddler就抓不到包了,因为libcurl没有使用windows的WinInet库,而是自己实现了http(s)协议的封装。

  • 如果有程序源码,可以在源码中设置Libcurl使用fiddler作为本地代理。如果没有,我们也可以实现将软件的代理设置为fiddler的端口。

Fiddler之所以能抓到并解密HTTPS包的内容,是因为Fiddler使用了中间人攻击的手段,该手段要能成功实施,有一个前提条件,就是客户端信任Fiddler提供的根证书,之前我们通过[Actions] — [Trust Root Certificate] 让系统信任Fiddler的根证书后,大部分浏览器以及基于WinInet库进行HTTP通信的程序,都会信任操作系统中我们添加的Fiddler根证书。但如果第三方程序使用其它HTTP库进行通信,比如libcurl,JAVA的URLConnection库,C#的System.Net.Http,Python的requests,这些HTTP库一般自带了一套可信任的SSL根证书,它们不使用操作系统自带的SSL根证书,更不会使用我们向操作系统中添加的Fiddler根证书,于是就验证出错了。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐