【问题标题】:Sending HTTPS Requests through an upstream proxy with Fiddler使用 Fiddler 通过上游代理发送 HTTPS 请求
【发布时间】:2016-08-23 09:11:02
【问题描述】:

我已经检查了Fiddler - tunnelled http requests to port 443Fiddler2: Decrypt HTTPS traffic and Tunnel to host:443,但我的问题不同。

我不想将 Fiddler 用作另一个程序的代理。相反,我只想使用 Fiddler 的 Composer Tab 通过上游代理发送 HTTPS 请求。我的代理配置和授权是正确的;发送 HTTP 请求就可以了。

当我使用 Fiddler 的 Composer 向 https://google.com 发送 HTTPS GET 时,会导致超时(HTTP 502 / [Fiddler] 与 'google.com' 的连接失败。错误:TimedOut (0x274c)。) .

当我向 https://google.com 发送 HTTPS CONNECT 时,我收到 HTTP 502 / [Fiddler] DNS 查找失败。
有人知道我如何通过代理建立 HTTPS 隧道然后发送 GET 请求吗?

【问题讨论】:

    标签: https proxy fiddler


    【解决方案1】:

    要建立隧道,您必须使用 CONNECT 到代理。您还必须包含主机标头,这会使 CONNECT 请求中的目标加倍...例如

    CONNECT www.google.com:443 HTTP/1.1
    Host: www.google.com
    etc
    

    一旦隧道启动(例如,您从代理获得 200 OK),您需要进入 TLS 握手,然后才能发送 http 请求(因为它通过 TLS 现在是 https)。例如

    GET / HTTP/1.1
    Host: www.google.com
    etc.
    

    【讨论】:

    • 非常感谢您的回答。不幸的是,我的代理永远不会回答 200 OK,但总是回答 502。无论如何,我现在正在使用 cURL,它按预期工作。
    • 是的,它告诉您它不喜欢您的请求。任何 http 请求(包括 CONNECT)都有最低要求,例如有效的 Host 标头。如果你没有它,它会失败,我可以很容易地看到它无法解析一个空名称,正如你所说的“DNS 查找失败”
    最近更新 更多