解決使用mitmprox抓包可以訪問網頁,但是使用python request 呼叫該網站介面報錯問題

久曲健發表於2023-10-28

可能有幾種原因導致這種情況。以下是一些常見的問題和可能的解決方法:

證照驗證問題:

當你使用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捕獲的請求頭相匹配,否則伺服器可能會拒絕請求。

以上完美的解決了我的問題!

相關文章