Fiddler死活抓不了HTTPS包解决方法

Fiddler如何抓取HTTPS协议的网页
    Fiddler默认只能抓取HTTP协议的网页,不能抓取HTTPS协议的网页,而我们很多时候,都需要抓HTTPS协议的网页,比如抓淘宝数据等。今天,韦玮老师会为大家讲解如何使用Fiddler抓取HTTPS协议的网页。
    打开Fiddler,点击“Tools--Fiddler Options--HTTPS”,把下方的全勾上,如下图所示:
    
    然后,点击Action,选择将CA证书导入到桌面,即第二项,导出后,点击上图的ok保存配置。
    
    然后在桌面上就有了导出的证书,如下所示:
    
    随后,我们可以在浏览器中导入该证书。我们打开火狐浏览器,打开“选项--高级--证书--导入”,选择桌面上的证书,导入即可。随后,Fiddler就可以抓HTTPS协议的网页了。如下图所示。
    
    正常情况下就ok了
    打开网页:http://localhost:8888/ 点击
    You can download the FiddlerRoot certificate
    安装证书完成
    也有可能会出现creation of the root certificate was not located等错误;
    需要
    在命令行工具中
    cd "d:\Program Files\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
    如果成功的话
    打开网页:http://localhost:8888/ 点击
    You can download the FiddlerRoot certificate
    抓取https数据失败,全部显示“Tunnel to......443”
    按照网络上的教程,设置fiddler开启解密https的选项,同时fiddler的证书也是安装到系统中,但是抓取https的时候总是出现“Tunnel to……443”,如图所示:
    
    解决办法:
    如果你遇到上面的问题,就可能是证书的问题(我的本地证书是用系统生成证书的一个软件生成的个人证书,所以出现了问题),操作步骤如下:
    (1)将之前的证书删除
    打开系统证书管理器(运行=》certmgr.msc=》回车),然后出现管理器
    
    操作-查找证书,然后输入fiddler查找所有相关证书,
    如下所示:
    
    将你之前生成的证书删除即可。
    (2)用一个叫”FiddlerCertMaker.exe“的工具重新打了一个证书。你可以点击下载。(下载成功之后,直接双击运行即可)
    http://pan.baidu.com/s/1o8uaVFG
    (3)重新打开fiddler,使用chrome/ie输入”https://www.baidu.com/“,这回可以捕获https的消息并解密成功了。
    (4)使用iOS远程连接fiddler的代理地址,在线安装证书成功后,使用原生浏览器访问“https://www.baidu.com/”,fiddler成功抓取到https的数据。
    其他注意事项说明
    (1)chrome和ie使用的是系统代理,而火狐使用的是独立的一套代理系统,所以不管fiddler的开关”capturing“是否打开,都捕获不了火狐浏览器的请求。需要我们将火狐浏览器的代理设置设置为系统代理或者配置为”手工配置代理“
    (2)火狐浏览器使用的证书管理也是独立的一套系统,而chrome和ie使用的是系统的证书代理,所以我们如果想要使用fiddler抓取火狐浏览器的https的数据包,则需要将fiddler的根证书导出到桌面,然后再导入到firefox的证书中。而我们使用chrome和ie的时候是不需要将证书导入导出的,因为fiddler的证书就安装在系统的证书管理中。
    (3)如果在使用fiddler的过程中证书出现问题,可以尝试使用”FiddlerCertMaker.exe“重新打一下证书
    (4)如果在使用安卓或者ios等出现https抓取不到数据的问题,如果在本机上安装”FiddlerCertMaker.exe”都不行,就尝试一下fiddler的另外一个插件“CertMaker for iOS and Android ”这个插件可以在官方网站上进行下载。具体我也没有使用过。先记录下思路。
    有些同学可能已经按照我们正常的流程在feiddler中设置好了https抓包,但死活抓不了。未设置的同学先按上面的文章进行设置,设置好后无法抓包请见如下解决步骤。
    (1)首先,看看火狐浏览器的配置,是不是下方“为所有协议使用相同代理”的地方没有勾选上,如果是,请勾选上。
    
    有一部分同学做到这一步应该能解决无法抓https的问题。如果还不行,请继续往下看。
    一般这个时候,还不行,应该就是你的证书问题了,有些同学可能会问,我是按照正常流程导出并安装的证书,也会有问题?
    对的,就是这么奇怪。
    (2)接下来,请在下面这个地方输入certmgr.msc并回车,打开证书管理。
    
    打开后如下所示:
    
    请点击操作–查找证书,如下所示:
    
    然后输入fiddler查找所有相关证书,如下所示:
    
    可以看到,我们找到一个,您可能会找到多个,不要紧,有多少个删多少个,分别右键–删除这些证书,如下所示:
    
    全删之后,这一步完成。
    (3)再接下来,打开火狐浏览器,进入选项-高级-证书-查看证书,然后找以DO_NOT开头的关于Fiddler的证书,以字母排序的,所以你可以很快找到。如下所示,我们找到两个,不用多说,右键,然后全部依次删除。你可能找到一个或多个,反正找到多少个删多少个就行,另外, 特别注意,请如图中【个人、服务器、证书机构、其他】等标签依次查找,以免遗漏,切记切记!
    
    这些全删之后,这一步完成,现在证书已经全部清理了,进入下一步。
    (4)下载 FiddlerCertMaker.exe,可以去官网找,如不想麻烦,直接下载我提供的,链接如下:
    链接: https://pan.baidu.com/s/1bQBhxG 密码: cu85
    下载了这个之后,直接打开,不管出现什么错误,直接忽略,直到出现如下界面为止:
    
    然后点击确定,关掉它。
    (5)有了证书之后,请重启Fiddler(关掉再开),重启之后,访问https的网站,比如淘宝首页,有可能成功了,但你也有可能会发现如下错误:
    “你的连接并不安全” 等类似提示
    见到这里,你应该开心,离成功近了。
    (6)果断的,打开fiddler,“Tools–Fiddler Options–HTTPS”,然后把下图中同样的地方勾上(注意一致),然后点击actions,然后先点击Trust Root…,然后,再点击Export Root…,此时,导出成功的话,在桌面就有你的证书了。 务必注意:这一步成功的话,把第(7)步跳过,不要做了,直接进入第(8)步, 如失败,请继续第(7步)。
    
    (7) 务必注意:上一步成功的话,把这一步跳过,不要做了。 如果,你在导出的时候出现:creation of the root certificate was not located等错误,不要慌。接下来在cmd命令行中进入Fiddler安装目录,比如我的是C盘,所以进入如下图所示Fiddler2目录,然后直接复制下方make那一行代码,然后直接cmd中运行,出现如下所示succeeded提示,出现这一步提示之后,再按步骤(6)的方法导出证书,就能成功了:
    
    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
    (8)好,证书导入到桌面后,请打开火狐浏览器,然后进入选项-高级-证书-查看证书-导入-选择刚导出的桌面的证书-确定。
    (9)随后,为了保险,Fiddler重启,火狐浏览器也重启一下,然后开始抓HTTPS的包,此时你会发现“ 你的连接并不安全” 等类似提示已经消失,并且已经能够抓包了。
    这篇文章已经非常非常详细,如果你怎么样都抓不到HTTPS的包,请细看这篇文章,不要漏掉每一个细节。