easy:SetOpt_HTTPProxyTunnel(tunnel)
#CURLOPT_PROXY
). Es gibt einen
großen Unterschied zwischen der Verwendung eines Proxys und dem
Tunneln durch ihn.
Tunneln bedeutet, dass eine HTTP CONNECT-Anfrage an den Proxy gesendet wird, die ihn auffordert, sich mit einem Remote-Host unter einer bestimmten Portnummer zu verbinden und dann wird der Datenverkehr einfach durch den Proxy geleitet. Proxies neigen dazu, bestimmte Portnummern auf die Whitelist zu setzen, an die sie CONNECT-Anfragen zulassen und oft sind nur Port 80 und 443 erlaubt.
Um Proxy CONNECT-Antwort-Header aus Benutzer-Callbacks zu unterdrücken,
verwenden Sie #CURLOPT_SUPPRESS_CONNECT_HEADERS
.
HTTP-Proxies können in der Regel nur mit HTTP kommunizieren (aus offensichtlichen Gründen), was dazu führt, dass libcurl Nicht-HTTP-Anfragen in HTTP konvertiert, wenn ein HTTP-Proxy ohne diese Tunnel-Option verwendet wird. Wenn Sie beispielsweise nach einer FTP-URL fragen und einen HTTP-Proxy angeben, lässt libcurl eine FTP-URL in einer HTTP-GET-Anfrage an den Proxy senden. Indem Sie stattdessen durch den Proxy tunneln, vermeiden Sie diese Konvertierung (die ohnehin selten über den Proxy funktioniert).