Деякі проксі-продукти визначають процес входу, який надає cookie або токен для наступних проксі-запитів. Якщо цей токен має з'являтися в CONNECT, тримайте його окремо від cookie, призначених для сайту всередині тунелю.

libcurl надає окремий список користувацьких заголовків для проксі. У вже ініціалізованому застосунку C фрагмент конфігурації може виглядати так:

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

Це доречно лише тоді, коли документований протокол входу проксі вимагає цього заголовка. Перевірте результати виділення та опцій у навколишньому коді, зберігайте список до завершення передавання, потім очистіть або замініть покажчик дескриптора перед звільненням списку.

За окремого оброблення заголовків libcurl надсилає список проксі в CONNECT, а список призначення — у запиті всередині встановленого тунелю. Так проксі отримує токен постачальника, не перетворюючи його на cookie сайту. Це розділення є типовим від libcurl 7.42.1; явна опція робить передбачувану поведінку видимою.

Сховище cookie браузера — інший механізм

Увімкнення механізму cookie libcurl або встановлення cookie для призначення не відтворює автоматично власний процес входу браузера через проксі. CONNECT відбувається до обміну HTTPS із призначенням. Визначте фактичні вимоги продукту, а не копіюйте перехоплений cookie сайту в кожен запит.

Якщо проксі використовує стандартну автентифікацію HTTP-проксі, використовуйте натомість облікові дані проксі libcurl і підтримувані параметри автентифікації. 407 із Proxy-Authenticate — це інший протокол, ніж HTML-сторінка входу, що повертає токен сеансу.

Обмежте токен його кінцевою точкою проксі та передбачуваним терміном життя. Переходячи до іншого посередника, замініть список заголовків як частину цієї зміни конфігурації. Загальний список заголовків запиту — погане місце для секрету, що належить лише одному проксі.

Схожі статті