博客 / 詳情

返回

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 週日

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.