Binne 'n toepassing se bestaande libcurl-inisialisering en easy-handle-lewensiklus:

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 stuur die bestemmingsgasheernaam langs die SOCKS-pad. CURLPROXY_SOCKS5 los dit eerder by die kliënt op, wat 'n ander netwerk se DNS-beskouing kan gebruik. 'n C++-HTTP-kliënt wat libcurl gebruik, het nie sy eie SOCKS-handdruk nodig net om hierdie roete te kies nie. Vir 'n toegelate openbare eindpunt bied die SOCKS5-instaanbedienerlys gasheer- en poortkandidate om die illustratiewe loopback-luisteraar te vervang.

Die leë CURLOPT_NOPROXY waarde maak die instaanbedienertoets doelbewus. Behoud beoogde omseilings wanneer jy dit by normale toepassingsbeleid aanpas. Hierdie opsies raak hierdie handvatsel; ander biblioteke en sokkels in die proses erf dit nie.

Kontroleer opsie-instelling en oordragterugkeerwaardes deur die toepassing se fouthantering. Om SOCKS te bereik of daaroor te onderhandel kan voor enige HTTP-antwoord misluk, dus verskaf dit nie 'n webwerfstatuskode nie.

Vereiste instaanbedienerbewyse gebruik die ondersteunde instaanbediener-verifikasiestellings en geheime meganisme, apart van die webwerf se aanmelding. Hou TLS-verifikasie aktief: om 'n verbinding deur SOCKS oop te maak, vestig nie die identiteit van die HTTPS-diens nie.

Verwante artikels