एक PHP अनुप्रयोग Alice और Bob की सेवा करता है, और दोनों प्रॉक्सी के माध्यम से उसी दूरस्थ वेबसाइट तक पहुँचने के लिए उसके सर्वर-साइड cURL क्लाइंट का उपयोग करते हैं। यदि प्रत्येक अनुरोध cookies.txt लोड करता है, तो दोनों उपयोगकर्ता एक ही दूरस्थ लॉगिन विरासत में ले सकते हैं। उनके प्रॉक्सी पते बदलने से वह फ़ाइल अलग नहीं होती।

फ़ाइल का नाम चुनने से पहले कुकी का स्वामी चुनें। आम तौर पर यह अनुप्रयोग का तार्किक दूरस्थ सत्र होता है: एक स्थानीय उपयोगकर्ता, एक विशेष दूरस्थ खाता और, जहाँ आवश्यक हो, एक अलग कार्यक्षेत्र। प्रॉक्सी एंडपॉइंट एक रूटिंग विकल्प है, विश्वसनीय सत्र पहचानकर्ता नहीं। कई उपयोगकर्ता एक एंडपॉइंट साझा कर सकते हैं, और एक एंडपॉइंट निकास बदल सकता है।

उसी सत्र का जार लोड और सहेजें

अनुप्रयोग को अपने प्रमाणित सत्र को सर्वर-जनित फ़ाइल कुंजी पर मैप करने दें। निजी कुकी निर्देशिका और विश्वसनीय $sessionKey के साथ, cURL कॉन्फ़िगरेशन यह रूप लेता है:

$jar = $cookieDirectory . '/' . $sessionKey . '.cookies';

$ch = curl_init('https://service.example.net/account');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://proxy.example.net:8080',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => $jar,
    CURLOPT_COOKIEJAR => $jar,
]);

सार्वजनिक मध्यस्थता की अनुमति देने वाले नेटवर्क पर अनुमत सार्वजनिक-साइट सत्र परीक्षण के लिए, HTTP प्रॉक्सी सूची उम्मीदवार एंडपॉइंट प्रदान करती है। ऐसा हैंडल उपयोग करें जिसमें कॉन्फ़िगर किया गया प्रॉक्सी प्रमाणीकरण या रखे गए प्रॉक्सी क्रेडेंशियल न हों, और कुकी स्थिति को उसके इच्छित सत्र को सौंपा हुआ रखें। यह अंश एक हैंडल कॉन्फ़िगर करता है; अनुप्रयोग स्थानांतरण करता है और अपने सामान्य अनुरोध प्रवाह से परिणाम जाँचता है। COOKIEFILE सत्र के पिछले कुकी लोड करता है। COOKIEJAR चुनता है कि हैंडल अपने रखे गए कुकी कहाँ लिखे। केवल आउटपुट फ़ाइल सेट करने से पिछला लॉगिन लोड नहीं होता।

नया सत्र बिना फ़ाइल के शुरू हो सकता है। उसके पहले स्थानांतरण को इच्छित जार पथ दें, वेबसाइट को कुकी स्थापित करने दें, और अगले अनुरोध के लिए परिणामी स्थिति सहेजें। कुकी निर्देशिका अनुप्रयोग के वर्कर द्वारा लिखने योग्य होनी चाहिए और सार्वजनिक रूप से परोसी जाने वाली दस्तावेज़ वृक्ष से बाहर रखी जानी चाहिए। आगंतुक द्वारा दिए गए उपयोगकर्ता नाम या पथ को फ़ाइल नाम में न बदलें; सर्वर पर विश्वसनीय कुंजी खोजें।

सहेजने के लिए अनुरोध जीवनचक्र में स्थान चाहिए

libcurl सामान्यतः हैंडल सफ़ाई के दौरान जार लिखता है। यदि अनुप्रयोग को दूरस्थ आदान-प्रदान के बाद स्पष्ट सहेजने का बिंदु चाहिए, तो यह अनुरोध कर सकता है:

curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');

यह हैंडल को वर्तमान में ज्ञात कुकी उसके कॉन्फ़िगर किए गए जार में लिखता है। उस सत्र के लिए हैंडल का उपयोग समाप्त करें, फिर उसे असंबंधित कार्य को सौंपें। जिस हैंडल में पहले से Alice की कुकी हैं, उस पर केवल जार पथ बदलना Bob का स्वच्छ सत्र बनाने के समान नहीं है।

सफल डाउनलोड और सफल दृढ़ता में भी अंतर करें। कुकी-जार दस्तावेज़ कहता है कि सफ़ाई के दौरान लेखन विफलता सामान्य स्थानांतरण त्रुटि के रूप में नहीं लौटाई जाती। जब लॉगिन एक अनुरोध के लिए काम करे और अगले में गायब हो जाए, तो निर्देशिका स्वामित्व, अनुमतियाँ और अनुप्रयोग का निदान आउटपुट जाँचें।

समवर्ती अनुरोध एक और सीमा लाते हैं। दो वर्कर एक ही पुराना जार लोड कर सकते हैं, स्वतंत्र रूप से अपनी इन-मेमोरी स्थिति बदल सकते हैं, और फिर अलग परिणाम सहेज सकते हैं। यदि दोनों अनुरोध एक ही दूरस्थ लॉगिन साझा करते हैं, तो प्रति-सत्र लॉक या समतुल्य क्रमबद्धता को पूरा लोड, आदान-प्रदान और सहेजने का क्रम कवर करना चाहिए; केवल अंतिम लेखन को लॉक करना उनके पुराने स्नैपशॉट को नहीं मिलाता। अलग सत्रों में अलग फ़ाइलें और स्वतंत्र लॉक होने चाहिए।

लॉगआउट पर, इच्छित दूरस्थ सत्र समाप्त करें और अनुप्रयोग की नीति के अनुसार उसकी स्थानीय कुकी स्थिति सेवानिवृत्त करें। नई चुनी गई प्रॉक्सी तब उपयोगकर्ता द्वारा शुरू किए गए किसी भी नए सत्र से जोड़ी जा सकती है, बिना प्रॉक्सी पते को यह तय करने का ज़िम्मा दिए कि स्मृति में किसका लॉगिन है।

संबंधित लेख