浅谈Fiddler4 如何进行Idea抓包操作
开篇
开篇第一章总得说点多余的东西,本人入坑的时间也有两年时间了,期间遇到的坑不少,但是总觉得都太浅,不值得拿出来聊一聊。而最近发现身边有不少人开始搞起了创作,于是乎又萌生出了分享些什么的想法。今后我也将平时遇到的大大小小的坑拿出来跟大家聊一聊,小码农看看来或许能得到一些启发,老鸟们看来也能投一乐呵。
楔子
抓包或许是诸多小码农们在某一个时间点必须要做的一件事。像是前后端联调的时候前端需要对发出的请求进行抓包,这时用的最多的是Chrome的F12来查看。服务器之间通信出问题,这时候我们会使用tcpdump抓包然后再使用wireshark进行分析。这两个都不是我们这里要讲的,因为前段时间我遇到的需求是对微信进行抓包,并编写第三方微信客户端。这里我们就需要做两件事,一件是对APP发出的报文进行抓取,另一件就是对IDE(本文使用的是idea,eclipse理论上也是类似的)发出的报文进行抓取。这里我们采用的抓包工具均是Fiddler4
第一步:对APP进行抓包
Fiddler的安装我就不废话了,这里直接开始进行配置。在使用前请一定要先开启抓包模式
由于现在的HTTPS已经成为了服务的标配,所以我们需要在Fiddler中开启HTTPS。
由于IOS和Android对证书有着严格的要求,所以我们并不能使用Fiddler导出的正式,不要急,Fiddler为我们提供了满足要求的证书CertMaker。
https://www.telerik.com/fiddler/add-ons
下载安装后,按照国际惯例重启Fiddler4,并拿出手机保证手机与PC机在同一个网段内。
在手机的WIFI设置当中可以看到当前手机和PC机都处于同一个网段,这时在代理选项中选择手动,并将PC的IP和Fiddler设置的代理监听端口对号入座,并点保存。
打开浏览器,输入PC机的IP和Fiddler监听端口,下载证书到本地
然后在文件浏览器(小米5S不能在浏览器的下载列表中点击,只能在文件浏览器中安装)中找到该证书,点击安装,这时会输入锁屏密码。安装完成后此时就可以进行愉快的玩耍了。
走到这一步,各位看官可能觉得并没有什么新的干货,别急,以下部分虽然配置简单,但是里面会有一个意想不到的坑,并且在这部分所花费的时间也是最多的。
第二步:对Idea进行抓包
为了在PC端可以对本地的HTTPS请求进行抓包,我们这里首先需要信任Fiddler的证书。
然后再发起Idea中发起请求,此时我们是无法看到相应的数据。这时对于小码农而言就需要请出万能的度娘,然后搜索Fiddler和Idea相关的信息,可以看到诸如以下的文章
此时可以看到很关键的一步
这时在我们的代码上添加上以上内容,设置了代理的相关内容后,发现依然无法在Fiddler上看到我们发出的请求。这里就很诡异了,经过一番人生思考后,我们决定验证一下这个博客上的代码(其实Fiddler的官网[http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureJavaApp]也是这么配置的,让我们坚信了这个方法是可行的),将代码原样拷贝过来运行以后发现居然可以抓到包了。经过一番折腾后我们发现了两件事。
- HTTP请求在使用这篇博客中的代码是可以被Fiddler抓到包的,而使用我们自己的代码是不可以的
- HTTPS请求在使用这篇博客中的代码是会报错的
第二件事情从上面的错误日志中可以很清晰的看到是证书的问题。本着先易后难,现在我们先来解决HTTPS的问题。
我们需要在Java代码中配置Fiddler的证书,这个流程其实跟APP的抓包是类似的。先下载证书到桌面。
使用最高管理员打开cmd然后进入安装的jdk下的bin目录
输入以下命令,输入口令,选择是以后,会在jdk的bin目录下面会生成一个FiddlerKeystore文件。
keytool.exe -import -file C:\Users\xxxx\Desktop\FiddlerRoot.cer -keystore FiddlerKeystore -alias Fiddler
一定要记住秘钥口令,还需将FiddlerKeystore文件剪切至合适的位置,以供后面使用。这时在代码里添加上以下配置既可对HTTPS请求进行抓包。
可以看到已经在Fiddler中抓取了HTTPS的包。
这时还剩下一个无法在我们自己的程序中通过以上配置在Fiddler中抓取报文的坑。多次试验后发现是因为我们采用的HTTP客户端的问题。在上面这篇博客中使用的HTTP客户端是JAVA自带的客户端,而我们使用的是Apache提供的第三方客户端,两者在使用代码的策略是上不同的。
这个是博客中使用的
这个是我们使用的
大家来感受一下两者的差别:
JAVA自带的HTTP客户端是默认使用系统代理的,而Apache提供的HTTP客户端默认是不使用系统代理,如果想让其使用系统代理需采用如下配置方式
最后我们优化一下代理信息的配置,在代码里面写死代理信息的方式毕竟不是很优雅。
可以将代理信息放在JVM的参数中,其效果是一样的,但这样就保证了对代码的无侵入。
当坑被填平以后,你会发现整个配置的环节极其简单。刚开始觉得复杂的原因还是对自己使用的第三方库了解的不够深入。
至此整个分析过程已经全部结束。这里再做一下下一期的预告,下期我们来讲讲【如何将Spring boot中的启动配置信息放在统一配置管理系统中】
欢迎关注微信公众号,在这里可以提前看到下一期文章哦~
浅谈Fiddler4 如何进行Idea抓包操作相关推荐
- python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法
浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...
- 浅谈GWAS分析后的富集分析操作(GO/KEGG)
浅谈GWAS分析后的富集分析操作(GO/KEGG) 作者:刘济铭 ######################## 在我们完成全基因组关联分析后,常常筛选得到特定性状的基因集,接下来,通常我们需要开展 ...
- 如何使用Fiddler抓包操作?
目前微信公众号和小程序应用越来越多,那么我们如何对二者进行抓包进而在测试中更加准确的定位问题呢?目前通常有三种解决方案,在这里我会一一道来. 备注:本文的阅读前提是读者能够使用Fiddler进行基础的 ...
- python中判断列表数据类型_浅谈Python数据类型判断及列表脚本操作
数据类型判断 在python(版本3.0以上)使用变量,并进行值比较时.有时候会出现以下错误: TypeError: unorderable types: NoneType() < int() ...
- python列表使用判断_浅谈Python数据类型判断及列表脚本操作
数据类型判断 在python(版本3.0以上)使用变量,并进行值比较时.有时候会出现以下错误: TypeError: unorderable types: NoneType() < int() ...
- 技术文档,完成课程表的抓包操作
希望转载的时候注上本文链接,尊重原文作者.谢谢~http://blog.csdn.net/u010858238/article/details/9029653 说起来很奇怪,为什么超级课程表火了这么久 ...
- android抓包工具——使用fiddler4在安卓手机抓包
Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包 ...
- docker -v 挂载文件_浅谈关于docker中数据卷的操作,附带案例
Volume数据卷的由来: Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上添加一个读写层.如果运行中的容器修改了现有的一个已经存在的 ...
- 浅谈C/C++ 开发Excel插件之操作excel
想在加载项中访问并操作Excel,需要在stdafx.h中加入如下语句,注意实际路径和本机安装Office的路径相关 #import "C:\\Program Files (x86)\\Co ...
最新文章
- linux日志发送,Linux中将执行过的命令记录到日志并发送到服务器的方法
- ELK5.3环境部署
- 在datagrid里面生成指定的DataView ,进行过滤.把符合条件的数据显示出来
- Git--版本管理的使用及理解
- “编程太差,那你别搞开发了!”基础差的程序员,你不知道有多难!!
- node.js的C++入门
- linux: 空指令(:)
- FMS飞行模拟器简介
- 影音先锋 android下载地址,影音先锋app官方普通下载-影音先锋 安卓版v5.8.2-PC6安卓网...
- xampp的安装教程
- python播放音频文件——playsound
- 德卡t10社保卡类型_德卡T10社保卡读卡器非接触式ic卡医保卡二代证医院挂号卡...
- flask中的可拨插视图
- 卤化铅钙钛矿量子点(LHP-QDs)/N719染料敏化太阳能电池
- 将火狐浏览器默认搜索引擎设置为“百度”
- C语言库函数— qsort () 详解
- Internet时间同步出错解决方法
- 绝对干货:微信小程序有哪些模式能够让你快速盈利?
- VBA关于数组Dim,ReDim Preserve运行速度对比思考
- Docker入门(1)
热门文章
- Vue.js中的v-model指令(双向绑定)
- 【自动驾驶】碰撞检测算法
- 数据库管理工具——SQuirreL SQL Client使用入门
- bilibili视频爬取报错
- 一个人的孤独,一群人的狂欢!
- [转载]使用 Apache OpenJPA 开发 EJB 3.0 应用,第 4 部分: 实体关联
- 前端开发实习笔试题(简答题)
- HTTP/1.1、HTTP/2
- a为实数java_Java 实数相加
- telnet 不是内部或外部命令,也不是可运行的程序解决方案:Windows 安装Telnet客户端