摘要:協(xié)議的講解本文章屬于爬蟲(chóng)入門(mén)到精通系統(tǒng)教程第三講什么是協(xié)議引用自維基百科超文本傳輸協(xié)議英文,縮寫(xiě)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。通過(guò)或者協(xié)議請(qǐng)求的資源由統(tǒng)一資源標(biāo)識(shí)符,來(lái)標(biāo)識(shí)。假定其下層協(xié)議提供可靠的傳輸。
HTTP協(xié)議的講解
本文章屬于爬蟲(chóng)入門(mén)到精通系統(tǒng)教程第三講
什么是HTTP協(xié)議?引用自維基百科
一個(gè)實(shí)例超文本傳輸協(xié)議(英文:HyperText Transfer Protocol,縮寫(xiě):HTTP)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。通過(guò)HTTP或者HTTPS協(xié)議請(qǐng)求的資源由統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifiers,URI)來(lái)標(biāo)識(shí)。
HTTP的發(fā)展是由蒂姆·伯納斯-李于1989年在歐洲核子研究組織(CERN)所發(fā)起。由萬(wàn)維網(wǎng)協(xié)會(huì)(World Wide Web Consortium,W3C)和互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)制定標(biāo)準(zhǔn),最終發(fā)布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定義了HTTP協(xié)議中現(xiàn)今廣泛使用的一個(gè)版本——HTTP 1.1。
2014年12月,互聯(lián)網(wǎng)工程任務(wù)組(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小組將HTTP/2標(biāo)準(zhǔn)提議遞交至IESG進(jìn)行討論[1],于2015年2月17日被批準(zhǔn)。[2] HTTP/2標(biāo)準(zhǔn)于2015年5月以RFC 7540正式發(fā)表,替換HTTP 1.1成為HTTP的實(shí)現(xiàn)標(biāo)準(zhǔn)。[3]HTTP是一個(gè)客戶(hù)端終端(用戶(hù))和服務(wù)器端(網(wǎng)站)請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP)。通過(guò)使用網(wǎng)頁(yè)瀏覽器、網(wǎng)絡(luò)爬蟲(chóng)或者其它的工具,客戶(hù)端發(fā)起一個(gè)HTTP請(qǐng)求到服務(wù)器上指定端口(默認(rèn)端口為80)。我們稱(chēng)這個(gè)客戶(hù)端為用戶(hù)代理程序(user agent)。應(yīng)答的服務(wù)器上存儲(chǔ)著一些資源,比如HTML文件和圖像。我們稱(chēng)這個(gè)應(yīng)答服務(wù)器為源服務(wù)器(origin server)。在用戶(hù)代理和源服務(wù)器中間可能存在多個(gè)“中間層”,比如代理服務(wù)器、網(wǎng)關(guān)或者隧道(tunnel)。
盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應(yīng)用,HTTP協(xié)議中,并沒(méi)有規(guī)定必須使用它或它支持的層。事實(shí)上,HTTP可以在任何互聯(lián)網(wǎng)協(xié)議上,或其他網(wǎng)絡(luò)上實(shí)現(xiàn)。HTTP假定其下層協(xié)議提供可靠的傳輸。因此,任何能夠提供這種保證的協(xié)議都可以被其使用。因此也就是其在TCP/IP協(xié)議族使用TCP作為其傳輸層。
通常,由HTTP客戶(hù)端發(fā)起一個(gè)請(qǐng)求,創(chuàng)建一個(gè)到服務(wù)器指定端口(默認(rèn)是80端口)的TCP連接。HTTP服務(wù)器則在那個(gè)端口監(jiān)聽(tīng)客戶(hù)端的請(qǐng)求。一旦收到請(qǐng)求,服務(wù)器會(huì)向客戶(hù)端返回一個(gè)狀態(tài),比如"HTTP/1.1 200 OK",以及返回的內(nèi)容,如請(qǐng)求的文件、錯(cuò)誤消息、或者其它信息。
打開(kāi)爬蟲(chóng)從入門(mén)到精通系統(tǒng)教程---目錄 這個(gè)網(wǎng)頁(yè)
按鍵盤(pán)上的F12(開(kāi)發(fā)者工具)
點(diǎn)擊鍵盤(pán)上的F5刷新下網(wǎng)頁(yè)
點(diǎn)擊Network
點(diǎn)擊Doc
應(yīng)該會(huì)看到如下界面
然后我們點(diǎn)擊25296437
應(yīng)該會(huì)看到如下界面
Request URL:https://zhuanlan.zhihu.com/p/25296437 (爬蟲(chóng)會(huì)用到)
這個(gè)對(duì)應(yīng)HTTP協(xié)議中的統(tǒng)一資源定位符也就是我們打開(kāi)的網(wǎng)址
Request Method:GET(爬蟲(chóng)會(huì)用到)
這個(gè)對(duì)應(yīng)HTTP協(xié)議中的請(qǐng)求方法,我們這次用的是GET
請(qǐng)求方法有以下這些,常用的是GET,POST
GET:向指定的資源發(fā)出“顯示”請(qǐng)求。使用GET方法應(yīng)該只用在讀取數(shù)據(jù),而不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中,例如在Web Application中。其中一個(gè)原因是GET可能會(huì)被網(wǎng)絡(luò)蜘蛛等隨意訪(fǎng)問(wèn)。參見(jiàn)安全方法
POST:向指定資源提交數(shù)據(jù),請(qǐng)求服務(wù)器進(jìn)行處理(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求本文中。這個(gè)請(qǐng)求可能會(huì)創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有。
OPTIONS:這個(gè)方法可使服務(wù)器傳回該資源所支持的所有HTTP請(qǐng)求方法。用"*"來(lái)代替資源名稱(chēng),向Web服務(wù)器發(fā)送OPTIONS請(qǐng)求,可以測(cè)試服務(wù)器功能是否正常運(yùn)作。
HEAD:與GET方法一樣,都是向服務(wù)器發(fā)出指定資源的請(qǐng)求。只不過(guò)服務(wù)器將不傳回資源的本文部分。它的好處在于,使用這個(gè)方法可以在不必傳輸全部?jī)?nèi)容的情況下,就可以獲取其中“關(guān)于該資源的信息”(元信息或稱(chēng)元數(shù)據(jù))。
PUT:向指定資源位置上傳其最新內(nèi)容。
DELETE:請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。
TRACE:回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。
CONNECT:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。通常用于SSL加密服務(wù)器的鏈接(經(jīng)由非加密的HTTP代理服務(wù)器)。
Status Code:200 OK(爬蟲(chóng)會(huì)用到)
這個(gè)對(duì)應(yīng)HTTP協(xié)議中的狀態(tài)碼,我們這次返回的是200 OK、
所有HTTP響應(yīng)的第一行都是狀態(tài)行,依次是當(dāng)前HTTP版本號(hào),3位數(shù)字組成的狀態(tài)代碼,以及描述狀態(tài)的短語(yǔ),彼此由空格分隔。
狀態(tài)代碼的第一個(gè)數(shù)字代表當(dāng)前響應(yīng)的類(lèi)型:
1xx消息——請(qǐng)求已被服務(wù)器接收,繼續(xù)處理
2xx成功——請(qǐng)求已成功被服務(wù)器接收、理解、并接受
3xx重定向——需要后續(xù)操作才能完成這一請(qǐng)求
4xx請(qǐng)求錯(cuò)誤——請(qǐng)求含有詞法錯(cuò)誤或者無(wú)法被執(zhí)行
5xx服務(wù)器錯(cuò)誤——服務(wù)器在處理某個(gè)正確請(qǐng)求時(shí)發(fā)生錯(cuò)誤
常見(jiàn)狀態(tài)代碼、狀態(tài)描述、說(shuō)明:
200 OK //請(qǐng)求成功
400 Bad Request //客戶(hù)端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解
401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶(hù)端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常
Requests Headers(請(qǐng)求頭)Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8(爬蟲(chóng)會(huì)用到)
Accept請(qǐng)求報(bào)頭域用于指定客戶(hù)端接受哪些類(lèi)型的信息。eg:Accept:image/gif,表明客戶(hù)端希望接受GIF圖象格式的資源;Accept:text/html,表明客戶(hù)端希望接受html文本。
Accept-Encoding:gzip, deflate, sdch, br
Accept-Encoding請(qǐng)求報(bào)頭域類(lèi)似于A(yíng)ccept,但是它是用于指定可接受的內(nèi)容編碼。eg:Accept-Encoding:gzip.deflate.如果請(qǐng)求消息中沒(méi)有設(shè)置這個(gè)域服務(wù)器假定客戶(hù)端對(duì)各種內(nèi)容編碼都可以接受。
Accept-Language:zh-CN,zh;q=0.8
Accept-Language請(qǐng)求報(bào)頭域類(lèi)似于A(yíng)ccept,但是它是用于指定一種自然語(yǔ)言。eg:Accept-Language:zh-cn.如果請(qǐng)求消息中沒(méi)有設(shè)置這個(gè)報(bào)頭域,服務(wù)器假定客戶(hù)端對(duì)各種語(yǔ)言都可以接受
Cache-Control:no-cache
Cache-Control 是用來(lái)控制網(wǎng)頁(yè)的緩存,詳細(xì)可以Cache-control_百度百科
Connection:keep-alive
HTTP持久連接(HTTP persistent connection,也稱(chēng)作HTTP keep-alive或HTTP connection reuse)是使用同一個(gè)TCP連接來(lái)發(fā)送和接收多個(gè)HTTP請(qǐng)求/應(yīng)答,而不是為每一個(gè)新的請(qǐng)求/應(yīng)答打開(kāi)新的連接的方法。
詳情介紹請(qǐng)參考HTTP持久連接
Cookie:d_c0="AACAWNtZswqPTnJ8dFXqaygiq82ekPD5_-xxxx(爬蟲(chóng)會(huì)用到)
Cookie(復(fù)數(shù)形態(tài)Cookies),中文名稱(chēng)為“小型文本文件”或“小甜餅”[1],指某些網(wǎng)站為了辨別用戶(hù)身份而儲(chǔ)存在用戶(hù)本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。定義于RFC2109。是網(wǎng)景公司的前雇員盧·蒙特利在1993年3月的發(fā)明[2]。詳情介紹請(qǐng)參考Cookie
舉個(gè)例子,當(dāng)我登錄知乎后,知乎會(huì)給我一個(gè)cookie,然后我在以后的一段時(shí)間內(nèi),每次打開(kāi)知乎,都不需要重新登錄。這是因?yàn)闉g覽器每次都會(huì)把我之前存儲(chǔ)的cookie帶上。
Host:zhuanlan.zhihu.com
當(dāng)前請(qǐng)求網(wǎng)址的請(qǐng)求域
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36(爬蟲(chóng)會(huì)用到)
用戶(hù)是通過(guò)什么工具來(lái)請(qǐng)求的,(因?yàn)槲矣玫腉oogle瀏覽器,所以顯示的是Chrome)
Referer:https://www.zhihu.com/people/pa-chong-21/activities(爬蟲(chóng)會(huì)用到)
是通過(guò)哪個(gè)頁(yè)面到當(dāng)前頁(yè)面的(也就是上一個(gè)頁(yè)面是什么?當(dāng)前截圖里面沒(méi)有)
舉個(gè)例子,當(dāng)我是通過(guò)百度搜索頁(yè)面點(diǎn)到當(dāng)前頁(yè)面的,那么Referer就是百度搜索頁(yè)
If-Modified-Since:Wed, 15 Feb 2017 09:14:13 GMT
If-None-Match:W/"58a41be5-190aa"
Last-Modified:Wed, 15 Feb 2017 09:14:13 GMT
ETag:"58a41be5-190aa"
這4個(gè)一般靜態(tài)頁(yè)面會(huì)用到 If-Modified-Since,If-None-Match
這兩個(gè)是請(qǐng)求頭,ETag,Last-Modified是返回頭(服務(wù)器返回的)
如果If-Modified-Since的值和Last-Modified相等 則表明當(dāng)前請(qǐng)求的內(nèi)容沒(méi)有變動(dòng),服務(wù)器返回 Status Code:304 Not Modified
If-None-Match和ETag 同理
看完本篇文章后,你應(yīng)該要
大概了解什么是HTTP協(xié)議
HTTP常見(jiàn)請(qǐng)求方法有哪幾種?
HTTP常見(jiàn)狀態(tài)碼有哪些?
HTTP請(qǐng)求頭中,大概了解Accept,Cookie,User-Agent,Referer是干啥的?
最后的最后,收藏的大哥們,能幫忙點(diǎn)個(gè)贊么~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/38576.html
摘要:網(wǎng)頁(yè)的下載本文章屬于爬蟲(chóng)入門(mén)到精通系統(tǒng)教程第四講在爬蟲(chóng)入門(mén)到精通第二講中,我們了解了協(xié)議,那么我們現(xiàn)在使用這些協(xié)議來(lái)快速爬蟲(chóng)吧本文的目標(biāo)當(dāng)你看完本文后,你應(yīng)該能爬取幾乎任何的網(wǎng)頁(yè)使用抓包抓包就是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲重發(fā)編輯轉(zhuǎn) 網(wǎng)頁(yè)的下載 本文章屬于爬蟲(chóng)入門(mén)到精通系統(tǒng)教程第四講 在爬蟲(chóng)入門(mén)到精通第二講中,我們了解了HTTP協(xié)議,那么我們現(xiàn)在使用這些協(xié)議來(lái)快速爬蟲(chóng)吧 本文的...
摘要:本文章屬于爬蟲(chóng)入門(mén)到精通系統(tǒng)教程第七講直接開(kāi)始案例吧。本次我們實(shí)現(xiàn)如何模擬登陸知乎。 本文章屬于爬蟲(chóng)入門(mén)到精通系統(tǒng)教程第七講 直接開(kāi)始案例吧。 本次我們實(shí)現(xiàn)如何模擬登陸知乎。 1.抓包 首先打開(kāi)知乎登錄頁(yè) 知乎 - 與世界分享你的知識(shí)、經(jīng)驗(yàn)和見(jiàn)解 注意打開(kāi)開(kāi)發(fā)者工具后點(diǎn)擊preserve log,密碼記得故意輸入錯(cuò)誤,然后點(diǎn)擊登錄 showImg(https://segmentfaul...
摘要:循環(huán)次數(shù)勾選為永遠(yuǎn)就是這個(gè)用戶(hù)一直重復(fù)執(zhí)行登錄的操作調(diào)度器勾選調(diào)度器可以更加靈活的控制線(xiàn)程組執(zhí)行的時(shí)間持續(xù)時(shí)間線(xiàn)程組執(zhí)行時(shí)間,在該時(shí)間內(nèi),線(xiàn)程組會(huì)一直重復(fù)執(zhí)行。 目錄 一、線(xiàn)程組 1、添加線(xiàn)程組 2、線(xiàn)程組設(shè)置 二、HTTP請(qǐng)求默認(rèn)值 1、添加HTTP請(qǐng)求默認(rèn)值 三、HTTP請(qǐng)求 1、添加...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱(chēng)是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開(kāi)始之前,我們先來(lái)看這樣一個(gè)提問(wèn): pyth...
閱讀 2661·2021-10-19 11:41
閱讀 2483·2021-09-01 10:32
閱讀 3431·2019-08-29 15:21
閱讀 1874·2019-08-29 12:20
閱讀 1217·2019-08-29 12:13
閱讀 685·2019-08-26 12:24
閱讀 2593·2019-08-26 10:26
閱讀 908·2019-08-23 18:40