面试官问我会不会APP抓包,我..
點擊“小詹學Python”,選擇“置頂”公眾號
重磅干貨,第一時間送達
本文轉載自咸魚學Python,禁二次轉載
標題這個題目應該是我面試答的最好的一題了,所以咸魚就來講講APP抓包環境搭建。
App抓包應該是每個爬蟲工程師都避不開的話題,在之前我也寫過關于自動參與「抽獎助手」
抽獎的文章,當時使用的抓包工具是Charles,有需要的朋友可以翻下之前的文章。
App抓包原理
客戶端向服務器發起HTTPS請求
抓包工具攔截客戶端的請求,偽裝成客戶端向服務器進行請求
服務器向客戶端(實際上是抓包工具)返回服務器的CA證書
抓包工具攔截服務器的響應,獲取服務器證書公鑰,然后自己制作一張證書,
將服務器證書替換后發送給客戶端。(這一步,抓包工具拿到了服務器證書的公鑰)
客戶端接收到服務器(實際上是抓包工具)的證書后,生成一個對稱密鑰,
用抓包工具的公鑰加密,發送給“服務器”(抓包工具)
抓包工具攔截客戶端的響應,用自己的私鑰解密對稱密鑰,然后用服務器證書公鑰加密,
發送給服務器。(這一步,抓包工具拿到了對稱密鑰)
服務器用自己的私鑰解密對稱密鑰,向客戶端(抓包工具)發送響應
抓包工具攔截服務器的響應,替換成自己的證書后發送給客戶端
爬蟲的本質就是「騙」過服務器,各種反反爬手段就是增強信任的過程,不停的讓服務器相信你是自己人
如果你被反爬了,就是你騙術不精,被發現了。
App數據好抓嗎?
App數據有易有難,目前我還是停留在簡單的部分,這里簡單說下我理解的(如果說錯求放過):
簡單:
app的數據比web端數據更容易抓取,基本都是http、https協議,返回的數據格式也相對規整,
大多是json格式
困難:
1.需要反編譯的知識,需要分析加密算法
2.需要脫殼+反編譯
3.需要破解各式各類的簽名,證書。。
所以一個爬蟲工程師慢慢就需要掌握以下技能:
java編程基礎
android編程基礎
app逆向
app脫殼
破解加密
…
從入門到全棧
常用抓包工具
fiddler
mitmproxy
Charles
fiddler安裝和使用
下載:
https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe
安裝:一路Next
主要界面介紹:
會話列表界面:
監控面板在點擊會話列表界面的某個請求后會出現下面兩個界面:
請求面板:
響應面板:
本地CA證書安裝
點擊 Tools - Options - HTTPS - 勾選勾選 Capture HTTPS CONNECTs,勾選 Decrypt HTTPS trafic,會彈出安裝證書的提示。一路點是或確定安裝即可。
重啟fiddler,點擊右側Actions,能看一個下拉菜單,點擊 Export Root Certificate to Desktop,此時證書會生成到桌面上,名為 FiddlerRoot.cer,點OK保存
點擊安裝
連接手機抓包需要的配置
先設置PC端fiddler:
之后手機需要訪問 本地主機IP + 設置的端口,安裝證書,證書安裝成功后即可抓包。
以上就是關于Fiddler的安裝和簡單使用,進階使用還有很多騷操作,
mitmproxy安裝和使用
mitmproxy在linux版本下和windows版本下略有不同。
linux下借助pip,可以一鍵安裝:pip?install?mitmproxy
windows 下需要安裝Microsoft Visual C++ V14.0以上,之后再使用pip install mitmproxy安裝
mitmproxy有三大組件:
mitmproxy - linux下的抓包組件
mitmdump - python交互
mitmweb - windows下的可視化界面工具
在windows下僅支持后兩種組件的使用。
證書配置
在安裝目錄下可以看到以下這些文件:
其中:mitmproxy-ca.pem | PEM格式的證書私鑰 |
mitmproxy-ca-cert.pem | PEM格式證書,適用于大多數非Windows平臺 |
mitmproxy-ca-cert.p12 | PKCS12格式的證書,適用于Windows平臺 |
mitmproxy-ca-cert.cer | 與mitmproxy-ca-cert.pem相同,只是改變了后綴,適用于部分Android平臺 |
mitmproxy-dhparam.pem | PEM格式的秘鑰文件,用于增強SSL安全性 |
window安裝證書
雙擊mitmproxy-ca.p12,一路確定直至結束。期間會彈出警告點擊“確認”即可。
Mac安裝證書
Mac下雙擊mitmproxy-ca-cert.pem即可彈出鑰匙串管理頁面,然后找到mitmproxy證書,打開其設置選項,選擇“始終信任”即可
Android/iPhone安裝證書
方法一: 將mitmproxy-ca-cert.pem發送到手機上點擊安裝就可以了,蘋果手機點擊安裝描述文件即可。
方法二:?在linux下啟動?mitmproxy,命令為mitmproxy -p 8889,同時將手機代理設置為linux的IP地址與端口后訪問mitm.it安裝證書。
簡單使用
mitmproxy過濾功能的使用舉例:
mitmproxy斷點功能的使用舉例:
mitmproxy經常配合appium使用:
首先我們需要寫一個抓包的腳本,類似下面這個:
注意:這里的方法名必須使用response
編寫完抓包的腳本后,使用 mitmdump -p [port] -s [腳本文件] 啟動,配合appium自動化腳本即可實現app自動化抓取。
Charles的使用
之前寫過了相關的實戰,可以直接看下面的文章:
10行代碼實現自動參與抽獎助手抽獎(上)
10行代碼實現自動參與抽獎助手抽獎(下)
以上是我面試后的部分總結,希望對你有所幫助~
推薦閱讀:
除了Kaggle,還有哪些高質量的數據科學競賽平臺?
總結
以上是生活随笔為你收集整理的面试官问我会不会APP抓包,我..的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 除了Kaggle,还有哪些高质量的数据科
- 下一篇: 18 个 Python 高效编程技巧,M