哦哇資訊網

Requests的基礎操作(2)

由 美少女隠隠旳痛 發表于 科技2021-04-11

目錄:

1。3。2。1檔案/流式上傳

2。3。2。2會話維持

3。3。2。3 SSL證書驗證

4。3。2。4代理設定

5。3。2。5使用者身份認證

3.2.1檔案/流式上傳

Requests支援流式上傳,這允許你傳送大的資料流或檔案而無需先把它們讀入記憶體。要使用流式上傳,僅需為你的請求體提供一個類檔案物件即可:

3.2.2會話維持

什麼是會話

http協議本身是無狀態的,為了讓請求之間保持狀態,有了session和cookie機制。requests也提供了相應的方法去操縱它們。

cookie儲存在瀏覽器端,session儲存在伺服器端

requests中的session物件能夠讓我們跨http請求保持某些引數,即讓同一個session物件傳送的請求頭攜帶某個指定的引數。當然,最常見的應用是它可以讓cookie保持在後續的一串請求中。

會話的使用方式

從結果中我們可以看出,第二次請求已經攜帶上了第一次請求所設定的cookie,即透過session達到了保持cookie的目的。示例中建立了一個requests。Session()物件,透過該物件來進行http請求操作,該操作基本類似於requests。request(),可檢視python之requests模組-request api進行了解。

如何跨請求共用資料

由於session讓請求之間具有了連貫性,那麼,就有了跨請求引數和非跨請求引數的區別。即有時我想讓所有請求均帶有某個引數,而有時我只是想讓單獨的一條請求帶上臨時的引數。透過下面的例子來了解如何使用

Requests的基礎操作(2)

Requests的基礎操作(2)

可以得出兩條結論:

1、session可以為請求方法提供預設資料,比如第一次請求中的{‘x-test’:‘true’}就是預設資料,此時的預設資料就是跨請求引數。

2、方法級別的引數不會被跨請求保持,比如第二次請求時,沒有攜帶headers={‘x-test2’:‘true’},返回的結果中也沒有{‘x-test2’:‘true’},說明該引數沒有在第一次請求後被保持住。

3.2.3 SSL證書驗證

什麼是SSL

SSL證書是數字證書的一種,類似於駕駛證、護照和營業執照的電子副本。因為配置在伺服器上,也稱為伺服器證書。

SSL  證書就是遵守SSL協議,由受信任的數字證書頒發機構CA,在驗證伺服器身份後頒發,具有伺服器身份驗證和資料傳輸加密功能。

主要作用:

Requests的基礎操作(2)

如何判定某網站是否安裝SSL證書?

如果您能使用https://來訪問某個網站,就表示此網站是部署了SSL證書。一般來講,如果此網站部署了SSL證書,則在需要加密的頁面會自動從 http://變為https://

訪問SSL證書的網站

Requests的基礎操作(2)

正常的執行結果:

Requests的基礎操作(2)

錯誤的執行結果:

Requests的基礎操作(2)

關閉證書驗證

當遇到網站證書錯誤時,可以透過引數verify=False關閉證書驗證

Requests的基礎操作(2)

Requests的基礎操作(2)

消除證書警告

Requests的基礎操作(2)

Requests的基礎操作(2)

3.2.4代理設定

某些時候,比如在進行爬蟲爬取時,有時候爬蟲會被伺服器給遮蔽掉,這時採用的方法主要有降低訪問時間,透過代理ip訪問

Requests的基礎操作(2)

Requests的基礎操作(2)

3.2.5使用者身份認證

許多 web 服務都需要身份認證,並且也有多種不同的認證型別。

許多要求身份認證的web服務都接受 HTTP Basic Auth。這是最簡單的一種身份認證,並且 Requests 對這種認證方式的支援是直接開箱即可用。

基本使用者認證

Requests的基礎操作(2)

Requests 就提供了一種簡寫的使用方式

Requests的基礎操作(2)

如果認證方法沒有收到 auth 引數,Requests 將試圖從使用者的 netrc 檔案中獲取 URL 的hostname 需要的認證身份。The netrc file overrides raw HTTP authentication headers set with headers=。

如果找到了 hostname 對應的身份,就會以 HTTP Basic Auth 的形式傳送請求。

TAG: 請求證書SSL認證session