1. tcpdump + wireshark
1.1 tcpdump抓包
注意:Android設備使用tcpdump需要root權限
tcpdump是一個在Unix-like系統中通用的網絡抓包工具,當然,這個工具在Android系統中也是可以使用的。
先去下載Android系統使用的tcpdump工具
下載地址:http://www.androidtcpdump.com/
下載后,push到手機設備上,如:
abd push tcpdump /data/local/tmp/tcpdump
tcpdump命令支持許多參數,常見的有:
-i指定網卡(interface),any表示不限網卡; -c指定接收的packets數量,接收完成后自動停止抓包; -w指定輸出文件,輸出文件的格式為pcap; -s(--snapshot-length)指定在每個packet中最多截取的字節數,設置為0時表示截取上限取默認值262144; -v/-vv/-vvv,指定輸出的詳細程度,針對流量測試,我們不需要非常詳盡的輸出數據,取-v即可。
看完上面的參數,我們在terminal執行以下命令:
adb shell su -c /data/local/tmp/tcpdump -v -i any -s 0 -w /sdcard/dedao.pcap
tcpdump開始采集后,在手機執行測試場景,執行完畢后,control + c 結束采集。
然后運行下面命令把.pcap文件down下來:
adb pull /sdcard/dedao.pcap ./
1.2 wireshark分析
打開已安裝的wireshark,文件——打開本地的dedao.pcap。
可以看到列表內有非常多的通訊信息,不過可以用wireshark的篩選功能只顯示我們想要的數據。
在篩選器中輸入http.host contains "dedao.com",回車,即可符合條件的數據。
接下來查看流量大小。
計算總流量
右鍵一個請求,選擇追蹤流—— TCP流,會彈出一個“追蹤TCP流”的窗體。
紅框圈中的位置,會有三個選項,依次是總流量,總上行流量,總下載流量。
所以這里可以看到本次抓包的全部流量,(前提是只有一個服務器,如果多個服務器,相加計算)
計算單個請求的流量
在選擇追蹤流—— TCP流后,列表已經自動改變查詢條件,顯示是你選擇請求所在tcp流的所有數據。
選擇統計——端點
勾選顯示過濾器的限制,切換到TCP和UDP標簽,分別查看流量大小,相加
2. 騰訊GT
下載GT for Android
很簡單,不詳細描述了。
2.1 選擇被調試的應用,並勾選Net指標。
2.2 在參數tab,拖動NET參數到已關注,並勾選。
2.3 啟動被測App,操作前,點擊GT的懸浮窗的開始錄制按鈕。開始操作測試場景。
2.4 操作完后,暫停GT的懸浮窗,回到GT參數頁面,保存數據到手機。
2.5 pull數據文件到本地,打開.csv文件。最下面的一行即為此次的總流量。
3. 查看手機系統文件
先拿到被測App的UID,如下,10084就是com.UCMobile.trunk應用的UID
root@hammerhead:/ # cat /data/system/packages.list | grep com.UCMobile.trunk com.UCMobile.trunk 10084 0 /data/data/com.UCMobile.trunk default 3003,1028,1015
然后,具體獲取流量有兩個位置。
第一種:
流量數據分為接收流量(tcp_rcv)和發送流量(tcp_snd)兩部分,這兩個狀態數值我們可以通過讀取/proc/uid_stat/<UID>
目錄下的兩個文件得到。
shell@hammerhead:/ $ cat /proc/uid_stat/10084/tcp_rcv 3446837 shell@hammerhead:/ $ cat /proc/uid_stat/10084/tcp_snd 134366
單位bytes,這個數據是累加的,除非卸載應用才會被刪除。否則會一直增加。
所以測試前記錄下數字,測試完后減去記錄的數字就是流量大小。
還有,這種方式只能獲取TCP協議的流量,UDP的沒有計算。。
第二種:
adb shell cat /proc/net/xt_qtaguid/stats | grep 10084
48 wlan0 0x0 10127 0 316574 2279 472562 3651 316574 2279 0 0 0 0 472562 3651 0 0 0 0 49 wlan0 0x0 10127 1 6172960 4936 415951 5215 6172960 4936 0 0 0 0 415951 5215 0 0 0 0 50 wlan0 0x3792d5b400000000 10127 0 29678 208 32168 296 29678 208 0 0 0 0 32168 296 0 0 0 0 51 wlan0 0x3792d5b400000000 10127 1 226170 222 25745 265 226170 222 0 0 0 0 25745 265 0 0 0 0 56 wlan0 0xfa1dcc4b00000000 10127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 wlan0 0xfa1dcc4b00000000 10127 1 3014885 2127 139857 2117 3014885 2127 0 0 0 0 139857 2117 0 0 0 0
其中第6和8列為 rx_bytes(接收數據)和tx_bytes(傳輸數據)包含tcp,udp等所有網絡流量傳輸的統計。
但是我的手機這種方式不行,,不管怎么操作被測應用,一直不會變化。。