Metoda HTTP CONNECT
CONNECT to polecenie HTTP, którym program prosi proxy o otwarcie bezpośredniego tunelu do strony.
Zaktualizowano · Redakcja Prokso
Przy stronach z HTTPS proxy HTTP nie czyta żądań, tylko łączy program ze stroną. Program wysyła „CONNECT example.com:443”, proxy odpowiada „200” i dalej po prostu przekazuje zaszyfrowane dane w obie strony.
Dlatego przez proxy HTTP można bezpiecznie otwierać strony z TLS: treści stron proxy nie widzi.
Jeśli tunel się nie otworzył, przeglądarka pokazuje błąd w rodzaju ERR_TUNNEL_CONNECTION_FAILED. Przyczyny i rozwiązania zebrano na stronie błąd tunelu.
Tunel otwiera się tylko do dozwolonych portów. W Prokso otwarte są m.in. 80, 443, 8080 i 8443, a porty pocztowe są zamknięte.
Wymiana CONNECT linia po linii
Program wysyła do proxy żądanie z trzech linii: CONNECT example.com:443 HTTP/1.1, Host: example.com:443 i Proxy-Authorization: Basic ... z danymi logowania. Proxy sprawdza dane, łączy się ze stroną i odpowiada linią statusu z kodem 200. Po pustej linii połączenie staje się tunelem i zaczyna się uzgadnianie TLS ze stroną. Nagłówek Host powtarza cel, bo HTTP/1.1 wymaga go w każdym żądaniu.
Każdy kod inny niż 2xx oznacza, że tunel się nie otworzył, a odpowiedź przyszła od proxy, a nie od strony. W Prokso kod 407 oznacza błędne dane logowania lub wyczerpany transfer, a 503 z oznaczeniem NO_RAY to brak wolnego adresu dla wybranego geo. Co zrobić z 407, opisano na stronie błąd 407.
Jak zobaczyć CONNECT w curl
Uruchom curl -v -x http://LOGIN:PASSWORD@gw.prokso.com:823 https://example.com. Linie zaczynające się od > to to, co wysłał curl, a linie z < to odpowiedzi. Najpierw zobaczysz > CONNECT example.com:443 HTTP/1.1 i odpowiedź proxy, potem linie TLS i dopiero po nich odpowiedź strony. Jeśli po kodzie proxy nie ma linii TLS, tunel się nie otworzył, a przyczynę wyjaśnia sam kod. Więcej przykładów znajdziesz w instrukcji dla curl.
Kiedy CONNECT nie jest używany
Dla adresów z http:// program nie otwiera tunelu. Wysyła do proxy pełny adres, na przykład GET http://example.com/page HTTP/1.1, a proxy samo przekazuje żądanie. W takim przypadku adres strony i jej treść są widoczne dla proxy, bo nie ma szyfrowania.
W curl opcja -p (--proxytunnel) wymusza tunel także dla adresów z http://.
Pytania i odpowiedzi (FAQ)
Dlaczego strona się otwiera, a tunel nie?
Najczęściej program idzie na zamknięty port albo proxy odrzucił logowanie. Sprawdź linię w sprawdzarce proxy i port strony.
Czy CONNECT jest potrzebny dla SOCKS5?
Nie. SOCKS5 ma własne polecenie połączenia, a CONNECT jest częścią proxy HTTP.
Powiązane pojęcia
Rezydencjalne $1.59, mobilne $2.50, serwerowe $0.65 za 1 GB
Rejestracja w minutę, dostęp od razu po płatności.