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 абалын колдонмонун саясатына ылайык чыгарыңыз. Жаңы тандалган прокси андан кийин колдонуучу баштаган каалаган жаңы сессияга туташтырылышы мүмкүн, прокси дареги эс тутумда кимдин кирүүсү бар экенин чечүүгө милдеттүү болбойт.

Тектеш макалалар