本文介绍如何使用Fiddler抓取HTTP和HTTPS协议的包,同时还介绍了如何结合Proxifier工具来处理Filddler无法抓取到包的情况。

一、HTTP基本抓包

Fiddler官网下载安装:https://www.telerik.com/fiddler

对浏览器的抓包,就不再赘述,打开这个软件就一目了然了,本文主要讲对普通Windows桌面应用程序的抓包,点击左下角的两个小图标,让Fiddler进入抓包状态,而且作用于[All Processes]

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

二、HTTPS抓包

针对HTTPS的抓包,需要开启Fiddler的HTTPS抓包功能,否则只能看到HTTP请求的内容,因为HTTPS请求的是密文。
在Fiddler中点击[Tools] — [Options] — [HTTPS]勾选如下设置:

点击[Actions] — [Trust Root Certificate] 让系统信任Fiddler的根证书,这是HTTPS抓包解密的关键,接下来就可以愉快的观看HTTPS请求明文内容了。

三、为什么抓不到有些应用程序的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作为本地代理,如:

curl_easy_setopt(curl, CURLOPT_PROXY, "127.0.0.1:8888");

四、处理Fiddler无法抓到包的情况

4.1 设置代理

上面说到了,Fiddler抓包的原理是在本机的8888端口开启HTTP/HTTPS代理,任何通过Fiddler代理的HTTP/HTTPS通信内容都会被解析,那么只要能给目标程序设置HTTP/HTTPS代理,目标程序的HTTP(s)通讯内容就可以被Fiddler抓到。

仔细查看软件设置,其实有些第三方软件比如 [百度网盘] 本身是可以设置HTTP/HTTPS代理的,只要设置为Fiddler的代理端口即可截获它的HTTP/HTTPS通讯内容。

4.2 结合Proxifier

但是有的第三方软件就是没有代理功能,怎么办?既然应用程序不支持设置代理,我们就借助其它软件给它设置代理,比如:
Proxifier: https://www.proxifier.com

以 [网易有道词典] 为例:

在Proxifier中添加[127.0.0.1:8888] 这个Fiddler提供的HTTPS代理服务器

设置Proxifier规则,让 [网易有道词典] 通过代理访问网络。

有一点设置通常容易被忽略,就是在Proxifier中,设置[Profile] — [Name Resolution] — 勾选 [Resolve hostnames through proxy],让域名解析的工作交给代理服务器,而不是在Proxifier上解析。默认情况下Proxifier自行解析域名,比如www.baidu.com解析为180.97.33.108,然后发请求给Fiddler:

CONNECT 180.97.33.108:443 HTTP/1.1

这样Fiddler并不知道它请求的是哪个域名,于是返回给客户端的伪造证书时,伪造的是为180.97.33.108颁发的证书,有的客户端会做校验,发现这个证书是颁发给180.97.33.108的,而不是颁发给www.baidu.com的,然后报错处理。
修改Proxifier设置后,把域名解析的工作交给代理服务器,Proxifier会直接向Fiddler发送请求:

CONNECT www.baidu.com:443 HTTP/1.1

这样Fiddler就知道客户端请求的是 www.baidu.com,从而返回客户端伪造的www.baidu.com证书,客户端不报错,Fiddler才能顺利抓包解密。

具体设置步骤如下:

4.3 解决Host为“Tunnel to”的问题

按照4.2中介绍的方法,抓取python请求https://www.baidu.com的包,此时在fiddler中会显示“Tunnel to”,无法获取到包的内容,如图:

从python的提示中,可以看到是SSL证书验证错误,所以python requests的请求也失败了。

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根证书,于是就验证出错了。

以Python为例,这一点可以在requests文档中得到证实:
https://2.python-requests.org/en/master/user/advanced/#ca-certificates

Requests bundled a set of root CAs that it trusted, sourced from the Mozilla trust store. The certificates were only updated once for each Requests version.

下面详细给出解决这种问题的2种方法:

  1. 在请求时禁用证书验证。
  2. 在请求时,指定自己生成的证书。

4.3.1 请求时禁用证书验证

以python为例:

import requests
requests.get("https://www.baidu.net", verify = False)

4.3.2 请求时信任自己的证书

访问http://127.0.0.1:8888/,下载Fiddler的根证书,如图:

然后使用第三方工具转换成对应库可以支持的证书类型,这里以python的requests为例,使用openssl工具转换成其支持的.pem格式:

openssl x509 -inform der -in FiddlerRoot.cer -out fiddler.pem
import requests
requests.get("https://www.baidu.net", verify = "./fiddler.pem")

Fiddler抓包指南:结合Proxifier工具相关推荐

  1. Windows抓包指南①:Proxifier+Fiddler对第三方程序强制抓包

    HOW & WHY 关于Fiddler抓包的文章在网上已经一搜一大把了,但大多数是讲对浏览器的抓包,主要用于分析WEB站点内容,而本文侧重于普通Windows桌面应用程序的HTTP/HTTPS ...

  2. 实习周记1(sdk了解、fiddler抓包、反编译工具)

    文章目录 本周知识清单 SDK为游戏提供哪些功能 什么是SDK SDK在游戏中提供的功能 SDK技术特点 简洁易用 稳定 高效 模块化开发 组件化开发 插件化开发 SDK各功能模块如何实现的 制作SD ...

  3. fiddler抓包指南(浏览器、app抓包及证书安装)

    注意:所有抓包过程中使用无痕浏览器 1.fiddler对浏览器抓包 1.1 对浏览器的http的抓包 Capturing开启,进行抓包: Capturing关闭,停止抓包: 如下图: 1.2 对浏览器 ...

  4. Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包

    抓包的重要性 网络抓包,是Android应用逆向分析的重中之重,很多时候我们拿到一个APP,不知道从何入手分析,往往是从抓包开始,先弄清楚他与服务器通信的内容,如果一目了然,我们完全可以照搬,自行写一 ...

  5. Android抓包指南: 使用Fiddler抓HTTP/HTTPS包

    本文由encoderlee发表于CSDN博客:https://blog.csdn.net/CharlesSimonyi/article/details/90493122 抓包的重要性 网络抓包,是An ...

  6. Fiddler抓包工具总结(转)

    序章 Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也蛮费劲,一些蛮实用隐藏的 ...

  7. 【工具篇】抓包中的王牌工具—Fiddler (1-环境搭建)

    导言 在现在高速发展的互联网时代,抓包工具被广泛应用在软件开发的项目中,Fiddler可谓是当下主流的抓包工具之一.测试人员用它来抓包.回放测试记录,构造发包测试用例,开发人员用来定位问题,其强大的功 ...

  8. Charles是Mac的Fiddler抓包工具

    windows下面我们经常使用 Fiddler 抓包工具进行代理等一系列操作.然而,在 Mac 下的 Fiddler 勉强能运行,但是其挫的都不想说它了.今天看到朋友推荐这款 Charles Mac下 ...

  9. Fiddler抓包工具入门:软件测试员必知的抓取https协议的方法

    首先给大家分享一个抓包的小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常": 小A说:"这哪是我的 ...

最新文章

  1. MapReduce框架Mapper和Reducer类源码分析
  2. vue-router的基本使用
  3. nginx 服务器的学习(1)
  4. 使用Docker-数据卷挂载案例1
  5. 求最大素数和最小素数
  6. uva 133解题报告
  7. 四大游戏编程网站,边玩游戏,边学Python
  8. linux phpstudy
  9. 力扣383.赎金信(JavaScript)
  10. java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc
  11. 手动构建Docker镜像
  12. python爬取拉钩网信息
  13. gom及gee小白架设黑屏的原因以及个别装备地图不显示怎么办?
  14. APPLE  电脑型号大全
  15. RCNN SPPNet Fast R-CNN Faster R-CNN Cascade R-CNN
  16. 从平台到中台 | Elasticsearch 在蚂蚁金服的实践经验
  17. Faster R-CNN文章翻译——中英文对照
  18. 【微服务】Spring Cloud 基础
  19. 【机器人栅格地图】基于蚁群优化遗传算法求解机器人栅格地图最短路径规划问题附Matlab源码
  20. 英国4g网络频段_英国需要网络会议

热门文章

  1. 走向凝聚的品牌消费 转自 ID公社
  2. 微信小程序:正则表达式
  3. get connection timeout retry : 1
  4. 工具:Process Explorer:如何使用 Process Explorer
  5. 使用Process Explorer和Dependency Walker定位dll库动态启动失败的问题(常用分析工具)
  6. What is a Lightweight Methodology? 什么是轻量级方法?(英汉对照) (转)
  7. %cd%及%~dp0批处理命令的详解
  8. oracle awr 计算,【Oracle AWR详解分析】
  9. 瞬态电压抑制二极管的选用原则
  10. 新版股票配资系统源码/股票分析系统/融资融券/两融C#