注意:Android設備使用tcpdump須要root權限android
tcpdump是一個在Unix-like系統中通用的網絡抓包工具,固然,這個工具在Android系統中也是可使用的。shell
先去下載Android系統使用的tcpdump工具服務器
下載地址:http://www.androidtcpdump.com/網絡
下載後,push到手機設備上,如:tcp
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 結束採集。ui
而後運行下面命令把.pcap文件down下來:spa
adb pull /sdcard/dedao.pcap ./
打開已安裝的wireshark,文件——打開本地的dedao.pcap。調試
能夠看到列表內有很是多的通信信息,不過能夠用wireshark的篩選功能只顯示咱們想要的數據。
在篩選器中輸入http.host contains "dedao.com",回車,便可符合條件的數據。
接下來查看流量大小。
計算總流量
右鍵一個請求,選擇追蹤流—— TCP流,會彈出一個「追蹤TCP流」的窗體。
紅框圈中的位置,會有三個選項,依次是總流量,總上行流量,總下載流量。
因此這裏能夠看到本次抓包的所有流量,(前提是隻有一個服務器,若是多個服務器,相加計算)
計算單個請求的流量
在選擇追蹤流—— TCP流後,列表已經自動改變查詢條件,顯示是你選擇請求所在tcp流的全部數據。
選擇統計——端點
勾選顯示過濾器的限制,切換到TCP和UDP標籤,分別查看流量大小,相加
下載GT for Android
很簡單,不詳細描述了。
2.1 選擇被調試的應用,並勾選Net指標。
2.2 在參數tab,拖動NET參數到已關注,並勾選。
2.3 啓動被測App,操做前,點擊GT的懸浮窗的開始錄製按鈕。開始操做測試場景。
2.4 操做完後,暫停GT的懸浮窗,回到GT參數頁面,保存數據到手機。
2.5 pull數據文件到本地,打開.csv文件。最下面的一行即爲這次的總流量。
先拿到被測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等全部網絡流量傳輸的統計。
可是個人手機這種方式不行,,無論怎麼操做被測應用,一直不會變化。。