解决使用mitmprox抓包可以访问网页,但是使用python request 调用该网站接口报错问题

寻技术 Python编程 2023年12月29日 126

可能有几种原因导致这种情况。以下是一些常见的问题和可能的解决方法:

证书验证问题:

当你使用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捕获的请求头相匹配,否则服务器可能会拒绝请求。

以上完美的解决了我的问题!

关闭

用微信“扫一扫”