W ramach istniejącej inicjalizacji libcurl w aplikacji i cyklu życia easy-handle:

curl_easy_setopt(handle, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(handle, CURLOPT_PROXY, "127.0.0.1:1080");
curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
curl_easy_setopt(handle, CURLOPT_NOPROXY, "");
curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 5L);
curl_easy_setopt(handle, CURLOPT_TIMEOUT, 15L);

CURLPROXY_SOCKS5_HOSTNAME wysyła nazwę hosta celu ścieżką SOCKS. CURLPROXY_SOCKS5 zamiast tego rozwiązuje ją po stronie klienta, który może używać widoku DNS innej sieci. Klient HTTP w C++ korzystający z libcurl nie potrzebuje własnego uścisku dłoni SOCKS tylko po to, by wybrać tę trasę. Dla dozwolonego publicznego punktu końcowego lista proxy SOCKS5 oferuje kandydatów hosta i portu do zastąpienia ilustracyjnego odbiornika loopback.

Pusta CURLOPT_NOPROXY wartość czyni test proxy celowym. Zachowaj zamierzone obejścia podczas dostosowywania do normalnej polityki aplikacji. Te opcje dotyczą tego uchwytu; inne biblioteki i gniazda w procesie ich nie dziedziczą.

Sprawdzaj wartości zwracane przez ustawianie opcji i transfer za pomocą obsługi błędów aplikacji. Niepowodzenie w dotarciu do SOCKS lub negocjacjach z nim może wystąpić przed jakąkolwiek odpowiedzią HTTP, więc nie dostarcza kodu stanu witryny.

Wymagane poświadczenia proxy korzystają z obsługiwanych ustawień uwierzytelniania proxy i mechanizmu sekretów, oddzielnie od logowania do witryny. Pozostaw weryfikację TLS włączoną: otwarcie połączenia przez SOCKS nie ustala tożsamości usługi HTTPS.

Powiązane artykuły