Windows-Hostdatei kann nicht zum Weiterleiten von HTTPS-Headern abgerufen werden

370

Ich versuche gerade, in C # einen Proxy zu schreiben, der die Host-Datei verwendet, um Anforderungen umzuleiten (spezifische Anfrage). Ich möchte nur eine Adresse abfangen.

Es ist unter Windows und der Proxy wird lokal auf dem Computer ausgeführt.

Wenn Sie alle anderen Proxy-Informationen ignorieren, sagen wir einfach, ich versuche einfach, die HTTP-Header der ersten Anfrage zu packen.

Für eine HTTP-Anfrage habe ich den Proxy auf 127.0.0.1:80 eingerichtet und 127.0.0.1 [foo.com] in die Hostdatei eingefügt.

Öffne einen Browser, navigiere zu http://foo.com/ und ich greife die Anfrage und zeige sie an.

"GET foo.com/ HTTP / 1.1" usw

Kein WLAN:

Für eine HTTPS-Anforderung habe ich den Proxy auf 127.0.0.1:443 eingerichtet und 127.0.0.1 [foo.com] in die Hostdatei eingefügt.

Öffne einen Browser, navigiere zu https://foo.com/ und ich greife die Anfrage und zeige sie an.

Ich erwartete "CONNECT ...... etc", aber was ich tatsächlich bekomme, sind nur Müllcharaktere.

Wenn derselbe Proxy auf 127.0.0.1:8080 eingestellt ist und in der Browser-Proxy-Einstellung darauf verweist, werden die korrekten HTTPS-Header angezeigt, die ich erwartet hatte.

Warum vermasselt die Hostdatei die HTTPS-Anforderungsheader?

2

1 Antwort auf die Frage

2
Phil Lello

Die Header werden dadurch nicht beschädigt. Sie haben dem Betriebssystem / Browser nicht angewiesen, einen Proxyserver zu verwenden. Sie teilen dem Betriebssystem mit, dass sich der tatsächliche Server auf 127.0.0.1 befindet. Sie erhalten also den SSL / TLS-Handshake.