requests proxy SSL 證書設定

2021-09-17 23:29:25 字數 1286 閱讀 7448

發現 requests 會直接使用 macos 系統的 proxy 設定。但是很多時候都不想這麼做,所以會通過**來配置。

單次請求的設定:

import requests

proxies =

requests.get('', proxies=proxies)

使用 session 時候的持久設定:

import requests

s = requests.session()

s.proxies =

requests.get('')

需要注意的是,單次的 requests 請求的設定可以覆蓋 session 中的設定,參考 requests.sessions 的原始碼。

參考:proxies in advanced usage

比如上一步設定的 https proxy 是想用 charles 來抓包的,想用 charles 解析 https 的請求就必須把 charles 放在中間,客戶端相信 charles 簽發的證書並和 charles 之間 https 通訊。charles 再把自己當做乙個客戶端去和伺服器 https 通訊。

這裡要做的就是讓 requests 來信任 charles 生成的 ca。這個關鍵的一步 requests 卻不能讀取系統的設定了,有點傷心。那手動好了。

類似上一步中的proxies,session、request 中還有verifycert引數,前者預設為true表示需要驗證伺服器的 ssl 證書,手動設定成false可行但是會不停的報 warning,warning 不太好關掉。

verify可以設定成證書的位址,發現證書使用文字格式的 pem 是可用的。

例項如下:

import requests

proxies =

requests.get('', proxies=proxies, verify='/path-to/charles-ssl-proxying-certificate.pem')

import requests

s = requests.session()

s.proxies =

s.verify='/path-to/charles-ssl-proxying-certificate.pem'

requests.get('')

參考:

證書鏈 證書校驗

回到證書鏈,在證書認證過程中,由於校驗方,通常為瀏覽器中,繼承的是權威ca機構的根證書,因此對於一些經授權的中間證書,瀏覽器卻識別不了 當然也有部分中間證書可以被識別 因此仔部署https 時,需要構建正確的證書鏈,告訴驗證方,該伺服器證書和它的簽署機構,以及根證書 權威ca機構 之間的關係。在證書...

android layout weight設定解讀

參考文章 android layout weight的真實含義是 一旦view設定了該屬性 假設有效的情況下 那麼該 view的寬度等於原有寬度 android layout width 加上其在剩餘空間中的佔比!設螢幕寬度為l,在兩個view的寬度都為match parent的情況下,原有寬度為l...

Android RecyclerView設定空布局

1 自定義乙個emptyrecyclerview繼承recyclerview 2 採用adapterdataobserver觀察者模式來監聽資料的變化,如果有資料就隱藏空布局,反之,則顯示。view memptyview private adapterdataobserver emptyobserv...