Păstrarea unui cookie de proxy în cererea CONNECT
Folosiți interfața separată de antete proxy a libcurl pentru o autentificare CONNECT definită de furnizor, în loc să tratați un cookie de destinație ca autentificare proxy.
Unele produse proxy definesc un flux de autentificare care furnizează un cookie sau un token pentru cererile proxy ulterioare. Dacă acel token trebuie să apară pe CONNECT, păstrați-l separat de cookie-urile destinate site-ului din interiorul tunelului.
libcurl oferă o listă dedicată de antete personalizate pentru proxy. Într-o aplicație C deja inițializată, un fragment de configurare poate arăta astfel:
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);Acest lucru este potrivit numai când protocolul de autentificare documentat al proxy-ului solicită acel antet. Verificați rezultatele alocării și ale opțiunilor în codul din jur, păstrați lista până când transferul s-a încheiat, apoi goliți sau înlocuiți pointerul handle-ului înainte de a elibera lista.
Cu gestionarea separată a antetelor, libcurl trimite lista proxy pe CONNECT și lista de destinație pe cererea din tunelul stabilit. Astfel proxy-ul primește tokenul furnizorului fără ca acel token să devină un cookie al site-ului. Această separare este implicită începând cu libcurl 7.42.1; opțiunea explicită face vizibil comportamentul dorit.
Un borcan de cookie-uri al browserului este un alt mecanism
Activarea motorului de cookie-uri al libcurl sau setarea unui cookie pentru destinație nu reproduce automat fluxul de autentificare proxy propriu al unui browser. CONNECT are loc înainte de schimbul HTTPS cu destinația. Identificați cerințele reale ale produsului în loc să copiați un cookie de site capturat în fiecare cerere.
Dacă proxy-ul folosește autentificarea proxy HTTP standard, folosiți în schimb acreditările proxy ale libcurl și opțiunile de autentificare acceptate. Un 407 cu Proxy-Authenticate este un protocol diferit de o pagină de autentificare HTML care returnează un token de sesiune.
Limitați tokenul la punctul său final proxy și la durata de viață dorită. Când treceți la un alt intermediar, înlocuiți lista de antete ca parte a acelei modificări de configurare. O listă generală de antete de cerere este un loc prost pentru un secret care aparține unui singur proxy.