解决使用mitmprox抓包可以访问网页,但是使用python request 调用该网站接口报错问题
可能有几种原因导致这种情况。以下是一些常见的问题和可能的解决方法:
证书验证问题:
当你使用mitmproxy抓包时,它通常会生成自签名的SSL证书,以便进行中间人攻击检查。但在Python中使用requests库时,默认情况下,它会验证SSL证书的有效性。你需要禁用SSL验证,以便使用mitmproxy生成的证书。
你可以在requests中通过设置verify参数为False来禁用SSL证书验证,如下所示:
import requests
url = "https://example.com/api/endpoint"
response = requests.get(url, verify=False)
这只是一个解决方案,但在实际应用中,禁用SSL验证可能会引入安全风险,因此请慎重使用。另一种方法是将mitmproxy的根证书添加到Python的信任证书列表中,以使requests能够验证mitmproxy生成的证书。
代理设置问题:
确保你在Python的requests中设置了正确的代理。mitmproxy通常会运行在本地代理服务器上(默认端口为8080),你需要在requests中指定这个代理。以下是一个设置代理的示例:
import requests
url = "https://example.com/api/endpoint"
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = requests.get(url, proxies=proxies)
请确保将代理配置为与mitmproxy相匹配。
请求头问题:
mitmproxy可以修改请求头,包括User-Agent等信息。确保你的Python请求与mitmproxy捕获的请求头相匹配,否则服务器可能会拒绝请求。
以上完美的解决了我的问题!
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君