cURL сессия, и передача токена в заголовках

133
10 сентября 2019, 01:40

собственно что именно делаю, есть страница, с которой нужно получить некоторую информацию, все бы было хорошо, но часть контента подгружается отдельно, и насколько понял с использованием токенна безопасности и сохранением сессии куков.

Бьюсь уже второй день никак не могу получить нужную информацию. Сначала получаю основную страницу, получаю из нее нужный мне ИД и токкен, сохраняю куки, формирую заголовки, и пробую делать запрос к второй странице, которая должна отдать массив в формате джосон, но в итоге получаю ответ 404....

уже наверное все перепробовал, может делаю что-то не так? может кто-то сталкивался с подобной проблемой?

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://marathons.ahotu.com/event/casa-grande-half-marathon-5k');
//первая страница
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'COOKI.txt'); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'COOKI.txt'); 
$answer = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}
preg_match('/<meta name="csrf-token" content="(.*?)" \/>/is', $answer, $token); //получаю токен
preg_match('/<add-event-info id="(.*?)" locale="en"/is', $answer, $id); //получаю id

curl_setopt($ch, CURLOPT_URL, 'https://marathons.ahotu.com/media?a_event_id='.$id['1']);
curl_setopt($ch, CURLOPT_POST, false);
//Формирую заголовки
$headers[] = 'X-CSRF-Token:'.$token['1'];
$headers[] = 'Accept: application/json, text/plain, */*';
$headers[] = 'X-Requested-With: XMLHttpRequest';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_REFERER,'https://marathons.ahotu.com/event/casa-grande-half-marathon-5k');     
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
$answer = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}
echo $answer;
Answer 1

Разве эта страница существует? Её же в принципе нету, попробуйте зайти на неё через браузер.

Хотя, возможно, сервер говорит, что якобы этой страницы нет из-за неверного токена и/или куки.

И ещё: пробовали делать отдельный объект curl для каждого запроса?

READ ALSO
Аналог simple dom parser c многопоточностью?

Аналог simple dom parser c многопоточностью?

Есть ли аналог simple dom parser c многопоточностью в php?

123
Правильное округление

Правильное округление

Если вывести, например, floor((07 + 0

99