Python爬蟲 請求響應包頭

2022-03-26 15:32:59 字數 4186 閱讀 1864

1. host (主機和埠號)

2. connection (鏈結型別)

connection:表示客戶端與服務連線型別

1)client 發起乙個包含 connection:keep-alive 的請求,http/1.1使用 keep-alive 為預設值。

2)server收到請求後:

如果 server 支援 keep-alive,回覆乙個包含 connection:keep-alive 的響應,不關閉連線;  

如果 server 不支援 keep-alive,回覆乙個包含 connection:close 的響應,關閉連線。

如果client收到包含 connection:keep-alive 的響應,向同乙個連線傳送下乙個請求,直到一方主動關閉連線。

keep-alive在很多情況下能夠重用連線,減少資源消耗,縮短響應時間,比如當瀏覽器需要多個檔案時(比如乙個html檔案和相關的圖形檔案),不需要每次都去請求建立連線。

3. upgrade-insecure-requests (公升級為https請求)

upgrade-insecure-requests:公升級不安全的請求,意思是會在載入 http 資源時自動替換成 https 請求,讓瀏覽器不再顯示https頁面中的http請求警報。

https 是以安全為目標的 http 通道,所以在 https 承載的頁面上不允許出現 http 請求,一旦出現就是提示或報錯。

4. user-agent (瀏覽器名稱)

user-agent:是客戶瀏覽器的名稱,以後會詳細講。

5. accept (傳輸檔案型別)

accept:指瀏覽器或其他客戶端可以接受的mime(multipurpose internet mail extensions(多用途網際網路郵件擴充套件))檔案型別,伺服器可以根據它判斷並返回適當的檔案格式。

舉例:

accept: */*:表示什麼都可以接收。

accept:image/gif:表明客戶端希望接受gif影象格式的資源;

accept:text/html:表明客戶端希望接受html文字。

q是權重係數,範圍 0 =< q <= 1,q 值越大,請求越傾向於獲得其「;」之前的型別表示的內容。若沒有指定q值,則預設為1,按從左到右排序順序;若被賦值為0,則用於表示瀏覽器不接受此內容型別。

詳細

6. referer (頁面跳轉處)

7. accept-encoding(檔案編譯碼格式)

舉例:accept-encoding:gzip;q=1.0, identity; q=0.5, *;q=0

如果有多個encoding同時匹配, 按照q值順序排列,本例中按順序支援 gzip, identity壓縮編碼,支援gzip的瀏覽器會返回經過gzip編碼的html頁面。如果請求訊息中沒有設定這個域伺服器假定客戶端對各種內容編碼都可以接受。

8. accept-language(語言種類)

accept-langeuage:指出瀏覽器可以接受的語言種類,如en或en-us指英語,zh或者zh-cn指中文,當伺服器能夠提供一種以上的語言版本時要用到。

9. accept-charset(字元編碼)

accept-charset:指出瀏覽器可以接受的字元編碼。

舉例:accept-charset:iso-8859-1,gb2312,utf-8

iso8859-1:通常叫做latin-1。latin-1包括了書寫所有西方歐洲語言不可缺少的附加字元,英文瀏覽器的預設值是iso-8859-1.

gb2312:標準簡體中文字符集;

utf-8:unicode 的一種變長字元編碼,可以解決多種語言文字顯示問題,從而實現應用國際化和本地化。

如果在請求訊息中沒有設定這個域,預設是任何字符集都可以接受。

10. cookie (cookie)

11. content-type (post資料型別)

content-type:post請求裡用來表示的內容型別。

舉例:content-type = text/xml; charset=gb2312:

指明該請求的訊息體中包含的是純文字的xml型別的資料,字元編碼採用「gb2312」。

理論上所有的響應頭資訊都應該是回應請求頭的。但是服務端為了效率,安全,還有其他方面的考慮,會新增相對應的響應頭資訊,從上圖可以看到:

1. cache-control:must-revalidate, no-cache, private。

這個值告訴客戶端,服務端不希望客戶端快取資源,在下次請求資源時,必須要從新請求伺服器,不能從快取副本中獲取資源。

cache-control是響應頭中很重要的資訊,當客戶端請求頭中包含cache-control:max-age=0請求,明確表示不會快取伺服器資源時,cache-control作為作為回應資訊,通常會返回no-cache,意思就是說,"那就不快取唄"。

當客戶端在請求頭中沒有包含cache-control時,服務端往往會定,不同的資源不同的快取策略,比如說oschina在快取資源的策略就是cache-control:max-age=86400,這個意思是,從當前時間開始,在86400秒的時間內,客戶端可以直接從快取副本中讀取資源,而不需要向伺服器請求。

2. connection:keep-alive

這個字段作為回應客戶端的connection:keep-alive,告訴客戶端伺服器的tcp連線也是乙個長連線,客戶端可以繼續使用這個tcp連線傳送http請求。

3. content-encoding:gzip

告訴客戶端,服務端傳送的資源是採用gzip編碼的,客戶端看到這個資訊後,應該採用gzip對資源進行解碼。

4. content-type:text/html;charset=utf-8

告訴客戶端,資源檔案的型別,還有字元編碼,客戶端通過utf-8對資源進行解碼,然後對資源進行html解析。通常我們會看到有些**是亂碼的,往往就是伺服器端沒有返回正確的編碼。

5. date:sun, 21 sep 2016 06:18:21 gmt

這個是服務端傳送資源時的伺服器時間,gmt是格林尼治所在地的標準時間。http協議中傳送的時間都是gmt的,這主要是解決在網際網路上,不同時區在相互請求資源的時候,時間混亂問題。

6. expires:sun, 1 jan 2000 01:00:00 gmt

這個響應頭也是跟快取有關的,告訴客戶端在這個時間前,可以直接訪問快取副本,很顯然這個值會存在問題,因為客戶端和伺服器的時間不一定會都是相同的,如果時間不同就會導致問題。所以這個響應頭是沒有cache-control:max-age=*這個響應頭準確的,因為max-age=date中的date是個相對時間,不僅更好理解,也更準確。

7. pragma:no-cache

這個含義與cache-control等同。

8.server:tengine/1.4.6

這個是伺服器和相對應的版本,只是告訴客戶端伺服器的資訊。

9. transfer-encoding:chunked

這個響應頭告訴客戶端,伺服器傳送的資源的方式是分塊傳送的。一般分塊傳送的資源都是伺服器動態生成的,在傳送時還不知道傳送資源的大小,所以採用分塊傳送,每一塊都是獨立的,獨立的塊都能標示自己的長度,最後一塊是0長度的,當客戶端讀到這個0長度的塊時,就可以確定資源已經傳輸完了。

10. vary: accept-encoding

告訴快取伺服器,快取壓縮檔案和非壓縮檔案兩個版本,現在這個字段用處並不大,因為現在的瀏覽器都是支援壓縮的。

Python爬蟲02 請求模組

七 json資料 response.text 返回unicode格式的資料 str response.content 返回位元組流資料 二進位制 response.content.decode utf 8 手動進行解碼 response.url 返回url response.encode 編碼 im...

python爬蟲 requests請求傳送

文件 readthedocs 使用pip安裝即可,如果要在虛擬環境使用,記得先啟用虛擬環境 pip install requestsgetdef get response requests.get print response 新增請求頭 headers user agent代表請求的身份,偽裝成瀏...

Python爬蟲 網路請求 urllib

簡單的請求from urllib.request import urlopen 發起網路請求 response urlopen assert response.code 200print 請求成功 儲存請求的網頁 file變數接受open 函式返回的物件的 enter 返回結果 with open ...