PHP қолданбасы Alice пен Bob-қа қызмет көрсетеді, екеуі де оның серверлік cURL клиентін пайдаланып, прокси арқылы бір қашықтағы сайтқа жетеді. Егер әрбір сұраныс cookies.txt жүктесе, екі пайдаланушы бір қашықтағы кірісті мұралыққа алуы мүмкін. Олардың прокси мекенжайларын өзгерту сол файлды бөлмейді.

Файл атауын таңдамас бұрын cookie иесін таңдаңыз. Әдетте бұл қолданбаның логикалық қашықтағы сессиясы: жергілікті пайдаланушы, белгілі бір қашықтағы тіркелгі және қажет болғанда бөлек жұмыс кеңістігі. Прокси соңғы нүктесі — маршруттау таңдауы, сенімді сессия идентификаторы емес. Бірнеше пайдаланушы бір соңғы нүктені бөлісе алады, ал соңғы нүкте шығуларды ауыстыра алады.

Сол сессияның құмырасын жүктеңіз және сақтаңыз

Қолданба өзінің аутентификацияланған сессиясын сервер жасаған файл кілтімен байланыстырсын. Жеке cookie каталогымен және сенімді $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 прокси тізімі үміткер соңғы нүктелерді ұсынады. Конфигурацияланған прокси аутентификациясыз немесе сақталған прокси тіркелгі деректерінсіз тұтқаны пайдаланыңыз және cookie күйін оның мақсатты сессиясына тағайындалған күйде ұстаңыз. Бұл фрагмент тұтқаны конфигурациялайды; қолданба тасымалдауды орындайды және нәтижені әдеттегі сұраныс ағыны арқылы тексереді. COOKIEFILE сессияның алдыңғы cookie файлдарын жүктейді. COOKIEJAR тұтқаның сақталған cookie файлдарын қайда жазатынын таңдайды. Тек шығыс файлын орнату алдыңғы кірісті жүктемейді.

Жаңа сессия файлсыз басталуы мүмкін. Оның бірінші тасымалдауына мақсатты құмыра жолын беріңіз, сайт cookie файлдарын орнатсын, ал алынған күйді келесі сұраныс үшін сақтаңыз. Cookie каталогы қолданба жұмысшысы жаза алатындай болуы және жария түрде қызмет көрсетілетін құжаттар ағашынан тыс ұсталуы керек. Келуші ұсынған пайдаланушы атын немесе жолды файл атауына айналдырмаңыз; сенімді кілтті серверден іздеңіз.

Сақтауға сұраныс өмірлік циклінде орын керек

libcurl әдетте құмыраны тұтқаны тазалау кезінде жазады. Егер қолданбаға қашықтағы алмасудан кейін айқын сақтау нүктесі қажет болса, ол сұрай алады:

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

Бұл тұтқаға қазір белгілі cookie файлдарын оның конфигурацияланған құмырасына жазады. Тұтқаны сол сессия үшін пайдалануды аяқтаңыз, содан кейін оны байланыссыз жұмысқа тағайындаңыз. Alice-тің cookie файлдарын ұстап тұрған тұтқада тек құмыра жолын өзгерту Bob-тың таза сессиясын жасауға тең емес.

Сондай-ақ сәтті жүктеуді сәтті сақтаудан ажыратыңыз. Cookie құмырасының құжаттамасы тазалау кезіндегі жазу қатесі әдеттегі тасымалдау қатесі ретінде қайтарылмайтынын атап өтеді. Кіру бір сұраныс үшін жұмыс істеп, келесісінде жоғалса, каталог иелігін, рұқсаттарын және қолданбаның диагностикалық шығысын тексеріңіз.

Қатар жүрген сұраныстар тағы бір шекара енгізеді. Екі жұмысшы бір ескі құмыраны жүктеп, өз жадындағы күйін тәуелсіз өзгертіп, содан кейін әртүрлі нәтижелерді сақтай алады. Егер екі сұраныс бір қашықтағы кірісті бөліссе, сессия бойынша құлыптау немесе баламалы реттілік бүкіл жүктеу, алмасу және сақтау реттілігін қамтуы керек; тек соңғы жазуды құлыптау олардың бұрынғы суреттерін үйлестірмейді. Әртүрлі сессиялардың әртүрлі файлдары мен тәуелсіз құлыптары болуы керек.

Шығу кезінде мақсатты қашықтағы сессияны аяқтаңыз және оның жергілікті cookie күйін қолданба саясатына сәйкес шығарыңыз. Жаңадан таңдалған прокси содан кейін пайдаланушы бастаған кез келген жаңа сессияға қосыла алады, прокси мекенжайы жадында кімнің кірісі бар екенін шешуге міндеттелмейді.

Қатысты мақалалар