Konfigurera ett libcurl-handtag för SOCKS5-värdnamnsupplösning
Använd CURLPROXY_SOCKS5_HOSTNAME på överföringshandtaget för att lösa destinationen via proxyn.
Inuti ett programs befintliga libcurl-initiering och easy-handle-livscykel:
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 skickar destinationens värdnamn längs SOCKS-vägen. CURLPROXY_SOCKS5 löser i stället upp det på klienten, som kan använda en annan nätverksvy för DNS. En C++ HTTP-klient som använder libcurl behöver inte sin egen SOCKS-handskakning bara för att välja denna väg. För en tillåten offentlig slutpunkt erbjuder SOCKS5-proxylistan värd- och portkandidater för att ersätta den illustrativa loopback-lyssnaren.
Det tomma CURLOPT_NOPROXY värdet gör proxytestet avsiktligt. Behåll avsedda kringgåenden när du anpassar det till normal applikationspolicy. Dessa alternativ påverkar detta handtag; andra bibliotek och sockets i processen ärver dem inte.
Kontrollera returvärden för inställning av alternativ och överföring genom programmets felhantering. Att inte nå eller förhandla med SOCKS kan inträffa före något HTTP-svar, så det ger ingen webbplatsstatuskod.
Nödvändiga proxyuppgifter använder de stödda proxyautentiseringsinställningarna och hemlighetsmekanismen, separat från webbplatsens inloggning. Håll TLS-verifieringen aktiverad: att öppna en anslutning via SOCKS fastställer inte HTTPS-tjänstens identitet.