Нужно получать информацию с finance.yahoo автоматически.
Есть ссылка
https://finance.yahoo.com/quote/AAPL/history?perio...
Нужно получить информацию из таблицы. Конечно, можно парсить html, но рядом есть то, что нужно - ссылка на csv (Download Data). Проблема в том, что я никак не могу получить правильную ссылку.
Говорят, дело в куки - но где точно и что ещё надо вставлять в ссылку я пока не пойму.
Мой код (рабочий, но не хватает параметра в запросе или куки)
//Получить информацию для подстановки в запрос из url
function yahoo_get_crumb_from_url($url)
{
$crumb='';
$data=file_get_contents($url);
$pattern = '|CrumbStore":{"crumb":"(.+?)\"|is';
preg_match($pattern, $data, $out);
return $out[1];
}
//Получить информацию о курсе акций для выбранного тикера и дат (например AAPL,1509649200,1509908400)
//Использует функцию yahoo_get_crumb_from_url
function yahoo_get_stock_information($ticker,$date_begin,$date_end)
{
$today=time();
//Получаем информацию для подстановки в запрос из url
$url='https://finance.yahoo.com/quote/AAPL/history?period1='.$today.'&period2='.$today.'&filter=history';
$crumb=yahoo_get_crumb_from_url($url);
$url='https://query1.finance.yahoo.com/v7/finance/download/'.$ticker.'?period1='.$date_begin.'&period2='.$date_end.'&events=history&crumb='.$crumb;
$data=file_get_contents($url);
return $data;
}
//Вызов
echo yahoo_get_stock_information('AAPL',1509649200,1509908400);
//Результат - не авторизированный доступ.
//HTTP request failed! HTTP/1.0 401 Unauthorized
А если идем по сформированной ссылке напрямую, например сейчас ссылка
https://query1.finance.yahoo.com/v7/finance/downlo...
получаем
{
"finance": {
"error": {
"code": "Unauthorized",
"description": "Invalid cookie"
}
}
}
Подскажите, что ещё нужно вставить в мой url - какую cookie (вставить как параметр или set_cookie )и откуда её взять?