這篇文章會按照下面思路來進行描述:
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中設置允許遠程訪問;
5) 經過上面幾個步驟,下面就可以使用fiddler來查看網絡報文了。可以試下在設備端訪問網絡,這時就可以在fiddler上看到網絡訪問情況了;
(下面的截圖,是查看了喜馬拉雅app的一次請求報文情況)
2、下面接着來看下第二種方式,採用tcpdump命令抓包,然後通過wireshark軟件進行分析
1) tcpdump抓包命令
tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
2) 使用wireshark分析抓到的包
在window上使用 wireshark打開抓取的包 *.pcap 文件.
下面的截圖,是根據自己的需要,篩選了 192.168.7.2 發送給 192.168.7.3 的包. 可以看到協議是採用的 UDP ,端口是使用的4052.
點開其中一條數據包看下更具體的信息,這裏更多時候關心的的是報文數據部分,查看Data部分的數據,可以排除我們發的報文數據是否正確.
本人從事Android Camera相關開發已有5年
目前在深圳上班
歡迎大家關注我的微信公眾號“小馳筆記”
大家一起學習交流
------- 2020.01.12 週日