1. 程式人生 > >【爬蟲學習筆記】網絡協議及請求基礎

【爬蟲學習筆記】網絡協議及請求基礎

adding 數據 one con 響應狀態 基礎 referer html tran

http協議與https協議

HTTP協議(全稱為HyperText Transfer Protocol,超文本傳輸協議),是發布和接收HTML頁面的方法,其服務端口號為80。

HTTPS協議為HTTP協議的加密版本,其在HTTP下加入了SSL層,服務端口號為443。

URL結構解析

URL(Uniform Resource Locator,統一資源定位符),用於從互聯網上獲取某個資源,其組成格式如下:scheme://host:port/path/?query-string=xxx#anchor

scheme:代表訪問協議類型,如http、https和ftp等。

host:域名,比如 “cn.bing.com”。

port:端口號,訪問一個網站時瀏覽器默認使用80端口。

path:查找路徑,比如 “https://www.imooc.com/course/list”,後面的course/list就是path。

query-string:查詢字符串,比如 “https://cn.bing.com/search?q=python”,後面的q=python就是查詢字符串。

anchor:錨點,用於頁面定位。

瀏覽器請求一個url,瀏覽器會對url進行編碼——除英文字母,數字和部分符號外,其他的全部使用百分號與十六進制碼值進行編碼。如在Chrome中地址欄輸入“https://cn.bing.com/search?q=博客園”,則會自動解析為“https://cn.bing.com/search?q=%E5%8D%9A%E5%AE%A2%E5%9B%AD”

http請求發送過程

首先,用戶在瀏覽器地址欄中輸入URL並回車後瀏覽器會向HTTP服務器發送一個Request請求,服務器接收到請求後會返回一個Response文件對象給瀏覽器。此後瀏覽器分析Response中的HTML,同時發現其中所引用的其他文件(如Image、Js、CSS等),瀏覽器再次向服務器發送這些文件的request請求以下載文件。當所有文件成功下載完畢後,瀏覽器便可以將網頁完整地構造顯示出來。

如下為訪問微軟Bing主頁的請求:

技術分享圖片

請求方法

在HTTP協議中,定義了八種請求方法(參見下表)

方法 描述
GET 請求頁面,並返回頁面內容

HEAD

類似於GET請求,只不過返回的響應zho那個沒有具體的內容,用於獲取報頭
POST 大多用於提交表單或上傳文件,數據包含在請求體中
PUT 從客戶端向服務器傳送的數據取代指定文檔中的內容
DELETE 請求服務器刪除指定的頁面
CONNECT 把服務器當作跳板,讓服務器代替客戶端訪問其他網頁
OPTIONS 允許客戶端查看服務器的性能
TRACE 回顯服務器收到的請求,主要用於測試或診斷

其中,GET與POST請求較為常用。一般情況下,GET僅用於獲取數據,POST用於上傳數據,但有時為應對反爬機制,需要用POST請求代替GET請求。

常用請求頭參數

在HTTP協議中,請求頭用來說明要傳遞給服務器使用的附加信息,如下為訪問拉勾網的請求頭。

技術分享圖片

其中較為重要的參數有User-Agent、Referer 和 Cookie。

User-Agent:一個特殊字符串頭,可以使服務器識別客戶使用的操作系統及版本、瀏覽器及版本等信息。在爬蟲中可以設置此信息來偽裝瀏覽器以反-反爬蟲。

Referer:用於標識請求是從哪個頁面來的。這個一般也可以用來做反爬蟲技術——只有從指定頁面請求才給予響應。

Cookie:HTTP協議無狀態的,即服務器在兩次連續的請求中不會保存是哪個用戶發送的請求,而為了維持前後會話完整性,可以在發送請求時通過附加存儲在用戶本地的Cookie來讓服務器識別出用戶並查出當前狀態。

響應

響應,由服務器返回給客戶端,其中包括三部分內容——響應狀態碼、響應頭和響應體。

1.響應狀態碼

用於表示服務器的相應狀態,常用狀態碼有200(成功,服務器正常返回數據)、 301(永久重定向) 、302(臨時重定向)、400(請求錯誤,服務器無法解析該請求)、403(禁止訪問,服務器拒絕此請求)、404(未找到,服務器找不到請求的頁面)、500(服務器內部錯誤)。

2.響應頭

包含一些服務器對請求的應答信息,如Content-Type(應答的文檔類型,如text/html返回HTML文檔、image/jpeg返回圖片)、Server(服務器信息,如名稱、版本號等)、Set-Cookie(設置Cookies)、Expires(指定響應的過期時間)等。

如拉勾網響應頭信息:

技術分享圖片

3.響應體

表示響應的正文數據,如網頁的HTML代碼、圖片的二進制數據等。爬蟲請求網頁後要解析的內容就是響應體內容。

【爬蟲學習筆記】網絡協議及請求基礎