Alcuni prodotti proxy definiscono un flusso di accesso che fornisce un cookie o un token per le richieste proxy successive. Se quel token deve comparire su CONNECT, tenetelo separato dai cookie destinati al sito web all'interno del tunnel.

libcurl fornisce un elenco dedicato di header personalizzati per il proxy. In un'applicazione C già inizializzata, un frammento di configurazione può apparire così:

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);

Ciò è appropriato solo quando il protocollo di accesso documentato del proxy richiede quell'header. Verificate i risultati di allocazione e delle opzioni nel codice circostante, conservate l'elenco finché il trasferimento non è completato, quindi cancellate o sostituite il puntatore dell'handle prima di liberare l'elenco.

Con la gestione separata degli header, libcurl invia l'elenco proxy su CONNECT e l'elenco di destinazione sulla richiesta all'interno del tunnel stabilito. Così il proxy riceve il token del fornitore senza che quel token diventi un cookie del sito web. Questa separazione è predefinita da libcurl 7.42.1; l'opzione esplicita rende visibile il comportamento previsto.

Un barattolo di cookie del browser è un altro meccanismo

Abilitare il motore dei cookie di libcurl o impostare un cookie per la destinazione non riproduce automaticamente il flusso di accesso proxy proprietario di un browser. CONNECT avviene prima dello scambio HTTPS con la destinazione. Identificate i requisiti reali del prodotto invece di copiare un cookie di sito catturato in ogni richiesta.

Se il proxy usa l'autenticazione proxy HTTP standard, usate invece le credenziali proxy di libcurl e le opzioni di autenticazione supportate. Un 407 con Proxy-Authenticate è un protocollo diverso da una pagina di accesso HTML che restituisce un token di sessione.

Limitate il token al suo endpoint proxy e alla durata prevista. Quando passate a un altro intermediario, sostituite l'elenco degli header come parte di quel cambio di configurazione. Un elenco generico di header di richiesta è un posto sbagliato per un segreto che appartiene a un solo proxy.

Articoli correlati