Configurare un handle libcurl per la risoluzione dei nomi host SOCKS5
Usate CURLPROXY_SOCKS5_HOSTNAME sull'handle di trasferimento per risolvere la destinazione tramite il proxy.
All'interno dell'inizializzazione libcurl esistente di un'applicazione e del ciclo di vita dell'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 invia il nome host della destinazione lungo il percorso SOCKS. CURLPROXY_SOCKS5 invece lo risolve sul client, che può usare la vista DNS di un'altra rete. Un client HTTP in C++ che usa libcurl non ha bisogno del proprio handshake SOCKS solo per scegliere questa rotta. Per un endpoint pubblico consentito, la lista di proxy SOCKS5 offre candidati host e porta per sostituire il listener loopback illustrativo.
Il valore CURLOPT_NOPROXY vuoto rende deliberata la prova del proxy. Conservate i bypass previsti quando lo adattate alla normale policy dell'applicazione. Queste opzioni riguardano questo handle; altre librerie e socket nel processo non le ereditano.
Controllate i valori di ritorno dell'impostazione delle opzioni e del trasferimento tramite la gestione degli errori dell'applicazione. Un fallimento nel raggiungere o negoziare con SOCKS può precedere qualsiasi risposta HTTP, quindi non fornisce un codice di stato del sito web.
Le credenziali proxy richieste usano le impostazioni di autenticazione proxy supportate e il meccanismo dei segreti, separatamente dall'accesso al sito web. Mantenete attiva la verifica TLS: aprire una connessione tramite SOCKS non stabilisce l'identità del servizio HTTPS.