python requests 設置 proxy 和 SSL 證書


例子

直接系統代理

requests 會直接使用 macOS 系統的 proxy 設置。

設置 proxy

import requests
proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
requests.get('http://example.org', proxies=proxies)
import requests
s = requests.Session()
s.proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
requests.get('http://example.org')

設置 SSL 證書

使用文本格式的 PEM。

import requests
proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
requests.get('http://example.org', proxies=proxies, verify='/path-to/charles-ssl-proxying-certificate.pem')
import requests
s = requests.Session()
s.proxies = {'http': 'http://localhost:8888', 'https': 'http://localhost:8888'}
s.verify='/path-to/charles-ssl-proxying-certificate.pem'
requests.get('http://example.org')

特性

代碼的配置可以覆蓋系統的配置,單次的 requests 請求的設置可以覆蓋 session 中的設置,參考 requests.sessions 的源碼

參考

實驗

SSL 證書設置

比如上一步設置的 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 是可用的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM