1.http原理
url和uri
uri:全稱是uniform resource Identifier 統(tǒng)一資源標(biāo)識符爹脾,
url:全稱是universal resource locator 統(tǒng)一資源定位符
url是uli的子集
超文本:hypertext
http和https
htttp的全稱是hyper text transfer protocol,超文本傳輸協(xié)議揩魂;用于從網(wǎng)絡(luò)傳輸超文本數(shù)據(jù)到本地的瀏覽器的傳送協(xié)議膳沽,目前廣泛應(yīng)用的是http1.1版本
https:hyper text transfer protocol over secuer socket layer 是以安全為目標(biāo)的http通道,就是http的安全版,即http下加了ssl層
htts的安全基礎(chǔ)是ssl層为黎,傳輸內(nèi)容都是經(jīng)過ssl加密的
主要作用有:
1.建立一個信息安全通道來保證數(shù)據(jù)傳輸?shù)陌踩?/p>
2.確認(rèn)網(wǎng)站的真實性帆谍,凡是使用了https的網(wǎng)站伪朽,都可以通過點擊瀏覽器地址欄的鎖頭標(biāo)志來查看網(wǎng)站認(rèn)證后的真實信息,也可以通過ca機(jī)構(gòu)頒發(fā)的安全簽章來查詢
注意:如果ca證書不是被ca機(jī)構(gòu)信任的汛蝙,在瀏覽器上也會顯示不安全烈涮,如12306;如果要爬這樣的站點窖剑,就要設(shè)置忽略證書的選項坚洽,否則會提示ssl鏈接錯誤
http請求過程:這是瀏覽器向網(wǎng)站所在的服務(wù)器發(fā)送一個請求,網(wǎng)站服務(wù)器收到請求后進(jìn)行處理和解析西土,然后返回對應(yīng)的響應(yīng)讶舰,再傳回給瀏覽器;響應(yīng)里包含了頁面的源代碼等內(nèi)容较雕,瀏覽器再對其進(jìn)行解析辉巡,將網(wǎng)頁呈現(xiàn)啄寡;
請求
包含四部分:請求方法method刑桑,請求網(wǎng)址url囊陡,請求頭headers氓皱,請求體body
1.請求方法
常見的有g(shù)et和post
get請求和post請求的區(qū)別
get請求中的參數(shù)在url中兔朦,數(shù)據(jù)可以在url中看得到潭袱,而post請求的url不會包含這些數(shù)據(jù)挪略,數(shù)據(jù)都是通過表單形式傳輸?shù)睦悖瑫谡埱篌w中
get請求提交的數(shù)據(jù)最多只有1024字節(jié),而post方式?jīng)]限制
其他請求:
get:請求頁面杠娱,并返回頁面內(nèi)容
head:類似于get挽牢,只是返回的響應(yīng)中沒有具體內(nèi)容,用于獲取報頭
post:大多用于提交表單或上傳文件摊求,數(shù)據(jù)包含在請求體中
put:從客戶端向服務(wù)器傳送數(shù)據(jù)取代制定文檔中的內(nèi)容
delete:請求服務(wù)器刪除指定頁面
connect:把服務(wù)器當(dāng)作跳板禽拔,讓服務(wù)器代替客戶端訪問其他網(wǎng)頁
options:允許客戶端查看服務(wù)器的性能
trace:回顯服務(wù)器收到請求,主要用于測試或診斷
2請求的網(wǎng)址
即為統(tǒng)一資源定位符url室叉,它可以唯一確定我們想請求的資源
3.請求頭:
用來說明服務(wù)器要使用的附加信息睹栖,比較重要的信息有cookie,referer茧痕,user-agent等
常用的頭信息:
accept:氫氣報頭域野来,用于指定客戶端可接受那些類型的信息
accept-language:指定客戶端可接受的語言類型
acc-encoding:指定客戶端可接受的內(nèi)容編碼
host:用于指定請求資源的主機(jī)ip和端口號,其內(nèi)容為請求url的原始服務(wù)器或網(wǎng)關(guān)的位置踪旷,從http1.1開始必須有此內(nèi)容
cookies:網(wǎng)站為了辨別用戶進(jìn)行會話跟蹤而儲存在用戶本地的數(shù)據(jù)曼氛,主要是維護(hù)當(dāng)前訪問會話。
referer:此內(nèi)容用來標(biāo)識這個(請求是從哪個頁面發(fā)過來的令野,服務(wù)器可以拿到這一信息并做相應(yīng)的處理舀患,如做來源統(tǒng)計,防盜鏈處理等彩掐。
user-agent:簡稱UA构舟,是一個特俗的字符串頭,可以使服務(wù)器識別客戶是喲歐諾個的操作系統(tǒng)及版本堵幽,瀏覽器及版本等信息狗超,在做爬蟲時加上此信息,可以偽裝為瀏覽器朴下,如果不加很可能會被識別為爬蟲努咐。
content-type:互聯(lián)網(wǎng)媒體類型或者mime類型,在http協(xié)議消息頭中殴胧,它用來表示具體請求中的媒體類型信息渗稍,如text/html代表的html格式佩迟,image/gif代表gif圖片,application/json代表的json類型竿屹,在寫爬蟲時报强,大部分情況下都需要設(shè)定請求頭。
4.請求體
一般承載的內(nèi)容是post請求中的表單數(shù)據(jù)拱燃,對于get請求則為空
響應(yīng)
由服務(wù)端返回給客戶端秉溉,可以分為,響應(yīng)狀態(tài)碼碗誉,響應(yīng)頭召嘶,響應(yīng)體。
響應(yīng)頭:
包含服務(wù)器對請求的應(yīng)答信息
常用的頭信息:
date:標(biāo)識響應(yīng)產(chǎn)生的時間
last-modified:指定響應(yīng)內(nèi)容的編碼
content-encoding:指定響應(yīng)內(nèi)容的編碼
server:包含服務(wù)器的信息哮缺,比如名稱弄跌,版本號等
content-type:文檔類型,指定返回的數(shù)據(jù)類型是什么尝苇,如text/html代表返回html文檔铛只,application/x-javascript則代表返回javascript文件,image/jpeg則代表返回圖片
set-cookie:設(shè)置cookies糠溜,響應(yīng)頭中的set-cookie 告訴瀏覽器需要將此內(nèi)容放在cookies中格仲,下次請求攜帶cookies請求
expires:指定響應(yīng)的過期時間,可以使代理服務(wù)器或瀏覽器將加載的內(nèi)容更新到緩存中诵冒,再次訪問時直接從緩存中加載
響應(yīng)體:響應(yīng)正文的數(shù)據(jù)都在響應(yīng)體中