一、Fiddler是位於客戶端和伺服器端之間的代理,也是目前最常用的抓包工具之一 fiddler監控手機請求。windows上用Fiddler進行抓包操作
二、mac上通過charles監控手機網路請求
三、通過postman設置代理抓取手機上的請求
四、一言以蔽之,ZanProxy 是一個基於 Node.js 的代理伺服器。它專注於幫助前端開發提高開發效率
B. 分析移動端APP的網路請求
為了方便,本文以 iOS 系統來進行演示。
移動操作系統中都有可以設定系統代理的設置,比如在 iOS 中可以通過 Settings->WLAN 看到很多 Networks,通過點擊它們後面的 Info 圖標來設置代理:
這樣的話,所有的請求就會先到我們設置的代理伺服器,然後才有代理轉發給目標伺服器。於是我們就有機會在代理伺服器上獲取到請求的內容。
這里我使用的代理伺服器是 Charles ,在安裝並打開了 Charles 之後,Charles 就已經在後台建立了一個代理服務了。我們可以通過 ifconfig 命令找到自己的區域網 IP,Charles 默認的代理埠是 8888 。現在像上面的截圖那樣,在移動端中進行配置以使用我們的 Charles 代理。
現在你可以在移動端發起一些網路請求,當然最好是 HTTP 的,因為我不清楚 Charles 是否支持其他的協議類型。為了方便,我們可以使用 Safari 打開一段網址,比如 http://news..com (注意目前只是 HTTP 的,關於如何操作 HTTPS 下面會講到)。題外話,正如你所見的,網路的最常用的功能就是檢查網路服務的連通情況,比如 ping .com ,哈。
如果不出意外,那麼你會在 Charles 左邊欄中看到類似下圖的情況:
那麼說明我們的配置已經工作了,如果你點擊它們中的一個,右邊的界面中就會顯示對應的請求內容:
很好,Charles 已經為我們做了很多事,現在我們可以輕松的知道發生了哪些請求以及請求的內容了。
現在我們試一試在 safari 中輸入 www..com ,我們知道網路在 www 子域中使用了 HTTPS,並且當發現用戶使用的不是 HTTPS 訪問此子域時,會自動的 redirect,於是我們到了 https://www..com 。
現在再來看看 Charles 中的情況,我們發現 https://www..com 前面多了一把小鎖:
並且右邊沒有給出請求的內容,但是有一條提示 - 對於 SSL 代理需要進行額外的設置。
下面我就簡單解釋一下為什麼對於 HTTPS 而言 Charles 就暫時罷工了。更加具體的內容,可以見我的這篇文章 非對稱加密和數字證書 。
HTTPS 就是 HTTP over TLS,就是在原本的 HTTP 請求之前,客戶端和伺服器先進行 TLS 握手並建立一個 TLS 鏈接,然後在此鏈接之上進行 HTTP 協議的內容。這樣就使得我們的明文請求變成加密的。但是這里還是有一個缺陷,就是 TLS 握手階段是明文的,那麼為了解決這種雞生蛋蛋生雞的問題,出現了證書 (Certificate) 和證書頒發機構 (Certificate Authority)。
於是在 TLS 握手階段,多了一個校驗證書的步驟,服務端會返回 CA 頒發給其的證書,而客戶端對證書的真實性進行校驗。由於現在的請求內容已經被加密,所以作為代理的 Charles 無法知道其中的內容,於是為了使得 Charles 可以解析 HTTPS 的內容,我們就必須協助其完成 Man-in-the-middle 攻擊,攻擊的對象就是我們自己。
攻擊的方式很簡單,在手機上安裝上 Charles 的 CA 證書即可,所謂 CA 證書就是 CA 機構的證書,來證明 CA 機構的真實性,一些權威的 CA 機構的證書都是內置在我們的操作系統中的。現在我們在移動端上安裝了 Charles 的 CA 證書之後,Charles 就變成了 CA 了,於是它就可以頒發一個偽造的證書來欺騙移動端中的應用。
如果你不想了解其中的原理的話,要實現這個攻擊還是很簡單的,Charles 也提供了很多的便利,按照下面的步驟就行了。
我們在 Charles 的菜單中找到 :
點擊一下就會看到:
在移動端的 safari 中輸入地址 http://charlesproxy.com/getssl 後,跟著下面的截圖來將 Charles 製作的 CA 證書安裝到移動端中:
到目前為止,Charles 製作的 CA 證書已經安裝到了你的移動端,如果你希望刪除它的話,可以通過 Settings->General->Profile 來找到它並刪除,另外如果你不信任 Charles 自製的 CA 證書的話,它也是支持你使用自己的 CA 證書的。
再回到 Charles 進行一些設置,添加一下 SSL 規則:
現在,再回到移動端,在 safari 中訪問 www..com ,然後再看看 Charles 中的結果,你會發現:
現在我們已經可以解析來自移動端的 HTTPS 請求了。
暫時就先寫這么多吧
C. 如何進行手機APP的數據爬取
Python爬蟲手機的步驟:
1. 下載fiddler抓包工具
2. 設置fiddler
這里有兩點需要說明一下。
設置允許抓取HTTPS信息包
操作很簡單,打開下載好的fiddler,找到 Tools -> Options,然後再HTTPS的工具欄下勾選Decrpt HTTPS traffic,在新彈出的選項欄下勾選Ignore server certificate errors。
設置允許外部設備發送HTTP/HTTPS到fiddler
相同的,在Connections選項欄下勾選Allow remote computers to connect,並記住上面的埠號8888,後面會使用到。
好了,需要的fiddler設置就配置完成了。
3. 設置手機端
設置手機端之前,我們需要記住一點:電腦和手機需要在同一個網路下進行操作。
可以使用wifi或者手機熱點等來完成。
假如你已經讓電腦和手機處於同一個網路下了,這時候我們需要知道此網路的ip地址,可以在命令行輸入ipconfig簡單的獲得,如圖。
好了,下面我們開始手機端的設置。
手機APP的抓取操作對於Android和Apple系統都可用,博主使用的蘋果系統,在此以蘋果系統為例。
進入到手機wifi的設置界面,選擇當前連接網路的更多信息,在蘋果中是一個嘆號。然後在最下面你會看到HTTP代理的選項,點擊進入。
進入後,填寫上面記住的ip地址和埠號,確定保存。
4. 下載fiddler安全證書
在手機上打開瀏覽器輸入一個上面ip地址和埠號組成的url:http://192.168.43.38:8888,然後點擊FiddlerRoot certificate下載fiddler證書。
以上就簡單完成了所有的操作,最後我們測試一下是否好用。
5. 手機端測試
就以知乎APP為例,在手機上打開 知乎APP。下面是電腦上fiddler的抓包結果。
結果沒有問題,抓到信息包。然後就可以使用我們分析網頁的方法來進行後續的操作了。