1. 程式人生 > >HTTP基本原理

HTTP基本原理

開發 hyper ans 開發者 爬蟲 泄露 connect option 服務端

URI 和 URL

這裏我們先了解一下 URI和 URL,URI 的全稱為 UniformResource Identifier,即統一資源標誌符, URL 的全稱為 Universal Resource Locator,即統一資源定位符。

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

超文本

我們再了解一個概念一一超文本,其英文名稱叫作 hypertext,我們在瀏覽棉裏看到的網 頁就是超文本解析而成的, 其網頁源代碼是一系列 HTML代碼, 裏面包含了一系列標簽,比如 img顯 示圖片, p 指定顯示段落等 。 瀏覽器解析這些標簽後,便形成了我們平常看到的網頁,而網頁的源代 碼 HTML 就可以稱作超文本 。

例如,我們在 Chrome瀏覽器裏面打開任意一個頁面,如淘寶首頁,右擊任一地方井選擇“檢查” 項(或者直接按快捷鍵 Fl2 ), 即可打開瀏覽器的開發者工具,這時在 Elements 選項卡即可看到當前 阿頁的源代碼,這些源代碼都是超文本。

HTTP 和 HTTPS

在淘寶的首頁 https://www.taobao.com/中, URL 的開頭會有 http或 https,這就是訪問資源需要的 協議類型。 有時,我們還會看到ftp、sfrp 、 smb開頭的 URL,它們都是協議類型。 在爬蟲中,我們抓 取的頁面通常就是 http或 ht耶協議的,這裏首先了解一下這兩個協議的含義 。

HTTP 的全稱是 Hyper Text Transfer Protocol,中文名 叫作超文本傳輸協議 。 HTTP 協議是用於從 網絡傳輸超文本數據到本地瀏覽器的傳送協議,它能保證高效而準確地傳送超文本文檔。 HTTP 由萬 維網協會( World Wide Web Consortium )和 Internet工作小組 IETF ( Internet Engineering Task Force ) 共同合作制定的規範,目前廣泛使用的是 HTTP 1.1版本。

而某些網站雖然使用了 HTTPS協議,但還是會被瀏覽器提示不安全,例如我們在 Chrome瀏覽器裏面打開 12306,鏈接為: https://www.l2306.cn/,這時瀏覽器就會提示“您的連接不是私密連接”這 樣的話,

這是因為 12306的 CA證書是中國鐵道部自行簽發的,而這個證書是不被 CA機構信任的,所以 這裏證書驗證就不會通過而提示這樣的話,但是實際上它的數據傳輸依然是經過 SSL加密的。 如果要爬取這樣的站點,就需要設置忽略證書的選項,否則會提示 SSL鏈接錯誤。

請求

請求,由客戶端向服務端發出,可以分為 4部分內容:請求方法( Request Method )、 請求的網址 ( Request URL )、請求頭( Request Headers )、 請求體( Request Body )。

1. 請求方法

常見的請求方法有兩種: GET和POST。

在瀏覽器中直接輸入 URL 井回車,這便發起了一個 GET 請求,請求的參數會直接包含到 URL 裏 。 例如,在百度中搜索 Python,這就是一個 GET請求,鏈接為 htψs://www.baidu.corn/s?wd=Python , 其中 URL 中包含了請求的參數信息,這裏參數 wd 表示要搜尋的關鍵字。 POST請求大多在表單提交 時發起 。 比如,對於一個登錄表單,輸入用戶名和密碼後,點擊“登錄”按鈕,這通常會發起一個 POST 請求,其數據通常以表單的形式傳輸,而不會體現在 URL 中 。

GET 和 POST請求方法有如下區別 。

GET請求中的參數包含在 URL裏面,數據可以在 URL中看到,而 POST請求的 URL不會包 含這些數據,數據都是通過表單形式傳輸的,會包含在請求體中 。

GET請求提交的數據最多只有 1024字節,而 POST方式沒有限制 。

一般來說,登錄時,需要提交用戶名和密碼,其中包含了敏感信息,使用 GET 方式請求的話, 密碼就會暴露在 URL裏面,造成密碼泄露,所以這裏最好以 POST方式發送。 上傳文件時,由於文件 內容比較大,也會選用 POST方式。

我們平常遇到的絕大部分請求都是 GET或 POST請求,另外還有一些請求方法,如 GET、HEAD、 POST、 PUT、 DELETE、 OPTIONS、 CONNECT、 TRACE等

HTTP基本原理