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:invoker2021@126.com @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端都可以被抓取到了。
没有英汉互译结果
请尝试网页搜索
请尝试网页搜索
本文来自博客园,作者:kaer_invoker,转载请注明原文链接:https://www.cnblogs.com/invoker2021/p/15263489.html