抓包以及工作原理

1.使用場(chǎng)景

(1).排查線上前端問(wèn)題

(2).抓包查看APP中webview渲染頁(yè)面請(qǐng)求,單獨(dú)h5鏈接有鑒權(quán)不能單獨(dú)情況

(3).構(gòu)建模擬測(cè)試場(chǎng)景(mock)

(4).APP弱網(wǎng)模擬測(cè)試

(5).前端性能分析及優(yōu)化

2.什么是抓包

抓包就是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲环壤、重發(fā)晒来、編輯、轉(zhuǎn)存等操作郑现,通過(guò)抓包可以:

分析網(wǎng)絡(luò)問(wèn)
思路就是設(shè)置一個(gè)中間人進(jìn)程負(fù)責(zé)抓包湃崩,每次目標(biāo)進(jìn)程之間的會(huì)話都先與中間人進(jìn)程通信,再進(jìn)行轉(zhuǎn)發(fā)接箫。
業(yè)務(wù)分析
分析網(wǎng)絡(luò)信息流通量
數(shù)據(jù)在網(wǎng)絡(luò)上是以很小的幀的單位傳輸?shù)脑芏粒瑤ㄟ^(guò)特定的稱為網(wǎng)絡(luò)驅(qū)動(dòng)程序的程序進(jìn)行成型,然后通過(guò)網(wǎng)卡發(fā)送到網(wǎng)線上辛友,通過(guò)網(wǎng)線到達(dá)目的機(jī)器薄扁,在目的機(jī)器的一端執(zhí)行相反的過(guò)程。

接收端機(jī)器的以太網(wǎng)捕獲到這些幀废累,并告訴操作系統(tǒng)幀已到達(dá)邓梅,然后對(duì)其進(jìn)行存儲(chǔ)。在這個(gè)傳輸和接收的過(guò)程邑滨,就可以使用抓包工具進(jìn)行抓包日缨,作為前端開(kāi)發(fā)者,通常是抓取應(yīng)用層的 HTTP/HTTPS 的包掖看。

2.2 HTTP/HTTPS 抓包原理

HTTP/HTTPS 是應(yīng)用層使用的通信協(xié)議匣距,常見(jiàn)的應(yīng)用層體系結(jié)構(gòu)是客戶端-服務(wù)器體系。

對(duì)運(yùn)行在不同端系統(tǒng)上的客戶端程序和服務(wù)端程序是如何互相通信的么哎壳?實(shí)際上毅待,在操作系統(tǒng)上的術(shù)語(yǔ)中,進(jìn)行通信的實(shí)際上是進(jìn)程而不是程序耳峦,一個(gè)進(jìn)程可以被認(rèn)為是運(yùn)行在端系統(tǒng)中的一個(gè)程序。

在 web 應(yīng)用程序中焕毫,一個(gè)客戶瀏覽器進(jìn)程與一臺(tái)服務(wù)器進(jìn)程進(jìn)行會(huì)話交換報(bào)文蹲坷。

瀏覽器進(jìn)程需要知道接收進(jìn)程的主機(jī)地址驶乾,以及定義在目的主機(jī)中的接收進(jìn)程的標(biāo)識(shí)符,也就是目的端口循签。

思路就是設(shè)置一個(gè)中間人進(jìn)程負(fù)責(zé)抓包级乐,每次目標(biāo)進(jìn)程之間的會(huì)話都先與中間人進(jìn)程通信,再進(jìn)行轉(zhuǎn)發(fā)县匠。

2.2.1 HTTP 抓包原理

在 http 標(biāo)準(zhǔn)中风科,沒(méi)有對(duì)通信端身份驗(yàn)證的標(biāo)準(zhǔn)。對(duì)于服務(wù)器來(lái)說(shuō)乞旦,它接收的 HTTP 請(qǐng)求報(bào)文只要格式符合規(guī)范贼穆,就發(fā)送響應(yīng)報(bào)文。

對(duì)于客戶端來(lái)說(shuō)也是如此兰粉,它無(wú)法校驗(yàn)服務(wù)器的身份 因此故痊,對(duì)于 HTTP 抓包,無(wú)需做過(guò)多的處理玖姑,只需要讓中間人負(fù)責(zé)轉(zhuǎn)發(fā)客戶端和服務(wù)端的數(shù)據(jù)包愕秫。

2.2.2 HTTPS 抓包原理

HTTP 是明文傳輸,容易受到中間人攻擊焰络,不安全戴甩。

HTTPS 語(yǔ)義仍然是 HTTP,只不過(guò)是在 HTTP 協(xié)議棧中 http 與 tcp 之間插入安全層 SSL/TSL闪彼。

安全層采用對(duì)稱加密的方式加密傳輸數(shù)據(jù)和非對(duì)稱加密的方式來(lái)傳輸對(duì)稱密鑰甜孤,解決 http 數(shù)據(jù)沒(méi)有加密、無(wú)法驗(yàn)證身份备蚓、數(shù)據(jù)容易纂改三個(gè)核心問(wèn)題课蔬。

HTTP + SSL(加密 + 認(rèn)證 + 完整性保護(hù)) = HTTPS
對(duì)稱加密:傳統(tǒng)的加密算法,就是加密和解密用的都是一個(gè)密碼郊尝。

非對(duì)稱加密: 通過(guò)算法可以隨機(jī)生成這樣的兩個(gè)字符串二跋,稱為一對(duì)公鑰和私鑰,知道算法流昏,并且擁有其中任意的一把鑰匙扎即,你能解開(kāi)用另一把鑰匙加密過(guò)的密文。 但你幾乎不可能通過(guò)手頭的這把鑰匙逆推出另一把鑰匙况凉,這保證了鑰匙的安全谚鄙。 為了能快速加解密,一般公鑰比較短刁绒,私鑰比較長(zhǎng)闷营。 私鑰不傳播不公開(kāi),所以稱為私鑰, 公鑰公開(kāi)發(fā)布出去傻盟。也就是公鑰加密速蕊,通過(guò)私鑰解密。

我們知道用https://www.baidu.com方式瀏覽網(wǎng)頁(yè)的時(shí) 瀏覽器首先要做的就是從對(duì)方的服務(wù)器上下載該網(wǎng)站的證書(shū)娘赴,并驗(yàn)證證書(shū)有效后规哲,才會(huì)開(kāi)始建立https連接。

1.客戶端向服務(wù)器請(qǐng)求時(shí)诽表,服務(wù)器先返回包含其公鑰的證書(shū)唉锌。

2.客戶端根據(jù)CA證書(shū)自簽根證書(shū)解密并校驗(yàn)證書(shū)鏈(為了防止證書(shū)被篡改,證書(shū)的正文信息后面竿奏,附加了一段CA機(jī)構(gòu)的簽名信息(密文))

證書(shū)的真?zhèn)悟?yàn)證是一個(gè)鏈條式的逐級(jí)驗(yàn)證的過(guò)程袄简,這被稱為信任鏈:

CA用私鑰自簽生成根證書(shū)(內(nèi)含CA公鑰),預(yù)裝到你的操作系統(tǒng)或?yàn)g覽器议双,
CA用私鑰給二級(jí)機(jī)構(gòu)簽發(fā)二級(jí)證書(shū)(內(nèi)含二級(jí)機(jī)構(gòu)公鑰)痘番,或許也已經(jīng)出現(xiàn)在你的系統(tǒng)中,你能用根證書(shū)驗(yàn)證它
二級(jí)機(jī)構(gòu)給各企業(yè)或網(wǎng)站或用戶簽發(fā)證書(shū)(內(nèi)含用戶公鑰)平痰,用戶使用證書(shū)來(lái)安全的分發(fā)公鑰
最終用戶獲取到某個(gè)證書(shū)后汞舱,可以通過(guò)預(yù)裝在自己系統(tǒng)中的上級(jí)證書(shū),來(lái)驗(yàn)證該證書(shū)是否有效
3.客戶端驗(yàn)證服務(wù)器證書(shū)的合法性后宗雇,生成一個(gè)隨機(jī)數(shù)通過(guò)該公鑰加密發(fā)給服務(wù)器昂芜,服務(wù)器通過(guò)自己的私鑰解密得到這個(gè)隨機(jī)數(shù),完成密碼交換赔蒲。

4.出于性能效率考慮泌神,后續(xù)客戶端與服務(wù)器通過(guò)交換的隨機(jī)數(shù)對(duì)數(shù)據(jù)進(jìn)行對(duì)稱加解密。

image.png
中間人想要抓包舞虱,需在 HTTPS 加密通信之前欢际,關(guān)鍵就是獲得這個(gè)密碼,方法是:

1.需要抓包的目標(biāo)上先安裝抓包軟件的證書(shū)

2.把這個(gè)抓包軟件自我簽發(fā)的證書(shū)設(shè)置為信任或放到根證書(shū)區(qū)域完全信任

3.在目標(biāo)上配置代理,把它所有的流量導(dǎo)向抓包軟件矾兜,抓包軟件截獲目標(biāo)發(fā)往服務(wù)器的通訊請(qǐng)求后蝌戒,就能偽裝成服務(wù)器趾撵,偽造一張證書(shū)發(fā)給客戶端另萤,因?yàn)槟阒芭渲貌⑿湃瘟宋业母C書(shū)兢哭,所以我現(xiàn)在偽造的證書(shū)被你驗(yàn)證通過(guò),讓客戶端以為就是真正的服務(wù)器給的證書(shū)和目標(biāo)通信(密碼自然就獲取到了)

4.同時(shí)也偽裝成目標(biāo)與真正的服務(wù)器通信返帕。

以Fiddler為例,F(xiàn)iddler抓取HTTPS過(guò)程
  1. Fiddler截獲客戶端發(fā)送給服務(wù)器的HTTPS請(qǐng)求荆萤,F(xiàn)iddler偽裝成客戶端向服務(wù)器發(fā)送請(qǐng)求進(jìn)行握手 。
  2. 服務(wù)器發(fā)回相應(yīng),F(xiàn)iddler獲取到服務(wù)器的CA證書(shū)偏竟, 用根證書(shū)(這里的根證書(shū)是CA認(rèn)證中心給自己頒發(fā)的證書(shū))公鑰進(jìn)行解密, 驗(yàn)證服務(wù)器數(shù)據(jù)簽名苫耸, 獲取到服務(wù)器CA證書(shū)公鑰儡陨。然后Fiddler偽造自己的CA證書(shū)(這里的CA證書(shū),也是根證書(shū)骗村,只不過(guò)是Fiddler偽造的根證書(shū)), 冒充服務(wù)器證書(shū)傳遞給客戶端瀏覽器胚股。
  3. 與普通過(guò)程中客戶端的操作相同笼痛,客戶端根據(jù)返回的數(shù)據(jù)進(jìn)行證書(shū)校驗(yàn)琅拌、生成密碼缨伊、用Fiddler偽造的證書(shū)公鑰加密,并生成HTTPS通信用的對(duì)稱密鑰enc_key进宝。
  4. 客戶端將重要信息傳遞給服務(wù)器刻坊, 又被Fiddler截獲。Fiddler將截獲的密文用自己偽造證書(shū)的私鑰解開(kāi)党晋, 獲得并計(jì)算得到HTTPS通信用的對(duì)稱密鑰enc_key谭胚。Fiddler將對(duì)稱密鑰用服務(wù)器證書(shū)公鑰加密傳遞給服務(wù)器。
  5. 與普通過(guò)程中服務(wù)器端的操作相同未玻,服務(wù)器用私鑰解開(kāi)后建立信任灾而,然后再發(fā)送加密的握手消息給客戶端。
  6. Fiddler截獲服務(wù)器發(fā)送的密文扳剿, 用對(duì)稱密鑰解開(kāi)旁趟, 再用自己偽造證書(shū)的私鑰加密傳給客戶端。
  7. 客戶端拿到加密信息后舞终,用公鑰解開(kāi)轻庆,驗(yàn)證HASH。握手過(guò)程正式完成敛劝,客戶端與服務(wù)器端就這樣建立了”信任“余爆。
  8. 在之后的正常加密通信過(guò)程中,F(xiàn)iddler如何在服務(wù)器與客戶端之間充當(dāng)?shù)谌吣兀?br> 服務(wù)器—>客戶端:Fiddler接收到服務(wù)器發(fā)送的密文夸盟, 用對(duì)稱密鑰解開(kāi)蛾方, 獲得服務(wù)器發(fā)送的明文。再次加密, 發(fā)送給客戶端桩砰。
    10.客戶端—>服務(wù)端:客戶端用對(duì)稱密鑰加密拓春,被Fiddler截獲后,解密獲得明文亚隅。再次加密硼莽,發(fā)送給服務(wù)器端。由于Fiddler一直擁有通信用對(duì)稱密鑰enc_key煮纵, 所以在整個(gè)HTTPS通信過(guò)程中信息對(duì)其透明懂鸵。
3.常用抓包工具操作

參考鏈接:

https詳解

1.https://www.cnblogs.com/gugu33/p/14258329.html

2.https://blog.csdn.net/zxy5663/article/details/126254589

3.https://blog.csdn.net/yang12345

抓包工具教程

Fiddler抓包的詳細(xì)教學(xué)

https://blog.csdn.net/m0_73409141/article/details/126998267

Charles 抓包工具詳解

https://blog.csdn.net/eyishion/article/details/54177916

Fiddler Classic 替換本地JS并遠(yuǎn)程調(diào)試

https://blog.csdn.net/sword_hap

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市行疏,隨后出現(xiàn)的幾起案子匆光,更是在濱河造成了極大的恐慌,老刑警劉巖酿联,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件终息,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贞让,警方通過(guò)查閱死者的電腦和手機(jī)周崭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)喳张,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蹲姐,你說(shuō)我怎么就攤上這事〔穸眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵逢净,是天一觀的道長(zhǎng)爹土。 經(jīng)常有香客問(wèn)我踩身,道長(zhǎng),這世上最難降的妖魔是什么琼娘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮瞒瘸,結(jié)果婚禮上熄浓,老公的妹妹穿的比我還像新娘。我一直安慰自己谎柄,他們只是感情好惯雳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布石景。 她就那樣靜靜地躺著拙吉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪往史。 梳的紋絲不亂的頭發(fā)上佛舱,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天请祖,我揣著相機(jī)與錄音,去河邊找鬼刷晋。 笑死慎陵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的席纽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼邮破,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了抒和?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤庙洼,失蹤者是張志新(化名)和其女友劉穎油够,沒(méi)想到半個(gè)月后征懈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鬼悠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年焕窝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了维贺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虐秋,死狀恐怖熟妓,靈堂內(nèi)的尸體忽然破棺而出栏尚,到底是詐尸還是另有隱情,我是刑警寧澤译仗,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布纵菌,位于F島的核電站,受9級(jí)特大地震影響笛辟,放射性物質(zhì)發(fā)生泄漏功氨。R本人自食惡果不足惜捷凄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一跺涤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桶错,春花似錦胀蛮、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)不跟。三九已至,卻和暖如春窝革,著一層夾襖步出監(jiān)牢的瞬間吕座,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工漆诽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锣枝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓供鸠,卻偏偏與公主長(zhǎng)得像陨闹,于是被迫代替她去往敵國(guó)和親薄坏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胶坠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容