开篇

开篇第一章总得说点多余的东西,本人入坑的时间也有两年时间了,期间遇到的坑不少,但是总觉得都太浅,不值得拿出来聊一聊。而最近发现身边有不少人开始搞起了创作,于是乎又萌生出了分享些什么的想法。今后我也将平时遇到的大大小小的坑拿出来跟大家聊一聊,小码农看看来或许能得到一些启发,老鸟们看来也能投一乐呵。

楔子

抓包或许是诸多小码农们在某一个时间点必须要做的一件事。像是前后端联调的时候前端需要对发出的请求进行抓包,这时用的最多的是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]也是这么配置的,让我们坚信了这个方法是可行的),将代码原样拷贝过来运行以后发现居然可以抓到包了。经过一番折腾后我们发现了两件事。

  1. HTTP请求在使用这篇博客中的代码是可以被Fiddler抓到包的,而使用我们自己的代码是不可以的
  2. 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抓包操作相关推荐

  1. python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法

    浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...

  2. 浅谈GWAS分析后的富集分析操作(GO/KEGG)

    浅谈GWAS分析后的富集分析操作(GO/KEGG) 作者:刘济铭 ######################## 在我们完成全基因组关联分析后,常常筛选得到特定性状的基因集,接下来,通常我们需要开展 ...

  3. 如何使用Fiddler抓包操作?

    目前微信公众号和小程序应用越来越多,那么我们如何对二者进行抓包进而在测试中更加准确的定位问题呢?目前通常有三种解决方案,在这里我会一一道来. 备注:本文的阅读前提是读者能够使用Fiddler进行基础的 ...

  4. python中判断列表数据类型_浅谈Python数据类型判断及列表脚本操作

    数据类型判断 在python(版本3.0以上)使用变量,并进行值比较时.有时候会出现以下错误: TypeError: unorderable types: NoneType() < int() ...

  5. python列表使用判断_浅谈Python数据类型判断及列表脚本操作

    数据类型判断 在python(版本3.0以上)使用变量,并进行值比较时.有时候会出现以下错误: TypeError: unorderable types: NoneType() < int() ...

  6. 技术文档,完成课程表的抓包操作

    希望转载的时候注上本文链接,尊重原文作者.谢谢~http://blog.csdn.net/u010858238/article/details/9029653 说起来很奇怪,为什么超级课程表火了这么久 ...

  7. android抓包工具——使用fiddler4在安卓手机抓包

    Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包 ...

  8. docker -v 挂载文件_浅谈关于docker中数据卷的操作,附带案例

    Volume数据卷的由来: Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上添加一个读写层.如果运行中的容器修改了现有的一个已经存在的 ...

  9. 浅谈C/C++ 开发Excel插件之操作excel

    想在加载项中访问并操作Excel,需要在stdafx.h中加入如下语句,注意实际路径和本机安装Office的路径相关 #import "C:\\Program Files (x86)\\Co ...

最新文章

  1. linux日志发送,Linux中将执行过的命令记录到日志并发送到服务器的方法
  2. ELK5.3环境部署
  3. 在datagrid里面生成指定的DataView ,进行过滤.把符合条件的数据显示出来
  4. Git--版本管理的使用及理解
  5. “编程太差,那你别搞开发了!”基础差的程序员,你不知道有多难!!
  6. node.js的C++入门
  7. linux: 空指令(:)
  8. FMS飞行模拟器简介
  9. 影音先锋 android下载地址,影音先锋app官方普通下载-影音先锋 安卓版v5.8.2-PC6安卓网...
  10. xampp的安装教程
  11. python播放音频文件——playsound
  12. 德卡t10社保卡类型_德卡T10社保卡读卡器非接触式ic卡医保卡二代证医院挂号卡...
  13. flask中的可拨插视图
  14. 卤化铅钙钛矿量子点(LHP-QDs)/N719染料敏化太阳能电池
  15. 将火狐浏览器默认搜索引擎设置为“百度”
  16. C语言库函数— qsort () 详解
  17. Internet时间同步出错解决方法
  18. 绝对干货:微信小程序有哪些模式能够让你快速盈利?
  19. VBA关于数组Dim,ReDim Preserve运行速度对比思考
  20. Docker入门(1)

热门文章

  1. Vue.js中的v-model指令(双向绑定)
  2. 【自动驾驶】碰撞检测算法
  3. 数据库管理工具——SQuirreL SQL Client使用入门
  4. bilibili视频爬取报错
  5. 一个人的孤独,一群人的狂欢!
  6. [转载]使用 Apache OpenJPA 开发 EJB 3.0 应用,第 4 部分: 实体关联
  7. 前端开发实习笔试题(简答题)
  8. HTTP/1.1、HTTP/2
  9. a为实数java_Java 实数相加
  10. telnet 不是内部或外部命令,也不是可运行的程序解决方案:Windows 安装Telnet客户端