《52講輕松搞定網絡爬蟲》讀書筆記 - HTTP基本原理


URI 和 URL

URI :Uniform Resource Identifier,即統一資源標志符,

URL :Universal Resource Locator,即統一資源定位符。

 

舉栗子,加深理解

鏈接https://github.com/favicon.ico,它是一個URI也是一個URL,唯一指向一個圖標資源,可以通過URI/URL在互聯網上找到它

 

URL和URI的關系

URL 是 URI 的子集,也就是說每個 URL 都是 URI,但不是每個 URI 都是 URL;URI還包括一個子類叫做URN(Uniform Resource Name),即統一資源名稱

 

URN的作用

URN 只命名資源而不指定如何定位資源

舉栗子

比如 urn:isbn:0451450523 指定了一本書的 ISBN,可以唯一標識這本書,但是沒有指定到哪里定位這本書

 

URI、URL、URN的關系圖

 

總結

但是在目前的互聯網,URN 的使用非常少,幾乎所有的 URI 都是 URL,所以一般的網頁鏈接我們可以稱之為 URL,也可以稱之為 URI

 

HTTP協議

超文本

我們在瀏覽器里看到的網頁就是超文本解析而成的,其網頁源代碼是一系列 HTML 代碼,而這些可稱為超文本

 

HTTP 和 HTTPS

HTTP:超文本傳輸協議

HTTP作用:從網絡傳輸超文本內容到本地瀏覽器的協議,保證高效准確的傳送超文本內容;最常用1.1版本

HTTPS:HTTP的安全版,在HTTP協議的基礎上加了一層SSL協議,SSL屬於安全協議

HTTPS的作用

  • 建立一個安全傳輸通道,保證數據傳輸的安全性
  • 確認網站的真實性,在瀏覽器可通過網站的證書查看它認證后的真實信息,也可以通過CA機構頒發的安全簽章來查詢

 

HTTP請求過程

在客戶端(PC電腦或者手機)輸入URL,回車后即可看到頁面內容,那這個過程的原理是啥呢?

  1. 客戶端發送請求到服務器
  2. 服務器接收請求,處理和解析請求
  3. 服務器返回對應的響應給瀏覽器

 

通過瀏覽器開發者工具的network看請求信息

  1. Name:請求名稱,一般截取URL的最后一部分內容當名稱
  2. Status:響應狀態碼
  3. Type:請求的文檔類型
  4. Initiator:請求源,標記請求是由哪個對象或進程發起的
  5. Size:有三種類型 memory cache、disk cache、資源本身大小
  6. Time:完成一個請求事務的所需時間(發起請求-處理請求-返回響應)
  7. Waterfa:頁面請求過程的可視化瀑布

 

memory cache、disk cache區別

memory cache:字面意思就是內存緩存,代表這個資源直接從內存獲取, 不經過服務器,當關閉當前頁面時,這個資源就被釋放掉了

disk cache:硬盤緩存,代表這個資源從本地硬盤獲取,也不經過服務器,但不會因關閉當前頁面會釋放掉,下次打開該頁面,該資源仍然顯示disk cache

 

細品一個請求的正確組成

 

首先,請求的組成部分

Request從客戶端向服務端發送,可以分為4部分:請求方法(Request Method),請求網址(Request URL),請求頭(Request Headers),請求體(Request Body)

 

然后,看General部分 

已經包含了剛剛說的請求方法和請求網址

status code:響應狀態碼

Remote Address:遠程服務器的地址和端口

Referrer Policy:Referrer 判別策略

 

請求方法

 

請求頭

用來說明服務器要使用的附加信息,比較重要的信息有:Cookie、Refer、User-Agent

  • Accept:請求報頭域,用於指定客戶端可接受哪些類型的信息。
  • Accept-Language:指定客戶端可接受的語言類型。
  • Accept-Encoding:指定客戶端可接受的內容編碼。
  • origin:請求協議+請求域名
  • referer:請求資源地址,標識這個請求是從哪個頁面;作用:服務器拿到這信息做處理,如來源統計、防盜鏈處理
  • user-agent:俗稱  UA ,讓服務器識別客戶端的操作系統、系統版本、瀏覽器版本等信息。在做爬蟲時需要加上此信息,偽裝成瀏覽器
  • Content-type:互聯網媒體類型,也稱MIME類型,一般叫請求的媒體類型信息;常見的有:text/html 代表 HTML 格式,image/gif 代表 GIF 圖片,application/json 代表 JSON 類型
  • Cookie:存儲用戶信息,一般搭配服務端的Session使用

 

請求體

Query String Paramter:請求URL后面跟的請求參數,一般是GET請求的數據

Request Playload:請求數據,一般是POST請求的數據

 

POST請求提交數據方式和Content-Type的關系

 

 

細品響應的組成 

一般分為三部分:響應狀態碼(Response Status Code)、響應頭(Response Headers)、響應體(Response Body)

 

響應狀態碼

 

響應頭

  • 包含了:服務器對請求的應答信息,如 Content-Type、Server、Set-Cookie 等
  • 常見響應信息有
  • Date:響應產生的時間
  • Last-Modified:資源的最后修改時間
  • Content-Encoding:響應內容的編碼
  • Content-Length:響應內容長度
  • Server:包含服務器的信息,比如名稱、版本
  • Content-Type:響應內容的文檔類型,如果是接口響應,通常為application/json,也可能會加charset=utf-8指定字符集
  • Set-Cookie:設置 Cookies。響應頭中的 Set-Cookie 告訴瀏覽器需要將此內容放在 Cookies 中,下次請求攜帶 Cookies 請求
  • Expires:指定響應的過期時間,可以讓客戶端將加載的內容更新到緩存中,如果再次訪問時,可以直接從緩存中加載,降低服務器負載,縮短壓縮時間

 

響應體

響應返回的內容都在響應體中,比如請求網頁時,它的響應體就是網頁的 HTML 代碼;請求一張圖片時,它的響應體就是圖片的二進制數據;請求一個查詢接口時,它響應體就是json字符串

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM