[PYTHON] Schreiben Sie SNI neu, wenn Sie über HTTPS kommunizieren

SNI neu schreiben

Wenn Sie einen https-Client eines Drittanbieters verwenden, können Sie möglicherweise nicht mit nginx routen, da dieser SNI nicht unterstützt, und Sie möchten möglicherweise einen SNI ausprobieren, der sich von dem tatsächlichen unterscheidet.

Möglicherweise können Sie SNI mithilfe eines Proxys namens Mitmproxy neu schreiben. Dieses Mal nehmen wir einen Client an, der die CONNECT-Methode verwenden kann.

Die transparente HTTPS-Methode der folgenden URL wird jedoch wahrscheinlich neu geschrieben, auch wenn sie den Proxy nicht unterstützt. https://docs.mitmproxy.org/stable/concepts-howmitmproxyworks

Installieren Sie Mitmproxy mit Pip usw. https://docs.mitmproxy.org/stable/overview-installation/

Speichern Sie das folgende Programm als custom_sni.py.

from mitmproxy import ctx, http
import mitmproxy

def next_layer(layer: mitmproxy.proxy.protocol.Layer):
    if isinstance(layer,mitmproxy.proxy.protocol.TlsLayer):
        layer._custom_server_sni="<SNI, das Sie lösen möchten>"
        
    return layer

Lassen Sie das Mitmproxy-Zertifikat (~ / .mitmproxy / Mitmproxy-ca-cert.cer) als vorläufige Vorbereitung zu. Starten Sie dann den Proxy an Port 8080 wie folgt:

mitmproxy -s custom_sni.py

Danach können Sie den Proxy auf dem Client festlegen, den Sie verwenden möchten

Recommended Posts

Schreiben Sie SNI neu, wenn Sie über HTTPS kommunizieren