1. 程式人生 > 其它 >fiddler監控requests,ssl error解決辦法

fiddler監控requests,ssl error解決辦法

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