Метод HTTP CONNECT
CONNECT — команда HTTP, якою програма просить проксі відкрити прямий тунель до сайту.
Оновлено · Редакція Prokso
Для сайтів з HTTPS HTTP-проксі не читає запитів, а лише з'єднує програму із сайтом. Програма надсилає «CONNECT example.com:443», проксі відповідає «200» і далі просто передає зашифровані дані в обидва боки.
Саме тому через HTTP-проксі безпечно відкривати сайти з TLS: вміст сторінок проксі не бачить.
Якщо тунель не відкрився, браузер показує помилку на кшталт ERR_TUNNEL_CONNECTION_FAILED. Причини й рішення зібрано на сторінці помилка тунелю.
Тунель відкривається лише до дозволених портів. У Prokso відкриті, зокрема, 80, 443, 8080 і 8443, а поштові порти закриті.
Обмін CONNECT рядок за рядком
Програма надсилає проксі запит із трьох рядків: CONNECT example.com:443 HTTP/1.1, Host: example.com:443 і Proxy-Authorization: Basic ... з даними входу. Проксі перевіряє дані, з'єднується із сайтом і відповідає рядком статусу з кодом 200. Після порожнього рядка з'єднання стає тунелем, і починається рукостискання TLS із сайтом. Заголовок Host повторює ціль, бо HTTP/1.1 вимагає його в кожному запиті.
Будь-який код, крім 2xx, означає, що тунель не відкрився, а відповідь надійшла від проксі, а не від сайту. У Prokso код 407 означає неправильні дані входу або вичерпаний трафік, а 503 з позначкою NO_RAY — що для обраного гео немає вільної адреси. Що робити з 407, описано на сторінці помилка 407.
Як побачити CONNECT у curl
Виконайте curl -v -x http://LOGIN:PASSWORD@gw.prokso.com:823 https://example.com. Рядки, що починаються з >, — це те, що надіслав curl, а рядки з < — відповіді. Спершу ви побачите > CONNECT example.com:443 HTTP/1.1 і відповідь проксі, далі рядки TLS і лише після них відповідь сайту. Якщо після коду проксі рядків TLS немає, тунель не відкрито, і причину пояснює сам код. Більше прикладів — в інструкції для curl.
Коли CONNECT не використовується
Для адрес з http:// програма не відкриває тунель. Вона надсилає проксі повну адресу, наприклад GET http://example.com/page HTTP/1.1, і проксі сам пересилає запит. У цьому випадку адреса сторінки та її вміст видні проксі, бо шифрування немає.
У curl опція -p (--proxytunnel) змушує відкривати тунель і для адрес з http://.
Питання й відповіді
Чому сайт відкривається, а тунель ні?
Найчастіше програма йде на закритий порт або проксі відхилив вхід. Перевірте рядок у перевірці проксі і порт сайту.
Чи потрібен CONNECT для SOCKS5?
Ні. У SOCKS5 своя команда підключення, CONNECT — частина HTTP-проксі.
Пов'язані терміни
Резидентські $1.59, мобільні $2.50, серверні $0.65 за 1 ГБ
Реєстрація за хвилину, доступи одразу після оплати.