http在链接中加入用户名_爬虫基础——HTTP基本原理
URI和URL
URI:統(tǒng)一資源標(biāo)志符(全稱Uniform Resource Identifier )
URL:統(tǒng)一資源定位符(全稱Universal Resource Locator )
URL簡單來說就是網(wǎng)頁鏈接,比如下面這個百度的網(wǎng)址,就是一個URL
URI和URL是父與子的關(guān)系,URL是URI的子集
URI還有一個子集URN,URN是統(tǒng)一資源名稱,只命名資源不定位資源,互聯(lián)網(wǎng)中用的非常少
為了簡單記憶,一般網(wǎng)頁鏈接我們可以統(tǒng)稱為URL
超文本
超文本=網(wǎng)頁源代碼(HTML代碼)
我們看到的所有網(wǎng)頁,都是超文本解析而成的。
如何查看超文本
打開任意網(wǎng)頁→右鍵→檢查(審查元素)
HTTP和HTTPS
在URL的開頭會有http或https,比如知乎的網(wǎng)址中,開頭是https。
https://www.zhihu.com/無論是http還是https,它們都是一種協(xié)議類型。
HTTP的中文名叫作超文本傳輸協(xié)議
HTTP和HTTPS的區(qū)別是,HTTPS是HTTP的安全版,它傳輸?shù)膬?nèi)容都是經(jīng)過SSL加密的。
HTTPS的作用是建立一個信息安全通道來保證數(shù)據(jù)傳輸安全。凡是使用了HTTPS的網(wǎng)站,都可以通過點擊瀏覽器地址欄的鎖頭標(biāo)志來查看網(wǎng)站認(rèn)證后的真實信息。
目前越來越多的網(wǎng)站和App都已經(jīng)向HTTPS方向發(fā)展
自2017年1月1日以后,蘋果公司強(qiáng)制要求所有的IOS App都必須使用HTTPS加密,否則無法在應(yīng)用商店上架。谷歌從2017年1月開推出的Chrome56開始,對未進(jìn)行HTTPS加密的網(wǎng)址鏈接亮出風(fēng)險提示。
騰訊微信小程序的官方需求文檔要求后臺使用HTTPS請求進(jìn)行網(wǎng)絡(luò)通信,不滿足條件的域名和協(xié)議無法請求。
HTTP請求過程
步驟:
【1】輸入URL
【2】瀏覽器向網(wǎng)站所在服務(wù)器發(fā)送請求
【3】網(wǎng)站服務(wù)器接收到請求后進(jìn)行處理和解析
【4】將響應(yīng)內(nèi)容傳回給瀏覽器,包含頁面的源碼(超文本)
【5】瀏覽器對返回內(nèi)容進(jìn)行解析,然后呈現(xiàn)結(jié)果。
訪問示例
下面我們使用Chrome瀏覽器,訪問百度http://www.baidu.com,進(jìn)行詳細(xì)說明。
首先,打開Chrome瀏覽器,右擊并選擇“檢查”選項,點擊Network選項卡
然后輸入百度的URL后回車,觀察這個過程發(fā)生了怎樣的網(wǎng)絡(luò)請求。
我們觀察第一個網(wǎng)絡(luò)請求:http://www.baidu.com。
各列含義如下:
- 第一列Name:請求的名稱,一般為URL的最后一部分
- 第二列Status:響應(yīng)的狀態(tài)碼,200,代表響應(yīng)正常
- 第三列Type:請求的文檔類型,document,代表我們請求的是一個HTML文檔。
- 第四列Initiator:請求源,用來標(biāo)記請求是哪個對象或進(jìn)程發(fā)起的。
- 第五列Size:從服務(wù)器下載的文件和請求的資源大小。
- 第六列Time:發(fā)起請求到獲取響應(yīng)所用時間
- 第七列Waterfall:網(wǎng)絡(luò)請求的可視化瀑布流
點擊這個條目,查看詳細(xì)信息
General部分
Request URL:請求的URL
Request Method:請求方法
Status Code:響應(yīng)狀態(tài)碼
Remote Address:遠(yuǎn)程服務(wù)器的地址和端口
Referrer Policy:Referrer判別策略
Response Headers 和 Request Headers 分別代表響應(yīng)頭和請求頭
Response Headers:響應(yīng)頭就是響應(yīng)的一部分,例如其中包含了服務(wù)器的類型、文檔類型、日期等信息,瀏覽器接受到響應(yīng)后,會解析響應(yīng)內(nèi)容,進(jìn)而呈現(xiàn)網(wǎng)頁內(nèi)容。
Request Headers:請求頭里代表許多請求信息,例如瀏覽器標(biāo)識、Cookies、Host等信息。服務(wù)器會根據(jù)請求頭內(nèi)的信息判斷請求是否合法,進(jìn)而作出對應(yīng)響應(yīng)。
請求
請求是由客戶端向服務(wù)端發(fā)出,可以分為4部分內(nèi)容:
- 請求方法(Request Method)
- 請求的網(wǎng)址(Request URL)
- 請求頭(Request Headers)
- 請求體(Request Body)
1.請求方法
常見的的請求方法有兩種:GET和POST
GET:在瀏覽器中直接輸入URL并回車,便發(fā)起了一個GET請求,請求參數(shù)會直接包含到URL里。例如,在百度中搜索Pyhon,鏈接為 https://www.baidu.com/s?wd=Python,其中URL中包含了請求的參數(shù)信息,這里參數(shù)wd表示要搜尋的關(guān)鍵字。POST:對于一個登陸表單,輸入用戶名和密碼后,點擊“登陸”按鈕,這通常會發(fā)起一個POST請求,其數(shù)據(jù)通常以表單形式傳輸,而不會體現(xiàn)在URL中。(因為需要提交的用戶名和密碼包含了敏感信息,使用GET方式請求的話,密碼會暴露在URL里。)GET和POST請求的區(qū)別:
【1】GET請求的參數(shù)包含在URL里面,數(shù)據(jù)可以在URL中看到,而POST請求的URL不會包含這些數(shù)據(jù),數(shù)據(jù)通常以表單形式傳輸,會包含在請求體中。
【2】GET請求提交的數(shù)據(jù)最多只有1024節(jié),POST方式?jīng)]有限制。
我們平時接觸到的絕大部分請求都是GET和POST請求,另外還有其他的請求方法。
詳情可查詢( HTTP 請求方法 | 菜鳥教程)
2.請求的網(wǎng)址
即為統(tǒng)一資源定位符URL,它可以唯一確定我們想請求的資源。
3.請求頭
用來說明服務(wù)器要使用的附加信息,比較重要的信息有Cookie、Referer、User-Agent等。
常用的頭信息:
Accept:請求報頭域,用于指定客戶端可接受那些類型的信息。
Accept-Encoding:指定客戶端客可接受的內(nèi)容編碼。
Accept-Language:指定客戶端可接受的語言類型。
Host:用于指定請求資源的主機(jī)IP和端口號,其內(nèi)容為請求URL的原始服務(wù)器或網(wǎng)關(guān)位置。
Cookie:也常用復(fù)數(shù)形式Cookies,這是網(wǎng)站為了辨別用戶進(jìn)行會話跟蹤而存儲在用戶本地的數(shù)據(jù)。它的主要功能是維持當(dāng)前訪問會話。
舉例:你輸入了用戶名和密碼登陸了知乎,服務(wù)器會用會話保存登陸狀態(tài)信息,后面我們每次刷新或請求知乎的其他頁面時,我們始終會保持登陸狀態(tài)。
這就是Cookie的作用,Cookie的信息標(biāo)識了我們對應(yīng)服務(wù)器的會話,每次瀏覽器在請求知乎的頁面時,都會在請求頭中加上Cookie并發(fā)送給服務(wù)器,服務(wù)器通過Cookie識別出你,并查出當(dāng)前是登陸狀態(tài),所以返回結(jié)果就是登陸之后才能看到的網(wǎng)頁內(nèi)容。
Referer:此內(nèi)容用來標(biāo)識這個請求是從哪個頁面發(fā)過來,服務(wù)器可以拿這個信息做來源統(tǒng)計、防盜鏈處理等。
User-Agent:簡稱UA,它是一個特殊字符串頭,可以使服務(wù)器識別客戶使用的操作系統(tǒng)及版本、瀏覽器及版本信息,相當(dāng)于瀏覽器的身份證。在做爬蟲時加上這個信息,可以偽裝為瀏覽器,如果不加,很可能會被識別為爬蟲。
Content-Type:也叫互聯(lián)網(wǎng)媒體類型或者M(jìn)IME類型,在HTTP下協(xié)議消息頭中,它用來標(biāo)識具體請求中的媒體類型信息。
例如:text/html代表HTML格,image/gif代表GIF圖片,applocation/json代表JOSN類型。
4.請求體
一般承載的內(nèi)容是POST請求中的表單數(shù)據(jù),而對于GET請求,請求體則為空。
在爬蟲中,如果要構(gòu)造POST請求,需要使用正確的Content-Type,并了解各種請求庫的各個參數(shù)設(shè)置時,使用的是哪種Content-Type,不然可能會導(dǎo)致POST提交后無法正常響應(yīng)。
詳情可以查詢(HTTP content-type)
響應(yīng)
響應(yīng)由服務(wù)端放回給客戶端,可以分為三部分:
- 響應(yīng)狀態(tài)碼(Response Status Code)
- 響應(yīng)頭(Response Headers)
- 響應(yīng)體(Response Body)
1.響應(yīng)狀態(tài)碼
響應(yīng)狀態(tài)碼表示服務(wù)器的響應(yīng)狀態(tài),例如200代表服務(wù)器正常響應(yīng),404代表頁面未找到,500代表服務(wù)器內(nèi)部發(fā)生錯誤。
在爬蟲中,我們可以根據(jù)狀態(tài)碼來判斷服務(wù)器響應(yīng)狀態(tài),如狀態(tài)碼200,則證明成功返回數(shù)據(jù),再進(jìn)行進(jìn)一步的處理,否則直接忽略。
常見狀態(tài)代碼及錯誤原因可以查詢(HTTP狀態(tài)碼 | 菜鳥教程)
2.響應(yīng)頭
響應(yīng)頭包含了服務(wù)器對請求的應(yīng)答信息,如Content-Type、Server、Set-Cookie等。
常用的頭信息:
Date:標(biāo)識響應(yīng)產(chǎn)生的時間。
Last-Modified:指定資源的最后修改時間。
Expires:指定響應(yīng)的過期時間,可以使代理服務(wù)器或瀏覽器將加載的內(nèi)容更新到緩存中。如果再次訪問時,就可以直接從緩存中加載,降低服務(wù)器負(fù)載,縮短加載時間。
Content-Encoding:指定響應(yīng)內(nèi)容的編碼。
Server:包含服務(wù)器的信息,比如名稱、版本號等。
Content-Type:文檔類型,指定返回的數(shù)據(jù)類型是什么,如text/html代表返回HTML文檔,application/x-javascript則代表返回Javascript文件,image/jpeg則代表返回圖片。
Set-Cookie:設(shè)置Cookie,響應(yīng)頭中的Set-Cookie告訴瀏覽器需要將此內(nèi)容放在Cookie中,下次請求攜帶Cookie請求。
3.響應(yīng)體
響應(yīng)體是最重要的內(nèi)容,響應(yīng)的正文數(shù)據(jù)都在響應(yīng)體中。
比如請求網(wǎng)頁時,它的響應(yīng)體就是網(wǎng)頁的HTML代碼;請求一張圖片時,它的響應(yīng)體就是圖片的二進(jìn)制數(shù)據(jù),我們做爬蟲請求網(wǎng)頁后,要解析的內(nèi)容就是響應(yīng)體。
在瀏覽器開發(fā)者工具中點擊Preview,就可以看到網(wǎng)頁的源代碼,也就是響應(yīng)體的內(nèi)容,它是解析的目標(biāo)
在做爬蟲時,我們主要通過響應(yīng)體得到網(wǎng)頁的源代碼、JSON數(shù)據(jù)等,然后從中做相應(yīng)內(nèi)容的提取。
本文總結(jié)參考《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)》
總結(jié)
以上是生活随笔為你收集整理的http在链接中加入用户名_爬虫基础——HTTP基本原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python booleans_Pyth
- 下一篇: xml显示浏览器标签_浅析浏览器书签的导