Beberapa produk proxy mendefinisikan alur login yang menyediakan cookie atau token untuk permintaan proxy berikutnya. Jika token itu harus muncul pada CONNECT, pisahkan dari cookie yang ditujukan untuk situs web di dalam terowongan.

libcurl menyediakan daftar header kustom khusus untuk proxy. Dalam aplikasi C yang sudah diinisialisasi, potongan konfigurasi dapat terlihat seperti ini:

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

Ini hanya sesuai bila protokol login terdokumentasi milik proxy meminta header tersebut. Periksa hasil alokasi dan opsi pada kode di sekitarnya, pertahankan daftar hingga transfer selesai, lalu bersihkan atau ganti pointer handle sebelum membebaskan daftar.

Dengan penanganan header terpisah, libcurl mengirim daftar proxy pada CONNECT dan daftar tujuan pada permintaan di dalam terowongan yang telah terbentuk. Proxy pun menerima token vendor tanpa token itu menjadi cookie situs web. Pemisahan ini adalah bawaan sejak libcurl 7.42.1; opsi eksplisit membuat perilaku yang dimaksud terlihat.

Toples cookie peramban adalah mekanisme lain

Mengaktifkan mesin cookie libcurl atau menyetel cookie untuk tujuan tidak otomatis mereproduksi alur login proxy milik peramban. CONNECT terjadi sebelum pertukaran HTTPS dengan tujuan. Identifikasi kebutuhan sebenarnya produk alih-alih menyalin cookie situs yang tertangkap ke setiap permintaan.

Jika proxy menggunakan autentikasi proxy HTTP standar, gunakan kredensial proxy libcurl dan opsi autentikasi yang didukung. 407 dengan Proxy-Authenticate adalah protokol berbeda dari halaman login HTML yang mengembalikan token sesi.

Batasi token pada titik akhir proxynya dan masa hidup yang dimaksud. Saat beralih ke perantara lain, ganti daftar header sebagai bagian dari perubahan konfigurasi itu. Daftar header permintaan umum adalah tempat buruk bagi rahasia yang hanya milik satu proxy.

Artikel terkait