Ein libcurl-Handle für die SOCKS5-Hostnamenauflösung konfigurieren
Verwenden Sie CURLPROXY_SOCKS5_HOSTNAME am Transfer-Handle, um das Ziel über den Proxy aufzulösen.
Innerhalb der bestehenden libcurl-Initialisierung einer Anwendung und des Lebenszyklus eines Easy-Handles:
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 sendet den Hostnamen des Ziels entlang des SOCKS-Pfads. CURLPROXY_SOCKS5 löst ihn stattdessen auf dem Client auf, der die DNS-Sicht eines anderen Netzwerks nutzen kann. Ein C++-HTTP-Client mit libcurl benötigt keinen eigenen SOCKS-Handshake, nur um diese Route zu wählen. Für einen zulässigen öffentlichen Endpunkt bietet die SOCKS5-Proxy-Liste Host- und Portkandidaten, um den beispielhaften Loopback-Listener zu ersetzen.
Der leere CURLOPT_NOPROXY Wert macht den Proxy-Test bewusst. Bewahren Sie beabsichtigte Umgehungen, wenn Sie ihn an die normale Anwendungsrichtlinie anpassen. Diese Optionen betreffen dieses Handle; andere Bibliotheken und Sockets im Prozess erben sie nicht.
Prüfen Sie die Rückgabewerte des Setzens von Optionen und der Übertragung über die Fehlerbehandlung der Anwendung. Ein Fehlschlag beim Erreichen oder Aushandeln von SOCKS kann vor jeder HTTP-Antwort auftreten und liefert daher keinen Website-Statuscode.
Erforderliche Proxy-Anmeldedaten verwenden die unterstützten Proxy-Authentifizierungseinstellungen und den Secret-Mechanismus, getrennt vom Login der Website. Lassen Sie die TLS-Verifikation aktiviert: Das Öffnen einer Verbindung über SOCKS stellt die Identität des HTTPS-Dienstes nicht fest.