Имеется сайт с определенными данными, который в личном кабинете пользователя выводятся в модальном окне (ajax). В личный кабинет соответственно попадаем после авторизации. В js скриптах я нашел путь к PHP файлу, с которого выводятся данные через ajax.
Теперь я первым делом curl прохожу авторизацию (успешно):
function send_post_get_cookie($URL='', $PostData=Array(), $cookie='')
{
if (strlen($URL)<=0) return false;
$ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
if (strlen($cookie)>0)
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
$result = curl_exec($ch);
curl_close($ch);
$lines = explode("\n", $result);
for ($i=0, $cnt=count($lines); $i<$cnt; $i++)
if (strpos($lines[$i], 'Set-Cookie:') !== FALSE)
$cookie .= substr($lines[$i], strpos($lines[$i], 'Set-Cookie:')+strlen('Set-Cookie:'));
return $cookie;
}
Далее пытаюсь curl + post отправить сессию и post данные на этот самый PHP файл (например
https://site.ru/js/dannye.php) но как не стараюсь - пишет что сессия устарела или-же 400 bad request...
function open($URL='', $cook='')
{
$ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_COOKIE, $cook);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'page'=>'1'
));
$answer = curl_exec($ch);
curl_close ($ch);
return $answer;
}
Запускаю все это дело таким образом:
$cookie = send_post_get_cookie('https://site.ru/login.php', array(
'user'=>'test@test.ru',
'password'=>'12345'
));
open('https://site.ru/js/dannye.php',$cookie);
Но постоянно пишет что сессия истекла, как только не пробовал. В чем моя ошибка?
Request Headers из браузера:::::::::::::::::::::LOGIN
Request Headers:
POST /login.php HTTP/1.1
Host: sitename.ru
Connection: keep-alive
Content-Length: 72
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: https://sitename.ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 OPR/70.0.3728.106
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://sitename.ru/login.php
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: PHPSESSID=i99n3d2s6v1oibcsdp4vpa9rs2; skin=1
:::::::::::::::::::::MODAL
Request Headers:
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 81
Content-Type: application/x-www-form-urlencoded
Cookie: skin=1; PHPSESSID=i99n3d2s6v1oibcsdp4vpa9rs2; skin=1
Host: sitename.ru
Method: POST /js/dannye.php HTTP/1.1
Origin: https://sitename.ru
Referer: https://sitename.ru/main.php
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 OPR/70.0.3728.106