01 HTTP 協(xié)議和 Fiddle 抓包

個(gè)人站點(diǎn):http://www.669.icu

Web 瀏覽器和 Web 服務(wù)器之間是通過 HTTP 協(xié)議相互通信的梧奢。

1.1 HTTP 協(xié)議介紹

1.1.1 什么是 HTTP 協(xié)議

協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或規(guī)則 福扬。

超文本傳輸協(xié)議( HyperText Transfer Protocol, HTTP )是互聯(lián)網(wǎng)上應(yīng)用最廣泛的一種網(wǎng)絡(luò)協(xié)議,它允許將超文本標(biāo)記語 言( HTML )文檔從 Web 服務(wù)器傳送到客戶端的瀏覽器郑临。

目前我們使用的 HTTP 協(xié)議是 HTTP/1.1 版本 。

1.1.2 如何學(xué)習(xí) HTTP 協(xié)議

必須先了解 HTTP 協(xié)議的基本知識(shí)扎酷;然后找一個(gè)抓包軟件實(shí)實(shí)在在地看到數(shù)據(jù)包的內(nèi)容尚卫,并且看到數(shù)據(jù)包是如何在瀏覽器和 Web 服務(wù)器中進(jìn)行交互的。

Fiddler 就是我們需要的抓包工具 叁征。

1.1.3 HTTP 協(xié)議的工作原理

我們打開瀏覽器纳账,在地址欄中輸入 URL ,然后我們就看到了網(wǎng)頁(yè)捺疼。原理是怎樣的呢疏虫?

實(shí)際上,我們輸入 URL 后啤呼,瀏覽器就給 Web 服務(wù)器發(fā)送了一個(gè) HTTP 請(qǐng)求(HTTP Request),Web 服務(wù)器接到 HTTP 請(qǐng)求后進(jìn)行處理卧秘,生成相應(yīng)的 HTTP 響應(yīng)( HTTP Response),然后發(fā)送給瀏覽器 官扣。瀏覽器解析 HTTP 響應(yīng)中的 HTML翅敌,這樣我們就看到了網(wǎng)頁(yè) 。

image-20210102132216079

瀏覽器客戶端和 Web 服務(wù)器之間是通過 HTTP 協(xié)議來交流的惕蹄。 目前主流的 Web 瀏覽器有微軟的 IE蚯涮、Firefox 和 Chrome 。

Web 瀏覽器會(huì)給 Web 服務(wù)器發(fā)送一條 HTTP 請(qǐng)求 焊唬, 服務(wù)器會(huì)把 Web 對(duì)象發(fā)送給瀏覽器恋昼,瀏覽器解析 Web 對(duì)象看靠,這些對(duì)象就顯示在屏幕上了 赶促。

1.2 Fiddler 的介紹

Fiddler 是世界上最強(qiáng)大最好用的 Web 調(diào)試工具,能記錄所有客戶端和服務(wù)器 的 HTTP 和 HTTPS 請(qǐng)求挟炬,允許你監(jiān)視鸥滨、設(shè)置斷點(diǎn),甚至修改輸入輸出數(shù)據(jù) 谤祖。

Fiddler 包含了一個(gè)強(qiáng)大的基于事件腳本 的子系統(tǒng)婿滓,并且能使用 .NET 語言進(jìn)行擴(kuò)展。

Fiddler 是用 C# 開發(fā)的 粥喜,作者是 Eric Lawrence凸主。

1.2.1 Fiddler 的下載和安裝

Fiddler 的官方網(wǎng)站是 www.fiddler2.com,下載地址是 http://www.getfiddler.com额湘。

Fiddler 有 2 個(gè)版本卿吐,F(xiàn) iddler2 和 Fiddler4 旁舰,兩者功能相同。建議使用 Fiddler4 嗡官。

1.2.2 Fiddler 的基本界面

Fiddler 基本界面包括如下區(qū)域:

  1. 主菜單欄:菜單 中幾乎可以啟 動(dòng)所有的 Fiddler 功能
  2. 工具欄 :提供了很多常見的命令
  3. Web Sessions 列表(會(huì)話列表):顯示捕捉到的每個(gè) Session 的簡(jiǎn)短信息箭窜。平常都需要在這里選擇一個(gè)或者多個(gè) Ses sion 后再進(jìn)行操作
  4. 功能面板:這里有很多選項(xiàng)卡 ,提供了 很多功能衍腥。我們 常用的是 Inspectors 選項(xiàng)卡
  5. QuickExec:命令行工具磺樱,可以輸入簡(jiǎn)單的命令, 例如輸入 cls 可以清空 Web Sessions
  6. 狀態(tài)欄:上面顯示 了 Fiddler 的一些配置信 息
image-20210102140149408

1.2.3 Inspectors 選項(xiàng)卡

Inspectors 選項(xiàng)卡下可以查看 HTTP 請(qǐng)求和 HTTP 響應(yīng)的報(bào)文結(jié)構(gòu) 婆咸。其中 Raw 選項(xiàng)卡可以查看完整的消息竹捉,Headers 選項(xiàng)卡只查看消息中的 Header 。

image-20210102140202018

1.2.4 Web Sessions 列表

Fiddler 窗口的左邊是 Web Sessions 列表尚骄,是 Fiddler 中 最重要的部分 活孩,顯示了每個(gè) Session 的摘要信息。Fiddler 中的大部分操作都需要在 Web Sessions 列表中選擇一個(gè)或者多個(gè) Session乖仇,再進(jìn)行其他操作憾儒。Web Sessions 列表中的表頭可以排序。

一個(gè) Session 包含了 一個(gè) HTTP 請(qǐng)求和一個(gè) HTTP 響應(yīng)乃沙。

image-20210102140350590

Web Sessions 列表欄中包含的信息如下:

  1. #:這是 Fiddler 生成的 ID(最好是按順序排列〉起趾。
  2. Result:響應(yīng)的狀態(tài)碼。
  3. Protocol :使用的協(xié)議 HTTP 或者 HTTPS
  4. Host:服務(wù)器的主機(jī)名和端口號(hào)
  5. URL: URL 的路徑
  6. Body: HTTP 響應(yīng)中包含的字節(jié)數(shù)
  7. Caching:跟緩存相關(guān)的字段的值
  8. Content-Type:響應(yīng)中 Content-Type 的值
  9. Process:對(duì)應(yīng)本地 Windows 的進(jìn)程

1.2.5 Fiddler 捕獲 HTTP 協(xié)議的數(shù)據(jù)包

  1. 啟動(dòng) Fiddler警儒,打開任何一個(gè)瀏覽器训裆,輸入 http://www.cnblogs.com/tankxiao/
  2. 選擇任何一個(gè) Session,然后選擇 Inspectors 選項(xiàng)卡蜀铲,就可以查看詳細(xì)內(nèi)容
image-20210102140727667

1.2.6 Fiddler 設(shè)置開始捕獲和停止捕獲

我們把捕獲 HTTP 數(shù)據(jù)包的過程簡(jiǎn)稱為抓包 边琉。 在 Fiddler 的使用過程中 , 當(dāng)我們已經(jīng)抓到自己想要的數(shù)據(jù)包后记劝,可以停止抓包变姨,以避免抓到一些不需要的數(shù)據(jù)包。接下來介紹兩種設(shè)置方法厌丑。

方法一:在 Fiddler 中單擊 File -> Capture Traffic(快捷鍵是 Fl2) 來開始抓包或者停止抓包 定欧。

image-20210102141010155

方法二:?jiǎn)螕?Fiddler 左下角的“ Capturing "按鈕來開始抓包或者停止抓包。

image-20210102141039374

1.3 HTTP 協(xié)議報(bào)文的結(jié)構(gòu)

HTTP 報(bào)文分 2 個(gè):一個(gè)是 HTTP 請(qǐng)求報(bào)文怒竿,一個(gè)是 HTTP 響應(yīng)報(bào)文砍鸠。

1.3.1 HTTP 請(qǐng)求報(bào)文的結(jié)構(gòu)

瀏覽器發(fā)送給 Web 服務(wù)器的 HTTP 請(qǐng)求報(bào)文內(nèi)容。

image-20210102141211762

HTTP 請(qǐng)求報(bào)文的詳細(xì)內(nèi)容:

image-20210102141238392

HTTP 請(qǐng)求報(bào)文分為 3 部分 :第一部分 叫 起始行( Request line )耕驰,第二部分叫首部(Request Header)爷辱,第三部分叫主體(Body)

  1. 第一行中的 Method 表示請(qǐng)求方法,比如“ POST ”或者“ GET ”,現(xiàn)在使用的 HTTP 協(xié)議版本是 HTTP/ 1.1
  2. 第二部分是首部(Header)饭弓,后面會(huì)詳細(xì)介紹這些首部的用法
  3. 第三部分是主體(Body)

【注意】Header 首部和 Body(主體)之間有一個(gè)空行

1.3.2 HTTP 響應(yīng)報(bào)文的結(jié)構(gòu)

Web 服務(wù)器發(fā)送給瀏覽器的 HTTP 響應(yīng)報(bào)文內(nèi)容:

image-20210102142354842

HTTP 響應(yīng)報(bào)文的詳細(xì)內(nèi)容:

image-20210102142427966

Response 消息的結(jié)構(gòu)和 Request 消息 的 結(jié)構(gòu)基本一樣 巩检,同樣也分為 3 部分:第一部分 叫響 應(yīng)行( Response Line ) , 第 二部分 叫響 應(yīng)首部(Response Header)示启,第三部分是主體(Body) 兢哭。

  1. 第一部分是起始行,有狀態(tài)碼和狀態(tài)碼消息
  2. 第二部分是首部( Header )夫嗓,后面會(huì)詳細(xì)介紹這些首部的用法
  3. 第三部分是主體( Body )迟螺,如果是 GET 方法,就沒有主體

【注意】Header 首部和 Body(主體)之間有一個(gè)空行

1.3.3 Fiddler 捕獲博客主頁(yè)舍咖,查看 HTTP 請(qǐng)求和 HTTP 響應(yīng)報(bào)文

  1. 啟動(dòng) Fiddler矩父,打開瀏覽器 ,輸入 http://www.cnblogs.com/tankxiao
  2. 在 Fiddler 的界面中找到 www.cnblogs.com/tankxiao排霉,然后選擇 Inspectors 選項(xiàng)卡
image-20210102142832413
  1. 在 HTTP 請(qǐng)求中選擇 Raw 選項(xiàng)卡 窍株,這樣就能看到完整的 HTTP 請(qǐng)求報(bào)文。由于這是個(gè) GET 方法攻柠,所以 HTTP 請(qǐng)求沒有 Body
  2. 在 HTTP 響應(yīng)中選擇 Raw 選項(xiàng)卡球订,這樣就能看到完整的 HTTP 響應(yīng)報(bào)文。

1.4 Fiddler 抓包的原理

Fiddler 為什么能抓包呢瑰钮?Fiddler 本質(zhì)上是一個(gè) Web 代理服務(wù)器冒滩。它的默認(rèn)工作端口是 8888。

我們可以查看 Fiddler 的工作端口浪谴。啟動(dòng) Fiddler开睡,如圖所示,在菜單欄中單擊 Tools -> Fiddler options苟耻。

image-20210102143045024

1.4.1 什么是代理服務(wù)器

Web 代理( Proxy Server)服務(wù)器是網(wǎng)絡(luò)的中間實(shí)體篇恒。代理位于 Web 客戶端和 Web 服務(wù)器之間,扮演“中間人”的角色凶杖。

HTTP 的代理服務(wù)器既是 Web 服務(wù)器又是 Web 客戶端胁艰。

image-20210102143138810

代理服務(wù)器是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,它具有以下功能:

  1. 共享網(wǎng)絡(luò)官卡。能解決僅僅有一條線路 蝗茁、 一個(gè)公有 IP 的問題醋虏。在公有 IP 資源嚴(yán)重不足的情況下寻咒,可以滿足局域網(wǎng)大量用戶同時(shí)共享上網(wǎng)的需求
  2. 提高了訪問速度。因?yàn)榇蟛糠值拇矸?wù)器都有緩沖功能颈嚼,可以直接讀取毛秘,無須再連接到遠(yuǎn)程 Web 服務(wù)器。這樣可以達(dá)到加快訪問網(wǎng)站的速度、節(jié)約通信帶寬的目的
  3. 突破了訪問限制 叫挟。當(dāng)訪問權(quán)限受到限制時(shí)艰匙,可以使用有權(quán)限的代理服務(wù)器
  4. 隱藏身份。內(nèi)部網(wǎng)的用戶要對(duì)外發(fā)布信息抹恳,就需要使用代理服務(wù)器的反向代理功能 员凝。 這樣就不會(huì)影響內(nèi)部網(wǎng)絡(luò)的安全性能,起到隱藏身份的目的

1.4.2 Fiddler 的工作原理

Fiddler 是以代理 Web 服務(wù)器的形式工作的奋献,它使用代理地址:127.0.0.1健霹,端口:8888。

image-20210102143440502

Fiddler 啟動(dòng)的時(shí)候瓶蚂,會(huì)偷偷地把 Internet 選項(xiàng)中的代理修改為 127.0.0.1 糖埋,端口:8888 。
當(dāng) F iddler 退出的時(shí)候窃这,它會(huì)自動(dòng)在 Internet 選項(xiàng)中取消代理瞳别,這樣就不會(huì)影響別的程序 。
如果 Fiddler 非正常退出杭攻,這時(shí)候因?yàn)?Fiddler 沒有自動(dòng)注銷祟敛,會(huì)造成網(wǎng)頁(yè)無法訪問 。解決的辦法是重新啟動(dòng) Fiddler 兆解。

1.4.3 查看 Internet 選項(xiàng)代理設(shè)置

先啟動(dòng) Fiddler垒棋,打開控制面板,找到 Internet 屬性痪宰,然后選擇連接 -> 局域網(wǎng)設(shè)置 -> 高級(jí)叼架,可以看到代理服務(wù)器地址己經(jīng)被 Fiddler 設(shè)置為 127.0.0.1 :8888 了。

關(guān)閉 Fiddler衣撬,可以看到代理服務(wù)器地址已經(jīng)取消了乖订。

image-20210102143636337

1.4.4 Fiddler 如何捕獲 Firefox

有時(shí)候我們會(huì)發(fā)現(xiàn) ,F(xiàn)iddler 能捕獲 IE 和其他瀏覽器發(fā)出的請(qǐng)求具练,但是不能捕獲 Firefox 發(fā)出的請(qǐng)求乍构。
之所以不能捕獲 Firefox 的請(qǐng)求,那是因?yàn)?Firefox 的代理服務(wù)器沒有配置成 Fiddler 扛点。
打開 Firefox哥遮,在菜單欄中選擇工具 -> 選項(xiàng),-> 高級(jí)陵究,-> 網(wǎng)絡(luò) -> 設(shè)置眠饮。選擇使用系統(tǒng)代理設(shè)置。

image-20210102143808756

或者手動(dòng)配置铜邮,指向 Fiddler仪召。

image-20210102143833608

1.4.5 Fiddler 能捕獲哪些設(shè)備的 HTTP 數(shù)據(jù)包

任何支持代理的 HTTP 請(qǐng)求都能被 Fiddler 捕獲到寨蹋,首先 Fiddler 能捕獲各種瀏覽器,比如 IE扔茅、Firefox已旧,Chrome 發(fā)出來的數(shù)據(jù)包 。

Fiddler 還能捕獲各種移動(dòng)設(shè)備召娜,比如 Android 手機(jī)运褪、蘋果手機(jī)、iPad 等發(fā)出的數(shù)據(jù)包玖瘸。

image-20210102143942796

Fiddler 能捕獲任何程序發(fā)出來的 HTTP/HTTPS 請(qǐng)求吐句,只要這個(gè)程序支持 Web 代理服務(wù)器即可。

比如 Fiddler 能抓到 QQ 發(fā)出的包 店读,當(dāng)然 QQ 中發(fā)的聊天消息是抓不到的嗦枢,因?yàn)?QQ 中的聊天信息使用的是 OICQ 協(xié)議,不是 HTTP 協(xié)議 屯断。

只要在 QQ 中設(shè)置代理服務(wù)器即可實(shí)現(xiàn)抓包文虏。

image-20210102144033672

1.4.6 解壓 HTTP 響應(yīng)

在 Fiddler 抓包的過程中,我們經(jīng)持逞荩看到 HTTP 響應(yīng)是亂碼氧秘,單擊“ Response body is encoded. Click to decode. "按鈕可以解壓 HTTP 響應(yīng) 。

image-20210102144112014

參考

  • [書籍]:《HTTP 抓包實(shí)戰(zhàn)》
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趴久,一起剝皮案震驚了整個(gè)濱河市丸相,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彼棍,老刑警劉巖灭忠,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異座硕,居然都是意外死亡弛作,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門华匾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來映琳,“玉大人,你說我怎么就攤上這事蜘拉∪鳎” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵旭旭,是天一觀的道長(zhǎng)谎脯。 經(jīng)常有香客問我,道長(zhǎng)您机,這世上最難降的妖魔是什么穿肄? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任年局,我火速辦了婚禮际看,結(jié)果婚禮上咸产,老公的妹妹穿的比我還像新娘。我一直安慰自己仲闽,他們只是感情好脑溢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赖欣,像睡著了一般屑彻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顶吮,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天社牲,我揣著相機(jī)與錄音,去河邊找鬼悴了。 笑死搏恤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的湃交。 我是一名探鬼主播熟空,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搞莺!你這毒婦竟也來了息罗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤才沧,失蹤者是張志新(化名)和其女友劉穎迈喉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體温圆,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弊添,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捌木。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片油坝。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖刨裆,靈堂內(nèi)的尸體忽然破棺而出澈圈,到底是詐尸還是另有隱情,我是刑警寧澤帆啃,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布瞬女,位于F島的核電站,受9級(jí)特大地震影響努潘,放射性物質(zhì)發(fā)生泄漏诽偷。R本人自食惡果不足惜坤学,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望报慕。 院中可真熱鬧深浮,春花似錦、人聲如沸眠冈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜗顽。三九已至布卡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雇盖,已是汗流浹背忿等。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崔挖,地道東北人贸街。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像虚汛,于是被迫代替她去往敵國(guó)和親匾浪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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