APP 爬蟲
Application(以下稱App)主要指安裝在智能手機上的應用程序。APP 運行在相應的操作系統上,
如蘋果公司的 iOS 系統或谷歌公司的 Android 系統。App 和網站都是 Web 應用,它們與服務器通信時使用的協議是相同的。
與網站不同的是,App 的網絡傳輸和數據收發相對隱蔽,用戶既無法直接查看客戶端發出的請求信息和服務器端返回的響應內容,也無法直接查看 App 的代碼。
雖然有些牽強,但這的確構成了被動型反爬蟲。
在之前的案例中,在爬取列表頁中的商品數據前,需要對元素進行定位。
但在面對 App 時,要做的第一件事就是找到該頁面對應的 URL。
相對於網站來說,App 較為封閉,用戶無法直接看到網絡請求和響應信息。
要想查看這些內容,就需要對 App 抓包,常用的抓包軟件有 Charles、 Fiddler 和 Wireshark
Charles 扮演的是中間人的角色,我們需要更改手機網絡的代理設置,將安裝有 Charles 的計算機作為網絡跳板,這樣 Charles 才能讀取手機的網絡傳輸信息。
要注意的是,被抓包的手機必須和計算機在同一個網絡中。
首先查看計算機的 IP 地址,然后打開手機的 WiFi 設置,並進入網絡設置界面
因為手機的版本高的問題,我們這里選擇 安卓模擬器
Charles 添加手機 IP 地址
京東商城案例(HTTPS)
我們可以借助抓包工具查看 App 的網絡請求信息,前提是 App 使用的網絡傳輸協議是HTTP。
如果 App 使用的網絡傳輸協議是 HTTPS,那情況就復雜多了。
沒有證書是無法查看請求信息的,好在 Charles 為用戶提供了有效的 SSL 證書,我們只需要按照官網的介紹進行證書的安裝即可
接下來我們以京東商城為例,演示基於 Https 協議的網絡通信抓包過程。
計算機端和手機端證書安裝完畢且設置證書信任后,在系統中安裝京東商城 App。
在抓包之前,我們還需要對 Charles 進行一些設置,以抓取基於 Https 協議的網絡(請求與響應)信息。
在 Charles 菜單欄中找到 Proxy 選項,並在下拉列表中選擇 SSL Proxying Settings。
點擊界面中的 Add 按鈕,然后在Host欄中填入“*”
在 Port欄中填入 443,這代表監聽所有網址的 443 端口
手機設置好網絡代理配置后,我們就可以在模擬器中下載對應的 SSL 證書了
打開瀏覽器訪問 http://chls.pro/ssl 該頁面是 Charles SSL 證書的下載項
下載后點擊文件安裝即可
打開京東 APP 搜索 MAC 電腦
App 只是比網站多了一層保護殼,這個保護殼將 App 發出的請求和得到的響應包裹起來,不讓用戶輕易看到
抓包軟件實際上是 App 和服務器端的中間人,設置代理后,網絡傳輸的信息就會經過中間人
這就是我們能夠在抓包軟件中查看 APP 發出的網絡請求和服務端響應信息的原因
APK 文件反編譯
簽名驗證是防止惡意連接和避免服務器端被數據欺騙的有效方式之一,也是后端 API 最常用的防護手段之一。
相對於 Web 網站中的簽名驗證來說,App 中的簽名驗證手段更為安全。
這是由於 App 的代碼不會直接暴露給外部,而查看 JavaScript 代碼則容易得多。
我們之前了解了簽名驗證在 Web 網站中的應用,本節我們將討論它在 App 中的應用。
我們再請求總覽中找到 url ,在瀏覽器中打開
我們復制該 URL 並用瀏覽器訪問,但服務器端返回的狀態碼並不是 200,而是 403。
根據 URL 中的請求正文,我們可以猜測 App 詳情頁的接口使用了類似於簽名驗證反爬蟲。
我們在簽名驗證反爬蟲中通過查看網站的 JavaScript 代碼整理出請求正文的加
密邏輯,但 App 的代碼如何查看呢?
APK 文件反編譯實戰
高級語言的源程序需要通過編譯生成可執行文件,編譯就是將編程語言翻譯成計算機能夠識別和
處理的二進制數據的過程。反編譯又名計算機軟件反向工程,指的是將軟件應用還原成開發語言代碼