Dentro da inicialización de libcurl existente da aplicación e do ciclo de vida do 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 envía o nome de host do destino pola ruta SOCKS. CURLPROXY_SOCKS5 en cambio resólveo no cliente, que pode usar a vista DNS doutra rede. Un cliente HTTP en C++ que usa libcurl non necesita o seu propio handshake SOCKS só para elixir esta ruta. Para un punto de conexión público permitido, a lista de proxies SOCKS5 ofrece candidatos de host e porto para substituír o oínte loopback ilustrativo.

O valor CURLOPT_NOPROXY baleiro fai deliberada a proba do proxy. Conserve as omisións previstas ao adaptalo á política normal da aplicación. Estas opcións afectan este handle; outras bibliotecas e sockets do proceso non as herdan.

Comprobe os valores de retorno da configuración de opcións e da transferencia mediante o tratamento de erros da aplicación. Un fallo ao alcanzar ou negociar con SOCKS pode producirse antes de calquera resposta HTTP, polo que non proporciona un código de estado do sitio web.

As credenciais de proxy necesarias usan a configuración de autenticación de proxy compatible e o mecanismo de segredos, por separado do inicio de sesión do sitio web. Manteña activada a verificación TLS: abrir unha conexión a través de SOCKS non establece a identidade do servizo HTTPS.

Artigos relacionados