Configurarea unui handle libcurl pentru rezolvarea numelui de gazdă SOCKS5
Utilizați CURLPROXY_SOCKS5_HOSTNAME pe handle-ul de transfer pentru a rezolva destinația prin proxy.
În interiorul inițializării libcurl existente a aplicației și al ciclului de viață al 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 trimite numele de gazdă al destinației pe calea SOCKS. CURLPROXY_SOCKS5 în schimb îl rezolvă pe client, care poate folosi vizualizarea DNS a unei alte rețele. Un client HTTP în C++ care folosește libcurl nu are nevoie de propriul handshake SOCKS doar pentru a alege această rută. Pentru un punct final public permis, lista de proxy SOCKS5 oferă candidați de gazdă și port pentru a înlocui ascultătorul loopback ilustrativ.
Valoarea CURLOPT_NOPROXY goală face testul proxy deliberat. Păstrați ocolirile prevăzute atunci când îl adaptați la politica normală a aplicației. Aceste opțiuni afectează acest handle; alte biblioteci și socketuri din proces nu le moștenesc.
Verificați valorile returnate de setarea opțiunilor și de transfer prin gestionarea erorilor aplicației. Eșecul de a ajunge la SOCKS sau de a negocia cu acesta poate precede orice răspuns HTTP, deci nu oferă un cod de stare al site-ului.
Acreditările proxy necesare folosesc setările de autentificare proxy acceptate și mecanismul de secrete, separat de autentificarea pe site. Mențineți verificarea TLS activată: deschiderea unei conexiuni prin SOCKS nu stabilește identitatea serviciului HTTPS.