记一次使用Fiddler抓包工具抓取Https协议数据的踩坑过程
记一次使用Fiddler抓包工具抓取Https协议数据的踩坑过程
前言
记得从刚入门前端第一天开始,当时的师傅就跟我介绍了一个可以抓取一些必须要在微信浏览器打开的链接的工具Fiddler,主要用来抓取这些网页的源码,确实是非常好用,当然后来知道有了微信开发者工具,可以直接在里面调试之后,就感觉Fiddler的作用好像也没有那么大了。直到今天,突然看到一个有意思的微信H5小游戏。想看下源码了解下具体是怎么实现的。这样我就又重新用起了Fiddler工具,可是一用才发现,除了图片,竟然什么东西都抓不到。后来试了几次之后才发现,这个小游戏比较刁,不仅做了微信的登录授权,而且做了手机端访问的判断,更甚至竟然用的还是https协议的网页。于是我试着在网上找了解决方案才发现原来Fiddler工具默认是不能抓取https协议的,但是通过设置以及在对应设备上安装证书就可以实现抓取https。
踩坑开始
我照着网上的教程,这里发个教程贴。这个教程文章写的很详细,基本上将怎么安装Fiddler,怎么配置代理,怎么手机上安装证书,都写的很清楚。然而尴尬的是,我照着这篇文章去做,最后试着在手机上打开我想要抓取的那个H5小游戏的链接,发现依旧什么都抓不到。于是,我又在网上搜。发现有篇文章介绍了Fiddler有个log工具,会将所有的抓取记录,包括保错信息都会在log里面打印出来。
通过查看log记录,我终于找到我每次打开Https协议的链接时,所报的错误信息。大概如下。
!ERROR: Failed to generate Certificate using CertEnroll. System.Reflection.TargetInvocationException 调用的目标发生了异常。
紧接着,我照着这个错误信息,又在网上找了解决方案,终于找到一个链接.http://fiddler2.com/r/?fiddle...。
这个链接,应该是用于重新制造安装Fiddler证书的作用,打开这个链接之后,会在你的电脑上面重新安装fiddler证书,然后再照着我上面所发的教程链接里面的步骤,重新设置,在手机上安装证书。最后重启fiddler。打开https的链接,终于可以抓取到了。
注意事项
除了我上面介绍到的错误信息。还有其他的问题我也介绍下。
1、最好在最新版的fiddler,不然可能会出问题。
2、ios手机上面打开安装证书的链接后,所安装的证书,在通用里面的描述文件中可以找到。注意下图里面的以验证一定要是打钩的状态,不然好像不能用。
3、ios上安装好了证书,需要给予信任,这样手机上打开的https的链接才可以被fiddler抓取到,ios手机通用里面的关于本机里面的证书信任设置,可以进行信任。