एक 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 चे स्वच्छ सत्र तयार करण्यासारखे नाही.

यशस्वी डाउनलोड आणि यशस्वी टिकवण यातही फरक करा. कुकी-जार दस्तऐवज सांगते की साफसफाईदरम्यानचा लेखन अपयश सामान्य हस्तांतरण त्रुटी म्हणून परत केला जात नाही. जेव्हा लॉगिन एका विनंतीसाठी चालते आणि पुढील वेळी नाहीशी होते, तेव्हा डिरेक्टरी मालकी, परवानग्या आणि अनुप्रयोगाचे निदान आउटपुट तपासा.

एकाच वेळच्या विनंत्या आणखी एक सीमा आणतात. दोन कामगार एकच जुने जार लोड करू शकतात, स्वतंत्रपणे आपली स्मृतीतील स्थिती बदलू शकतात आणि नंतर वेगळे निकाल जतन करू शकतात. दोन्ही विनंत्या एकच दूरचे लॉगिन सामायिक करत असल्यास, प्रति-सत्र लॉक किंवा समतुल्य क्रमबद्धतेने संपूर्ण लोड, देवाणघेवाण आणि जतन क्रम व्यापला पाहिजे; फक्त अंतिम लेखन लॉक केल्याने त्यांचे आधीचे स्नॅपशॉट जुळत नाहीत. वेगवेगळ्या सत्रांना वेगळ्या फाइली आणि स्वतंत्र लॉक असावेत.

लॉगआउटला, इच्छित दूरचे सत्र संपवा आणि अनुप्रयोगाच्या धोरणानुसार त्याची स्थानिक कुकी स्थिती निवृत्त करा. नव्याने निवडलेली प्रॉक्सी नंतर वापरकर्ता सुरू करेल त्या कोणत्याही नव्या सत्राशी जोडता येते, प्रॉक्सी पत्त्यावर स्मृतीत कोणाचे लॉगिन आहे हे ठरवण्याची जबाबदारी न टाकता.

संबंधित लेख