首頁>技術>

背景

筆者從事Web開發,不論是PC端還是APP端,除錯抓包都是必不可少的環節,懂前端的人都知道,PC端除錯非常方便,Chrome或者火狐等瀏覽器等都自帶了非常方便且易於使用的開發者工具,便於我們抓包除錯。但是現在開發不僅僅是PC端,移動端也佔了很大的比重,但是在移動端除錯就沒PC端這麼方便了,因此就要藉助第三方的抓包工具供我們除錯抓包,本文就介紹兩個常用的方法進行介紹,分別是Fiddler和開源的抓包工具spy-debugger!

Fiddler

Fiddler是一個用於HTTP除錯的代理伺服器應用程式,最初由微軟Internet Explorer開發團隊的前程式經理Eric Lawrence編寫。Fiddler能捕獲HTTP和HTTPS流量,並將其記錄下來供使用者檢視。它通過使用自簽名證書實現中間人攻擊來進行日誌記錄。可以說它是一個非常強大的抓包工具,不過本文僅介紹移動端的除錯!

下面我們一起來看看如何操作:

PS:Fidder軟體下載可以自行搜尋或者在文末獲取下載方式

1、解壓並開啟軟體壓縮包,將證書外掛中的檔案dll拷貝到Fiddler的根目錄,也就是它本身的上級目錄。

PS:以上操作需要重啟Fiddler

4、這個地方我們作為測試,我在本地跑了一個測試的API,僅僅是一個沒有任何授權的測試API

5、開啟模擬器或者你的手機,手機需要同電腦在同一區域網絡環境下,然後開啟瀏覽器,輸入你的ip+剛剛設定的埠號,下載證書,按提示安裝即可

6、修改模擬器的網路代理

7、在模擬器瀏覽器重新訪問剛剛測試的API,抓包成功

8、測試瀏覽器訪問其他網頁,都能成功抓取到

PS:Fiddler簡單使用模擬器進行遠端除錯的方法就此結束,更多高階的用法需要開發者自行摸索,本文在此不在贅述!(軟體獲取方式在文末)

spy-debugger

spy-debugger是一個開源的抓包除錯工具,它相對於Fidder來說更加簡單,微信除錯,各種WebView樣式除錯、手機瀏覽器的頁面真機除錯。便捷的遠端除錯手機頁面、抓包工具,支援:HTTP/HTTPS,無需USB連線裝置。不過得先滿足一定的條件,下面我將帶大家一起來安裝並測試:

https://github.com/wuchangming/spy-debugger

它具備以下特性:

1、頁面除錯+抓包2、操作簡單,無需USB連線裝置3、支援HTTPS。4、spy-debugger內部集成了weinre、node-mitmproxy、AnyProxy。5、自動忽略原生App發起的https請求,只攔截webview發起的https請求。對使用了SSL pinning技術的原生App不造成任何影響。6、可以配合其它代理工具一起使用(預設使用AnyProxy) (設定外部代理)

我是在Windows環境下,因此演示環境是Windows,首先你得安裝過了nodejs,我們使用npm安裝它:

安裝:npm install spy-debugger -g

啟動:spy-debugger

下面是一些其他啟動選項,根據自己的需要自行配置:

1、埠:

(預設埠:9888)

spy-debugger -p 8888

2、設定外部代理(預設使用AnyProxy)

spy-debugger -e http://xxx:8888

spy-debugger內建AnyProxy提供抓包功能,但是也可通過設定外部代理和其它抓包代理工具一起使用,如:Charles、Fiddler。

3、設定頁面內容為可編輯模式

該功能使頁面內容修改更加直觀方便。 (預設: false)

spy-debugger -w true

內部實現原理:在需要除錯的頁面內注入程式碼:document.body.contentEditable=true。暫不支援使用了iscroll框架的頁面。

4、是否允許weinre監控iframe載入的頁面

(預設: false)

spy-debugger -i true

5、是否只攔截瀏覽器發起的https請求

(預設: true)

spy-debugger -b false

有些瀏覽器發出的connect請求沒有正確的攜帶userAgent,這個判斷有時候會出錯,如UC瀏覽器。這個時候需要設定為false。大多數情況建議啟用預設配置:true,由於目前大量App應用自身(非WebView)發出的請求會使用到SSL pinning技術,自定義的證書將不能通過app的證書校驗。

6、是否允許HTTP快取

(預設: false)

spy-debugger -c true

我本地直接使用和Fiddler一樣的埠8888,自動開啟瀏覽器後點擊請求除錯

spy-debugger -p 8888

這個地方由於設定的和Fiddler一樣的代理埠,因此模擬器端不必再重新設定網路

然後我們和剛才一樣,同樣能夠進行正確的抓包除錯,如下:

總結

本文就筆者的經驗而言,介紹兩種遠端真機或者模擬器除錯的方法,整個流程並不是很複雜,筆者也是才接觸不久,在此分享給大家,希望對剛剛接觸的小夥伴有所幫助!

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • jdbc+servlet完成更新