欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

這篇文章將為大家詳細(xì)講解有關(guān)如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元漢臺(tái)做網(wǎng)站,已為上家服務(wù),為漢臺(tái)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

什么是HTTP?

<HTTP的介紹>

引自百度百科的權(quán)威回答:

超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。

1960年美國(guó)人Ted Nelson構(gòu)思了一種通過(guò)計(jì)算機(jī)處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協(xié)議標(biāo)準(zhǔn)架構(gòu)的發(fā)展根基。Ted Nelson組織協(xié)調(diào)萬(wàn)維網(wǎng)協(xié)會(huì)(World Wide Web Consortium)和互聯(lián)網(wǎng)工程工作小組(Internet Engineering Task Force )共同合作研究,最終發(fā)布了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。

HTTP協(xié)議是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。

<HTTP的模型>

HTTP采用了瀏覽器/服務(wù)器這種請(qǐng)求/響應(yīng)模型,瀏覽器永遠(yuǎn)是HTTP請(qǐng)求的發(fā)起者,服務(wù)器為響應(yīng)者。

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

這樣在瀏覽器客戶端沒(méi)有發(fā)起請(qǐng)求的情況下,服務(wù)器是不能主動(dòng)推送消息給客戶端的。

<HTTP的定位>

HTTP是一個(gè)應(yīng)用層協(xié)議,是我們想從服務(wù)器端獲取信息的最直觀的請(qǐng)求。比如,在爬蟲(chóng)中使用的<urllib模塊>,<requests模塊>等都是封裝了HTTP協(xié)議,作為一個(gè)HTTP客戶端實(shí)現(xiàn)了博文,圖片,視頻等信息源的下載。

但是HTTP也不是直接就可以用的,它的請(qǐng)求是建立在一些底層協(xié)議的基礎(chǔ)上完成的。如TCP/IP協(xié)議棧中,HTTP需要TCP的三次握手連接成功后才能向服務(wù)器發(fā)起請(qǐng)求。當(dāng)然,如果是HTTPS的話,還需要TSL和SSL安全層。

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

一個(gè)完整的HTTP請(qǐng)求過(guò)程

既然HTTP協(xié)議需要建立在其它底層協(xié)議基礎(chǔ)上,我們來(lái)看看一個(gè)完整的HTTP請(qǐng)求是什么樣的。

當(dāng)我們點(diǎn)擊一個(gè)鏈接或者輸入一個(gè)鏈接的時(shí)候,整個(gè)HTTP的請(qǐng)求過(guò)程就開(kāi)始了,然后經(jīng)過(guò)以下步驟得到***的信息,我們這里簡(jiǎn)單介紹一下前四個(gè)步驟,旨在了解HTTP。

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

<1> 域名解析

首先會(huì)搜索各種本地DNS緩存,如果沒(méi)有就會(huì)向DNS服務(wù)器(互聯(lián)網(wǎng)提供商)發(fā)起域名解析,以獲取IP地址。

<2> 建立TCP連接

當(dāng)獲取IP后,將創(chuàng)建套接字socket連接,也就是TCP的3次握手連接,默認(rèn)端口號(hào)80。

<3> HTTP請(qǐng)求

一旦TCP連接成功后,瀏覽器/爬蟲(chóng)就可以向服務(wù)器發(fā)起HTTP請(qǐng)求報(bào)文了,報(bào)文內(nèi)容包含請(qǐng)求行、請(qǐng)求頭部、請(qǐng)求主體。

<4> 服務(wù)器響應(yīng)

服務(wù)器響應(yīng),并返回一個(gè)HTTP響應(yīng)包(如果成功會(huì)返回狀態(tài)碼200)和請(qǐng)求的HTML代碼。

上面的步驟<3>和<4>可以簡(jiǎn)單的示意如下,更方便大家理解。其中,請(qǐng)求和響應(yīng)都包含特定格式的信息,具體我們接下來(lái)會(huì)繼續(xù)解讀。

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

響應(yīng)HTTP請(qǐng)求會(huì)返回響應(yīng)狀態(tài)碼,根據(jù)狀態(tài)碼可以知道返回信息的狀態(tài)。狀態(tài)碼規(guī)定如下:

1xx: 信息響應(yīng)類,表示接收到請(qǐng)求并且繼續(xù)處理

    100&mdash;&mdash;必須繼續(xù)發(fā)出請(qǐng)求

    101&mdash;&mdash;要求服務(wù)器根據(jù)請(qǐng)求轉(zhuǎn)換HTTP協(xié)議版本

2xx: 處理成功響應(yīng)類,表示動(dòng)作被成功接收、理解和接受

200&mdash;&mdash;交易成功

201&mdash;&mdash;提示知道新文件的URL

202&mdash;&mdash;接受和處理、但處理未完成

203&mdash;&mdash;返回信息不確定或不完整

204&mdash;&mdash;請(qǐng)求收到,但返回信息為空

205&mdash;&mdash;服務(wù)器完成了請(qǐng)求,用戶代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過(guò)的文件

206&mdash;&mdash;服務(wù)器已經(jīng)完成了部分用戶的GET請(qǐng)求

3xx: 重定向響應(yīng)類,為了完成指定的動(dòng)作,必須接受進(jìn)一步處理

300&mdash;&mdash;請(qǐng)求的資源可在多處得到

301&mdash;&mdash;刪除請(qǐng)求數(shù)據(jù)

302&mdash;&mdash;在其他地址發(fā)現(xiàn)了請(qǐng)求數(shù)據(jù)

303&mdash;&mdash;建議客戶訪問(wèn)其他URL或訪問(wèn)方式

304&mdash;&mdash;客戶端已經(jīng)執(zhí)行了GET,但文件未變化

305&mdash;&mdash;請(qǐng)求的資源必須從服務(wù)器指定的地址得到

306&mdash;&mdash;前一版本HTTP中使用的代碼,現(xiàn)行版本中不再使用

307&mdash;&mdash;申明請(qǐng)求的資源臨時(shí)性刪除

4xx: 客戶端錯(cuò)誤,客戶請(qǐng)求包含語(yǔ)法錯(cuò)誤或者是不能正確執(zhí)行

400&mdash;&mdash;錯(cuò)誤請(qǐng)求,如語(yǔ)法錯(cuò)誤

401&mdash;&mdash;未授權(quán)

402&mdash;&mdash;保留有效ChargeTo頭響應(yīng)

403&mdash;&mdash;禁止訪問(wèn)

404&mdash;&mdash;沒(méi)有發(fā)現(xiàn)文件、查詢或URl

405&mdash;&mdash;在Request-Line字段定義的方法不允許

406&mdash;&mdash;根據(jù)發(fā)送的Accept,請(qǐng)求資源不可訪問(wèn)

407&mdash;&mdash;用戶必須首先在代理服務(wù)器上得到授權(quán)

408&mdash;&mdash;客戶端沒(méi)有在指定的時(shí)間內(nèi)完成請(qǐng)求

409&mdash;&mdash;對(duì)當(dāng)前資源狀態(tài),請(qǐng)求不能完成

410&mdash;&mdash;服務(wù)器不再有此資源且無(wú)進(jìn)一步地址

411&mdash;&mdash;服務(wù)器拒絕用戶定義的Content-Length

412&mdash;&mdash;一個(gè)或多個(gè)請(qǐng)求頭字段在當(dāng)前請(qǐng)求中錯(cuò)誤

413&mdash;&mdash;請(qǐng)求的資源大于服務(wù)器允許的大小

414&mdash;&mdash;請(qǐng)求的資源URL長(zhǎng)于服務(wù)器允許的長(zhǎng)度

415&mdash;&mdash;請(qǐng)求資源不支持請(qǐng)求項(xiàng)目格式

416&mdash;&mdash;請(qǐng)求中包含Range請(qǐng)求頭字段,在當(dāng)前請(qǐng)求資源范圍內(nèi)沒(méi)有range指示值,請(qǐng)求也不包含If-Range請(qǐng)求頭字段

417&mdash;&mdash;服務(wù)器不滿足請(qǐng)求Expect頭字段指定的期望值,如果是代理服務(wù)器,可能是下一級(jí)服務(wù)器不能滿足請(qǐng)求長(zhǎng)。

5xx: 服務(wù)端錯(cuò)誤,服務(wù)器不能正確執(zhí)行一個(gè)正確的請(qǐng)求

500&mdash;&mdash;內(nèi)部服務(wù)器錯(cuò)誤

501&mdash;&mdash;未實(shí)現(xiàn)

502&mdash;&mdash;網(wǎng)關(guān)錯(cuò)誤

HTTP請(qǐng)求報(bào)文

相信你已經(jīng)對(duì)HTTP的請(qǐng)求過(guò)程有了大致的了解了,下面我們來(lái)詳細(xì)介紹HTTP請(qǐng)求的報(bào)文信息。

報(bào)文內(nèi)容包含請(qǐng)求行、請(qǐng)求頭部、請(qǐng)求主體。

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

下面我們來(lái)看一下通過(guò)開(kāi)發(fā)者工具請(qǐng)求<https://www.baidu.com/>網(wǎng)址截取下來(lái)的HTTP請(qǐng)求報(bào)文內(nèi)容,對(duì)比一下上面的標(biāo)準(zhǔn)格式。

如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)

我們發(fā)現(xiàn)請(qǐng)求報(bào)文的格式與上面基本一致,正式我們想要的。那么,接下來(lái)我們將要逐個(gè)的介紹以上各個(gè)信息。

請(qǐng)求行

<GET>是HTTP的請(qǐng)求方式之一,HTTP/1.1協(xié)議中共定義了8種方法與服務(wù)器交互,有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,其中比較常用的是<GET>和<POST>方法了。

HEAD: 從服務(wù)器得到除了請(qǐng)求體與GET請(qǐng)求一樣的響應(yīng)

GET:通過(guò)URL獲取查詢資源信息(爬蟲(chóng)特定URL爬?。?/p>

POST:提交表單(爬蟲(chóng)中的模擬登錄)

PUT:上傳文件(瀏覽器不支持)

DELETE:刪除

OPTIONS:返回服務(wù)器對(duì)特定資源支持的HTTP請(qǐng)求方法

TRACE:返回服務(wù)器收到的請(qǐng)求,用于測(cè)試或診斷

CONNECT:預(yù)留給管道連接方式的代理服務(wù)

GET請(qǐng)求方法后URL(這里是/)和版本1.1,別忘了空格。

請(qǐng)求頭

HTTP的頭域包括通用頭、請(qǐng)求頭、響應(yīng)頭和實(shí)體頭四部分。因?yàn)樵谂老x(chóng)過(guò)程中,我們經(jīng)常會(huì)提交headers請(qǐng)求頭信息用于偽裝,所以我們這里對(duì)請(qǐng)求頭著重講解一下。

請(qǐng)求頭是請(qǐng)求報(bào)文特有的,它向服務(wù)器提交了一些額外的信息,例如通過(guò)Accept字段信息,我們客戶端可以告訴服務(wù)器我們接受一些什么類型的數(shù)據(jù)。而我們其實(shí)可以把這些字段信息就當(dāng)成<鍵值對(duì)>對(duì)待。

下面我們看看這些字段都代表了什么意思?

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

含義:告訴瀏覽器我們接受MIME的類型

Accept-Encoding:gzip, deflate, br

含義:如果有這個(gè)字段,則代表客戶端支持壓縮將內(nèi)容編碼,去掉后會(huì)支持任意編碼。

注意:爬蟲(chóng)時(shí)一般不要把它加上,博主最開(kāi)始就是不懂全都復(fù)制過(guò)來(lái),結(jié)果因?yàn)檫@個(gè)就是不好使卡住好長(zhǎng)時(shí)間。

Accept-Lanague:zh-CN,zh;q=0.9

含義:告訴服務(wù)器能夠接受的語(yǔ)言,沒(méi)有則代表任何語(yǔ)言

Connection:keep-alive

含義:告訴服務(wù)器需要持久有效的連接狀態(tài)(HTTP1.1默認(rèn)會(huì)進(jìn)行持久連接)

Host:www.baidu.com

含義:客戶端指定自己想訪問(wèn)的web服務(wù)器域名/IP地址和端口號(hào)

Cache-control:max-age=0

含義:(引自百度百科)

Cache-Control 是最重要的規(guī)則。這個(gè)字段用于指定所有緩存機(jī)制在整個(gè)請(qǐng)求/響應(yīng)鏈中必須服從的指令。這些指令指定用于阻止緩存對(duì)請(qǐng)求或響應(yīng)造成不利干擾的行為。這些指令通常覆蓋默認(rèn)緩存算法。緩存指令是單向的,即請(qǐng)求中存在一個(gè)指令并不意味著響應(yīng)中將存在同一個(gè)指令。

網(wǎng)頁(yè)的緩存是由HTTP消息頭中的“Cache-control”來(lái)控制的,常見(jiàn)的取值有private、no-cache、max-age、must-revalidate等,默認(rèn)為private。

但是HTTP請(qǐng)求和響應(yīng)的Cache-Control是不完全一樣的。

常見(jiàn)的請(qǐng)求Cache-Control取值有<no-cache>, <no-store>, <max-age>, <max-stale>, <min-fresh>, <only-if-cached>。

響應(yīng)的Cache-Control取值有<public>, <private>,  <no-cache>, <no- store>, <no-transform>, <must-revalidate>, <proxy-revalidate>, <max-age>。

我們這里主要介紹請(qǐng)求時(shí)的常見(jiàn)Cache-Control取值。

<1>max-age<=0

本例中使用max-age=0,表示每次請(qǐng)求會(huì)訪問(wèn)服務(wù)器,通過(guò)Last-Modified來(lái)判斷文件是否被修改,如果被修改,返回狀態(tài)碼200并得到***文件,否則將返回304狀態(tài)碼并讀取緩存文件。

<2>max-age>0

表示會(huì)直接從瀏覽器提取緩存。

<3>no-cache

表示不會(huì)在瀏覽器緩存進(jìn)行提取,而是強(qiáng)制的向服務(wù)器發(fā)出請(qǐng)求,這樣可以保證客戶端能夠收到最權(quán)威的回應(yīng)。

<4>no-store

所有內(nèi)容都不會(huì)被緩存到緩存或Internet臨時(shí)文件中。

Upgrade-Insecure-Requests:1

含義:表示瀏覽器/爬蟲(chóng)可以處理HTTPS協(xié)議,并能自動(dòng)升級(jí)請(qǐng)求從HTTP到HTTPS。

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) ..Safari/537.36

含義:(這個(gè)是爬蟲(chóng)中最常用了)用于偽裝成瀏覽器身份請(qǐng)求網(wǎng)頁(yè)。它的意思自然就是表示瀏覽器的身份,說(shuō)明是用的哪種瀏覽器進(jìn)行的操作。

Cookies:

含義:(這個(gè)也是爬蟲(chóng)中很重要的了,通常用于模擬登錄)

Cookies是用于維持服務(wù)端的會(huì)話狀態(tài),由服務(wù)器端寫入,然后在后續(xù)請(qǐng)求中,供服務(wù)器讀取使用。

以上就是本例中出現(xiàn)的所有字段信息內(nèi)容。當(dāng)然,還有其它一些常用字段信息,這里也一起說(shuō)明一下。

其它請(qǐng)求頭字段信息

Referer:

含義:(這個(gè)也是爬蟲(chóng)常用到的,防盜鏈)

客戶端通過(guò)當(dāng)前URL代表的頁(yè)面出發(fā)訪問(wèn)我們請(qǐng)求的頁(yè)面。爬蟲(chóng)中,一般我們只要把它設(shè)置成請(qǐng)求的網(wǎng)頁(yè)鏈接就好了。

Accept-Charset:

含義:(這個(gè)也是爬蟲(chóng)常用到的)

表示瀏覽器可接受的字符集,可以是utf-8,gbk等

If-Modified-Since:Thu, 10 Apr 2008 09:14:42 GMT

含義:請(qǐng)求的內(nèi)容在指定日期以后一旦被修改就被返回對(duì)象內(nèi)容,否則返回“Not Modified”

Pragma:

含義:

Pragma頭域用來(lái)包含實(shí)現(xiàn)特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1協(xié)議中,它的含義和Cache-Control:no-cache相同。

Range:

含義:告訴瀏覽器自己想取對(duì)象的哪個(gè)部分。例如,Range: bytes=1173546

關(guān)于如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

新聞標(biāo)題:如何解讀爬蟲(chóng)中HTTP的基礎(chǔ)知識(shí)
當(dāng)前鏈接:http://chinadenli.net/article38/gehppp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、建站公司、網(wǎng)站策劃、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站