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端都可以被抓取到了。

 

 

 

 

 

 

  没有英汉互译结果
  请尝试网页搜索
posted @ 2021-09-13 17:40  kaer_invoker  阅读(863)  评论(0编辑  收藏  举报