可能有幾種原因導致這種情況。以下是一些常見的問題和可能的解決方法:
證照驗證問題:
當你使用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捕獲的請求頭相匹配,否則伺服器可能會拒絕請求。
以上完美的解決了我的問題!