Android 网络开发抓包工具Fiddler、tcpdump和Wireshark的使用

  这篇文章会按照下面思路来进行描述:

  1、为什么需要抓包;

   2、怎样抓包;

   3、报文的简单分析;

   (ps 文章中提到的设备指的android系统的设备)

一、为什么需要抓包

 网络通信的时候,上层经常会用到http相关的协议,现在网络通信的开源框架也比较多,类似okhttp这些框架已经为我们提供了非常简单的接口,可能只需要一行代码就能实现简单的上传等功能。

 网络各个协议层之间的通信是通过报文来进行传递,每个协议层会有自己的报文格式。有时候我们需要确认发送或者接收到的报文信息是否正确,这时就需要抓包进行分析。其实还有很多场景会用到抓包,类似想通过php下载某个网站上的视频,这时也可以抓包,看下网站请求的信息,可以知道相关视频的实际访问地址。

 我自己个人用到抓包,是在写socket通信的时候用到了,2台设备之间通过udp进行通信,然后一边是android系统,一边是linux系统,报文内容是根据项目需要定义的一套协议。在开发的时候,遇到2边联调时,对接收和发送的报文存在争议,这时抓包就是最好的方式了,以实际抓包内容为准。

二、怎样抓包 && 如何简单分析报文

  Android上抓包的很多工具,也有很多种方式,下面只介绍我自己使用过的2种。一种是pc端安装fiddler工具,在电脑端实时查看网络报文情况,另一种是通过tcpdump命令来抓包,然后再使用wireshark软件来分析报文。实际上我使用第二种方式比较多,直接通过命令来抓包还是比较方便点,抓到的包也可以发给其它同事一起分析。

1、采用fiddler工具

 使用fiddler工具是需要设备端的ip和电脑端ip在同一网段,如果是公司的统一wifi,那pc和设备都连上公司wifi即可。然后设备端连接的wifi代理还需要设置为电脑端ip,这个目的也很明显,设备端wifi代理设为pc端ip后,设备端访问网络,其实都是借助p c端出去的了,所以通过fiddler就能很方便的查看到网络访问情况。

 好了,了解了关于fiddler的基本情况,下面动动手,搞起来吧~~

1) pc端安装fiddler工具(这个就自行下载安装了);
2)  ipconfig 查看电脑端 ip,这个ip地址就是设备端连接的wifi需要设置的代理ip;

3)  设备端连接wifi,这个wifi需要和p c端的网络是同一网络,然后设置代理采用pc端ip(也就是上面通过ipconfig查看到的ip地址);

4)   打开pc端安装的fiddler,fiddler中设置允许远程访问;

image
     

5)  经过上面几个步骤,下面就可以使用fiddler来查看网络报文了。可以试下在设备端访问网络,这时就可以在fiddler上看到网络访问情况了;

(下面的截图,是查看了喜马拉雅app的一次请求报文情况)

2、下面接着来看下第二种方式,采用tcpdump命令抓包,然后通过wireshark软件进行分析

1)  tcpdump抓包命令

  tcpdump -p -vv -s 0 -w /sdcard/capture.pcap

image

   2)  使用wireshark分析抓到的包

 在window上使用 wireshark打开抓取的包 *.pcap 文件.

下面的截图,是根据自己的需要,筛选了 192.168.7.2 发送给 192.168.7.3 的包. 可以看到协议是采用的 UDP ,端口是使用的4052.

点开其中一条数据包看下更具体的信息,这里更多时候关心的的是报文数据部分,查看Data部分的数据,可以排除我们发的报文数据是否正确.


本人从事Android Camera相关开发已有5年

目前在深圳上班

欢迎大家关注我的微信公众号“小驰笔记”

大家一起学习交流

 ------- 2020.01.12 周日

一线大厂,8年Android 开发,专注Android Camera、音视频开发~

1 声望
3 粉丝
0 条评论
推荐阅读
一篇文章带你了解Android 最新Camera框架
这篇文章主要分下面几点来展开讲解:1)Android 最新Camera 整体框架;2)Android Camera2 和HAL3 的基本了解;3)Camera2 介绍;(本文所写的内容基于Android 9.0)一、Android最新Camera 整体框架Android Camera整体...

小驰笔记阅读 3.1k

浅谈App的启动优化
温启动:当启动应用时,后台已有该应用的进程,但是Activity可能因为内存不足被回收。这样系统会从已有的进程中来启动这个Activity,这个启动方式叫温启动。

xuexiangjys5阅读 1.7k

如何用3D流体实现逼真水流效果?
华为应用市场在2022年HDC大会期间发布了一款3D水流主题,基于华为HMS Core Scene Kit服务能力,展现立体灵动的水流岛屿,可跟随用户指尖实现实时流体波动效果,既趣味又解压。

HMSCore1阅读 2.3k

安卓逆向之破解某成人APP播放次数限制
某成人水果APP非VIP用户存在播放次数限制,每天只能播放3次。超过3次需要购买VIP。 由于过于贫穷,于是抽空,对其安卓APP进行了逆向分析,最终成功破解了其播放次数限制。

悖论2阅读 467

封面图
Android桌面图标快捷方式
长按桌面图标实现快捷方式最早是iOS提供的功能,而Android最早在Android 7.1版本也提供了对这方面的支持,于是在短时间内,像微信,支付宝,头条等流量级应用都提供了这方面的支持,如下图。 

xiangzhihong3阅读 632评论 2

2022 年终总结|致敬即将过去的,匆忙而又虐心的一年...
本文参与了 SegmentFault 思否年度征文「一名技术人的 2022」,欢迎正在阅读的你也加入。 时间,总是过的这么快,快得让人猝不及防,眨眼又是一年的末...似乎儿时的文章中,对于时间的流逝,描述的最多的便是:白...

贺biubiu1阅读 1.2k

封面图
读懂 gradle dependencies
不过在使用 dependencies 时有一些细节之前一直没有搞清楚,遂研究了一下部分细节。本文整体参考 gradle 官方文档,大家感兴趣也可以自己深入研究下。

云音乐技术团队1阅读 497

封面图

一线大厂,8年Android 开发,专注Android Camera、音视频开发~

1 声望
3 粉丝
宣传栏