Проблема с кукой JSESSIONID при повторном запросе

103
21 апреля 2022, 05:20

Кидаю гет запрос, чтобы установить новый сеанс и записать куки в файл

$cookie = dirname(__FILE__)."\cookie.txt";
$post_data = '{"userQuery":"( !^!(applicationNumber:(*12*))!^! )"}';
$headers = array(
               
                'Upgrade-Insecure-Requests:1',
                'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
                'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
);
       
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://site.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);
//curl_setopt($curl, CURLOPT_PROXY, '51.89.94.21:3128');
curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($curl, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_NOBODY, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
$result = curl_exec($curl);
print_R(curl_getinfo($curl, CURLINFO_COOKIELIST));
echo '<br><br>';
echo $result;

В файл куки записались все, кидаю второй post запрос

$headers = array(
                'Content-Length: '.strlen($post_data),
                'Accept:application/json, text/plain, */*',
                'X-Requested-With:XMLHttpRequest',
                'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
                'Content-Type:application/json;charset=UTF-8',
);
curl_setopt($curl, CURLOPT_URL, 'https://site.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, '{"userQuery":"( !^!(applicationNumber:(*12*))!^! )"}');
curl_setopt($curl, CURLOPT_POST, 1);
 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_COOKIESESSION, false);
curl_setopt($curl, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLOPT_NOBODY, 0);
//curl_setopt($curl, CURLOPT_PROXY, '51.89.94.21:3128');
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
$curl_response = curl_exec($curl);
print_R(curl_getinfo($curl, CURLINFO_COOKIELIST));
echo '<br><br>';
print_R(curl_error($curl));
echo '<br><br>';
echo $curl_response;
exit;

Ответ 403. В Postman ставил Interceptor, заголовки все стянул, удалял по-этапно и для успешного запроса с кодом 200 мне нужно отправить в заголовок Content-Type и Content-Length + куки сессии. При первом и втором запросе, CURLINFO_COOKIELIST показывает один и тот же сеанс JSESSIONID. В браузере если сеанс начался и я его заменяю в скрипт curl или в postman, то сервер отдает 200, а если даже в postman отправлю гет запрос, установятся куки и отправлю с теми же куками пост запрос - снова 403. Буду рад любой информации, уже весь гугл пересмотрел, все примеры применил, все равно 403 отдает. Подскажите пожалуйста где я не прав или в какую сторону гугла смотреть?

Answer 1

Если у кого-то будет подобная проблема, то user413219 прав, мне понадобилось изучить все скрипты ангуляра доступные из сервера и отследить все запросы, которые отправляются в момент, когда осуществляется очистка всех кук. Поэтому решения для меня - отправить гет запросы на все последовательные запросы и только потом выполнить post запрос на едином сеансе. Спасибо.

READ ALSO
Как работает такое выражение php

Как работает такое выражение php

Подскажите как работает такая строка: $app = require('/lib/base

223
Как сохранять данные, введённые пользователем в input-форму на сайте?

Как сохранять данные, введённые пользователем в input-форму на сайте?

Есть сайтНа сайте есть кнопка, при нажатии на которую я хочу, чтобы пользователь вводил своё имя и номер и эти данные отправлялись мне и я человеку...

92
Цикл While при обработке данных в БД

Цикл While при обработке данных в БД

Я беру из базы данных строки соответствующие определенному Sale_id, в которых есть sum и высчитываю определенные процент из этих sum, по следующему...

177