Не удается получить файл хоста Windows для пересылки заголовков HTTPS

324

В настоящее время я пытаюсь написать прокси в C #, используя файл хоста для перенаправления запросов (конкретный запрос). Я хочу, чтобы он перехватывал только один адрес.

Это на Windows, и прокси-сервер запускается локально на компьютере.

Игнорируя все остальные прокси-компоненты, можно сказать, что я просто пытаюсь получить заголовки HTTP первого запроса.

Для HTTP-запроса я установил прокси на 127.0.0.1:80 и поместил 127.0.0.1 [foo.com] в файл хоста.

Откройте браузер, перейдите по адресу http://foo.com/, и я получу запрос и отобразлю его.

"GET foo.com/ HTTP / 1.1" и т. Д. И т. Д.

Теперь, если я:

Для запроса HTTPS я настроил прокси на 127.0.0.1:443 и поместил 127.0.0.1 [foo.com] в файл хоста.

Откройте браузер, перейдите по адресу https://foo.com/, и я получу запрос и отобразлю его.

Я ожидал "ПОДКЛЮЧИТЬ ...... и т. Д.", Но на самом деле я получаю только символы мусора.

Если использовать тот же прокси, установленный на 127.0.0.1:8080, и указать его в настройках прокси браузера, я вижу правильные заголовки HTTPS, которые я ожидал.

Почему файл хоста портит заголовки запроса HTTPS?

2

1 ответ на вопрос

2
Phil Lello

It doesn't screw up the headers; you haven't told the OS/browser to use a proxy server, you're telling the OS that the actual server is at 127.0.0.1, so you're receiving the SSL/TLS handshake.