Uvnitř stávající inicializace libcurl v aplikaci a životního cyklu 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 posílá název hostitele cíle po cestě SOCKS. CURLPROXY_SOCKS5 místo toho jej překládá na klientovi, který může používat DNS pohled jiné sítě. HTTP klient v C++ používající libcurl nepotřebuje vlastní SOCKS handshake jen kvůli volbě této trasy. Pro povolený veřejný koncový bod, seznam SOCKS5 proxy nabízí kandidáty hostitele a portu, které nahradí ilustrativní loopback posluchač.

Prázdná CURLOPT_NOPROXY hodnota činí test proxy záměrným. Zachovejte zamýšlená obejití při přizpůsobení běžné politice aplikace. Tyto volby ovlivňují tento handle; ostatní knihovny a sockety v procesu je nedědí.

Kontrolujte návratové hodnoty nastavení voleb a přenosu prostřednictvím zpracování chyb aplikace. Selhání při dosažení SOCKS nebo vyjednávání s ním může nastat před jakoukoli odpovědí HTTP, takže neposkytuje stavový kód webu.

Požadované přihlašovací údaje proxy používají podporovaná nastavení autentizace proxy a mechanismus tajemství odděleně od přihlášení k webu. Ponechte ověřování TLS zapnuté: otevření spojení přes SOCKS neprokazuje identitu služby HTTPS.

Související články