你好,我是你的爬蟲課老師崔慶才,本課時我們會詳細講解 HTTP 的基本原理,有助於我們進一步掌握爬蟲的基本原理。
01 HTTP 和 HTTPS在淘寶的首頁 https://www.taobao.com/ 中,URL 的開頭會有 http 或 https,這個就是訪問資源需要的協議型別,有時我們還會看到 ftp、sftp、smb 開頭的 URL,那麼這裡的 ftp、sftp、smb 都是指的協議型別。在爬蟲中,我們抓取的頁面通常就是 http 或 https 協議的,我們在這裡首先來了解一下這兩個協議的含義。
HTTP 的全稱是 Hyper Text Transfer Protocol,中文名叫作超文字傳輸協議,HTTP 協議是用於從網路傳輸超文字資料到本地瀏覽器的傳送協議,它能保證高效而準確地傳送超文字文件。HTTP 由全球資訊網協會(World Wide Web Consortium)和 Internet 工作小組 IETF(Internet Engineering Task Force)共同合作制定的規範,目前廣泛使用的是 HTTP
1.1 版本。
HTTPS 的全稱是 Hyper Text Transfer Protocol over Secure Socket Layer,是以安全為目標的 HTTP 通道,簡單講是 HTTP 的安全版,即 HTTP 下加入 SSL 層,簡稱為 HTTPS。
HTTPS 的安全基礎是 SSL,因此通過它傳輸的內容都是經過 SSL 加密的,它的主要作用可以分為兩種:
建立一個資訊保安通道,來保證資料傳輸的安全。確認網站的真實性,凡是使用了 HTTPS 的網站,都可以通過點選瀏覽器位址列的鎖頭標誌來檢視網站認證之後的真實資訊,也可以通過 CA 機構頒發的安全簽章來查詢。現在越來越多的網站和 App 都已經向 HTTPS 方向發展。例如:
蘋果公司強制所有 iOS App 在 2017 年 1 月 1 日 前全部改為使用 HTTPS 加密,否則 App 就無法在應用商店上架。谷歌從 2017 年 1 月推出的 Chrome 56 開始,對未進行 HTTPS 加密的網址連結亮出風險提示,即在位址列的顯著位置提醒使用者 “此網頁不安全”。騰訊微信小程式的官方需求文件要求後臺使用 HTTPS 請求進行網路通訊,不滿足條件的域名和協議無法請求。因此,HTTPS 已經已經是大勢所趨。
02 HTTP 請求過程我們在瀏覽器中輸入一個 URL,回車之後便可以在瀏覽器中觀察到頁面內容。實際上,這個過程是瀏覽器向網站所在的伺服器傳送了一個請求,網站伺服器接收到這個請求後進行處理和解析,然後返回對應的響應,接著傳回給瀏覽器。響應裡包含了頁面的原始碼等內容,瀏覽器再對其進行解析,便將網頁呈現了出來,傳輸模型如圖所示。
此處客戶端即代表我們自己的 PC 或手機瀏覽器,伺服器即要訪問的網站所在的伺服器。
為了更直觀地說明這個過程,這裡用 Chrome 瀏覽器的開發者模式下的 Network 監聽元件來做下演示,它可以顯示訪問當前請求網頁時發生的所有網路請求和響應。
開啟 Chrome 瀏覽器,右擊並選擇 “檢查” 項,即可開啟瀏覽器的開發者工具。這裡訪問百度 http://www.baidu.com/,輸入該 URL 後回車,觀察這個過程中發生了怎樣的網路請求。可以看到,在 Network 頁面下方出現了一個個的條目,其中一個條目就代表一次傳送請求和接收響應的過程,如圖所示。
我們先觀察第一個網路請求,即 www.baidu.com,其中各列的含義如下。
第一列 Name:請求的名稱,一般會將 URL 的最後一部分內容當作名稱。第二列 Status:響應的狀態碼,這裡顯示為 200,代表響應是正常的。通過狀態碼,我們可以判斷髮送了請求之後是否得到了正常的響應。第三列 Type:請求的文件型別。這裡為 document,代表我們這次請求的是一個 HTML 文件,內容就是一些 HTML 程式碼。第四列 Initiator:請求源。用來標記請求是由哪個物件或程序發起的。第五列 Size:從伺服器下載的檔案和請求的資源大小。如果是從快取中取得的資源,則該列會顯示 from cache。第六列 Time:發起請求到獲取響應所用的總時間。第七列 Waterfall:網路請求的視覺化瀑布流。我們點選這個條目即可看到其更詳細的資訊,如圖所示。
首先是 General 部分,Request URL 為請求的 URL,Request Method 為請求的方法,Status Code 為響應狀態碼,Remote Address 為遠端伺服器的地址和埠,Referrer Policy 為 Referrer 判別策略。
再繼續往下,可以看到,有 Response Headers 和 Request Headers,這分別代表響應頭和請求頭。請求頭裡帶有許多請求資訊,例如瀏覽器標識、Cookies、Host 等資訊,這是請求的一部分,伺服器會根據請求頭內的資訊判斷請求是否合法,進而作出對應的響應。圖中看到的 Response Headers 就是響應的一部分,例如其中包含了伺服器的型別、文件型別、日期等資訊,瀏覽器接受到響應後,會解析響應內容,進而呈現網頁內容。
好了,今天的內容就全部講完了,本次分享中,我們了解了 HTTP 的基本原理。本次涉及的知識點需要好好掌握,後面分析網頁請求時會經常用到。