抓包對每個開發者來講,應該說是最基本的技能之一,最近因公司需求接觸了一些抓包相關,也遇到了一些奇怪的問題,因而作一個簡單的記錄,但願對你們有所幫助哈。數據庫
工欲善其事,必先利其器 ,要抓包,怎麼可能沒有好的工具,對於普通抓包來講,咱們有下面幾個工具windows
在 windows 環境很是好,提供了一系列抓包方式及後續的腳本,劃重點,腳本,這也是衆多人喜歡的緣由。服務器
注意:在mac支持不好,新版軟件缺乏核心功能腳本,體驗不好。markdown
體驗nice,在Mac,windows體驗都可以,支持定時存儲,不支持相關腳本。(這也是爲何不如fiddler火的緣由,在mac體驗很好)網絡
阿里的抓包工具,在網頁上使用,使用簡單,支持js腳本。批量抓包能夠考慮使用。框架
如下經驗皆爲我的使用體驗。工具
若是是 windows用戶,只是想隨便抓抓練手,fiddler 不佳之選,mac用戶 選擇 Charles。oop
若是想抓完以後順便分析分析數據,寫入數據庫,那麼 AnyProxy 和 fiddler 能夠知足需求,mac用戶直接考慮 AnyProxy便可,不要問爲何,問就是 fiddler 在mac就是一坨稀飯。加密
相關的使用教程,一抓一大把,我這裏就不敘述了。spa
舒適提示:記得安裝證書,記得Android7.0如下(以上使用xp框架,或者別的方式)
好像有點跑題了,接下來回到正軌,上面這些抓包軟件原理是什麼呢?
中間人攻擊
一圖勝千言(小灰的圖)
簡而言之,小紅和小綠兩人要通訊,結果被中間人小黑偷聽並分別轉發了。
不少人認爲,用https不就好了嗎,我有證書作校驗啊,但普通的https依然至關於裸奔,相似的 上面的工具經過代理加僞造根證書依然能夠抓取https,具體原理看下面分析。
咱們以 charles舉例。charles至關於一箇中間人代理。當客戶端與服務器通訊時, charles 接收服務器的證書,而後動態生成一張證書發送給客戶端,而後 charles 做爲中間代理在客戶端 和 服務器 之間通訊,因此相關通訊的數據 能夠被 Charles 攔截。
以下圖描述:
具體步驟以下:
這也就是爲何抓https 須要安裝相應的證書,由於咱們得讓客戶端認爲證書有效,即咱們的證書也是根證書,不過Android7.0之後,用戶手動安裝的證書都不會被信任,因此通常咱們藉助xp框架或者別的方式
網絡請求時,判斷客戶端當前是否設置代理,若是設置代理,就禁止其訪問。
客戶端本地作證書校驗,而且設置不只僅校驗公鑰,設置完整的正式校驗模式。這樣的話,證書會校驗請求的時候不只僅校驗域名,會將證書中的公鑰及其餘信息也進行校驗,這樣的話,中間人僞造的證書就沒法經過驗證,沒法進行抓包。
對證書加密的數據再次進行加密,這樣即便對方已經將證書替換,那麼看到的數據仍舊是一堆亂碼後的數據。
最後,以上皆爲本人真實理解和實際感覺,抓包有風險,你們練練手便可,切勿黑灰產業哈
我是 Petterp ,若是你以爲個人文章對你有所幫助,歡迎點贊👏 ,若是有任何想法和問題,隨時歡迎評論區一塊兒討論。👨💻