fiddler監控requests,ssl error解決辦法
阿新 • • 發佈:2021-09-13
python指令碼使用requests庫,開fiddler監控傳送請求,遇到ssl的錯誤。
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1091)
網上查資料,應該是fiddler的證書沒有安裝。即requests請求時,需要通過fiddler代理時,需要證書驗證。
解決方法:
1.匯出fiddler證書(如何匯出,不做詳解,自行google)
2.將fiddler證書cer轉換為pem(為什麼,沒有深究,但是不轉換,必定報錯,ssl.SSLError: [X509] no certificate or crl found (_ssl.c:4140))
轉的方法:
a.下載openssl工具,地址:https://www.chinassl.net/ssltools/convert-ssl.html
b.安裝openssl工具。
c.使用bin目錄下的Openssl.exe,cmd下輸入:x509 -inform der -in /path/FiddlerRoot.cer -out /path/FiddlerRoot.pem
path為絕對路徑。
d.openssl工具命令使用:https://www.cnblogs.com/yangxiaolan/p/6256838.html
3.將證書放置py專案目錄。
4.requests的版本必須是2.22.0,太高的版本不適用(為什麼,不知道)
5.py主體session版本
''' @author:invoker @project:test_requests @file: test1.py @contact:[email protected] @descript: @Date:2021/9/13 15:07 @version: Python 3.7.8 ''' import requests request_path1 = "/web/login" body = { "loginName":"159xxxxxxx", "password":"xxxxxxxxxxx", "remembers":1 } proxies= {"http": "http://127.0.0.1:8888","https": "https://127.0.0.1:8888"} url = domain+request_path1 session = requests.Session() session.verify = rc.relPath+"./file/FiddlerRoot.pem" res = session.request(method="post",url=url,proxies=proxies,data=body)
6.py指令碼主體 requests版本:
request_path1 = "/web/login" body = { "loginName":"159xxxxx", "password":"xxxxx", "remembers":1 } proxies = {"http": "http://127.0.0.1:8888","https": "https://127.0.0.1:8888"} url = domain+request_path1 res = requests.post(url=url,proxies=proxies,verify=rc.relPath+"./file/FiddlerRoot.pem",data=body) res_dict = res.json() token = CommonUtil.json_extractor(res_dict,"$.data.token")
OK.現在Py的requests請求在fiddler端都可以被抓取到了。
FiddlerRoot詳細X 沒有英漢互譯結果請嘗試網頁搜尋
本文來自部落格園,作者:kaer_invoker,轉載請註明原文連結:https://www.cnblogs.com/invoker2021/p/15263489.html