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.

Различавайте също успешното изтегляне от успешното запазване. Документацията на буркана отбелязва, че неуспешен запис по време на почистване не се връща като обикновена грешка при трансфер. Проверете собствеността на директорията, разрешенията и диагностичния изход на приложението, когато входът работи за една заявка и изчезне при следващата.

Паралелните заявки въвеждат още една граница. Двама работници могат да заредят същия стар буркан, независимо да променят състоянието си в паметта и след това да запазят различни резултати. Заключване за сесия или еквивалентна сериализация трябва да покрива цялата последователност зареждане, обмен и запазване, ако двете заявки споделят един отдалечен вход; заключването само на финалния запис не съгласува по-ранните им снимки. Различните сесии трябва да имат различни файлове и независими ключалки.

При изход прекратете предвидената отдалечена сесия и оттеглете локалното ѝ състояние на бисквитки според политиката на приложението. Новоизбраното прокси може след това да бъде прикачено към всяка нова сесия, която потребителят започне, без адресът на проксито да отговаря за решаването чий вход е в паметта.

Подобни статии