Algúns produtos de proxy definen un fluxo de inicio de sesión que fornece unha cookie ou un token para solicitudes de proxy posteriores. Se ese token debe aparecer en CONNECT, mantéñao separado das cookies destinadas ao sitio web dentro do túnel.

libcurl ofrece unha lista dedicada de cabeceiras personalizadas para o proxy. Nunha aplicación C xa inicializada, un fragmento de configuración pode verse así:

struct curl_slist *proxy_headers = NULL;
proxy_headers = curl_slist_append(proxy_headers,
    "Cookie: ProxySession=REPLACE_WITH_PROXY_TOKEN");
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HEADEROPT,
                 (long) CURLHEADER_SEPARATE);

Isto só é axeitado cando o protocolo de inicio de sesión documentado do proxy require esa cabeceira. Comprobe os resultados de asignación e de opcións no código circundante, conserve a lista ata que a transferencia remate e, despois, borre ou substitúa o punteiro do identificador antes de liberar a lista.

Co tratamento separado de cabeceiras, libcurl envía a lista de proxy en CONNECT e a lista de destino na solicitude dentro do túnel establecido. Así, o proxy recibe o token do provedor sen que ese token se converta nunha cookie do sitio web. Esta separación é a predeterminada desde libcurl 7.42.1; a opción explícita fai visible o comportamento previsto.

Un tarro de cookies do navegador é outro mecanismo

Activar o motor de cookies de libcurl ou establecer unha cookie para o destino non reproduce automaticamente o fluxo de inicio de sesión de proxy propietario dun navegador. CONNECT ocorre antes do intercambio HTTPS co destino. Identifique os requisitos reais do produto en lugar de copiar unha cookie de sitio capturada en cada solicitude.

Se o proxy usa autenticación de proxy HTTP estándar, use no seu lugar as credenciais de proxy de libcurl e as opcións de autenticación compatibles. Un 407 con Proxy-Authenticate é un protocolo distinto dunha páxina de inicio de sesión HTML que devolve un token de sesión.

Manteña o token limitado ao seu extremo de proxy e á súa vida útil prevista. Ao cambiar a outro intermediario, substitúa a lista de cabeceiras como parte dese cambio de configuración. Unha lista xeral de cabeceiras de solicitude é un mal lugar para un segredo que pertence só a un proxy.

Artigos relacionados