Как заставить tcl https работать с mitmproxy? - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь сделать HTTPS-вызовы с Tcl с использованием модулей http и tls , и я хотел бы просмотреть сами вызовы с помощью mitmproxy .

Сначала я установил mitmproxy, установил его сертификаты и проверил, что он работает нормально, указав Firefox использовать прокси на localhost: 8080. Я могу просматривать все вызовы https в mitmproxy и видеть правильные ответы в браузере.

Сейчас я пытаюсь заставить следующий код правильно работать с 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 показывает мне похожую ошибку в пользовательском интерфейсе.

Я также пытался 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 для отправки чего-то в запросе, которым я должен быть, но я не знаю, что это такое. Как изменить приведенный выше код, чтобы он правильно работал с этим прокси-сервером?

...