如何使Tcl https与mitmproxy一起使用?

时间:2019-01-17 18:26:24

标签: http ssl tcl mitmproxy

我正在尝试使用Tclhttp模块通过tls进行HTTPS调用,我想用mitmproxy查看调用本身。

我首先安装了mitmproxy,安装了其证书,并通过指向Firefox在localhost:8080使用代理来验证它运行正常。我可以在mitmproxy中查看所有https调用,并可以在浏览器中看到正确的响应。

我现在正在尝试使以下代码在mitmproxy上正常工作:

package require http
package require tls

http::register https 443 tls::socket

http::config -proxyhost localhost
http::config -proxyport 8080

set token [http::geturl "https://google.com"]
set resp [http::data $token]
http::cleanup $token
puts $resp

http::unregister https

如果我没有两行http::config来设置代理,则脚本可以正常工作。但是,如果确实有这两行,则会得到以下提示:

    <html>
        <head>
            <title>502 Bad Gateway</title>
        </head>
        <body>
        <h1>502 Bad Gateway</h1>
        <p>ProtocolException(&#x27;Cannot connect to server, no server address given.&#x27;)</p>
        </body>
    </html>

mitmproxy在UI中向我显示了类似的错误。

我还尝试过export http_proxy=http://localhost:8080/和将http更改为https的排列,然后执行以下操作:

package require http
package require tls
package require autoproxy

autoproxy::init
http::register https 443 autoproxy::tls_socket
set tok [http::geturl https://google.com/]
set data [http::data $tok]
puts $data

我得到类似的答复:

    <html>
        <head>
            <title>502 Bad Gateway</title>
        </head>
        <body>
        <h1>502 Bad Gateway</h1>
        <p>TlsProtocolException(&quot;Cannot establish TLS with google.com:443 (sni: None): TlsException(&#x27;Cannot validate certificate hostname without SNI&#x27;)&quot;)</p>
        </body>
    </html>

我必须相信,我没有使用tcl在应有的请求中发送某些内容,但是我对此感到茫然。如何修改上面的代码,使其在此代理服务器上正常工作?

0 个答案:

没有答案