PHP получить содержимое страницы с учетом куков

anton.sits anton.sits

Нужно получить содержимое страницы с учетом куков(так как от этого зависит выдача страницы)
file_get_contents() - не подходит, так как он возвращает неавторизированную страницу

в качестве примера можно взять страницу аудиозаписей vkontakte

путь к ней выглядит как http://vkontakte.ru/audio

слышал что такое реально сделать с помощью CURL, но к сожалению он мне не знаком.

Если у вас есть примерчик подобного, или вы знаете как это сделать, поделитесь опытом, буду премного благодарен
Дополнено (1). Epsiloncool - отправлять в заголовках куки как то не очень, сначала их нужно получить чтобы отправлять, в моем случае учитывается то, что сайт к которому нужно обращаться  уже отдал нужные куки браузеру. Если ты знаешь как это сделать с помощью curl, поделись примерчиком если это не очень напряжно, уж очень горит
Дополнено (2). Решение:

<?
 
   $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, "http:/сайт - жертва. Домен/страница_авторизации_куда идет_пост");
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, "username=логин&password=пароль");
     curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
     curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
     $result = curl_exec($ch);
     echo $result;
   
   //Вторая часть, парсинг

       curl_setopt($ch, CURLOPT_URL, "http:/сайт - жертва. Домен/Нужная_страница");
       curl_setopt($ch, CURLOPT_POST, 0);
       curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
       $result = curl_exec($ch);
       print_r($result);
   curl_close($ch)
   ?>

Epsiloncool (Epsilon S Epsiloncool (Epsilon S

У file_get_contents есть третий параметр, context, в который можно засунуть все заголовки, которые вы хотели бы отправить в запросе. Гуглите.

>>> слышал что такое реально сделать с помощью CURL, но к сожалению он мне не знаком.

Через cURL тоже можно сделать, кроме того, через cURL некоторые вещи сделать намного проще, чем через контекст. Поэтому сделайте так, чтобы он был вам знаком.

Алекс24 Алекс24

лучший ответ
Через CURL алгоритм следующий:
1. Передаете авторизационную информацию на скрипт обработчик формы авторизации и сохраняете куки в файл (параметр CURLOPT_COOKIEJAR)
2. Делаете запрос на получение контента нужной страницы и передаете куки из файла (параметр CURLOPT_COOKIEFILE)

Epsiloncool (Epsilon S Epsiloncool (Epsilon S

#2
Да, но "получить куки от сайта" - это означает: залогиниться на сайте (через cURL), затем получить куки через cURL, затем использовать куки.
Готовой программы для этого нет, так как процесс логина на разных сайтах разный. Так что если хотите код и у вас очень горит - пишите мне на Skype или в ICQ, договоримся.

Добавить комментарий | Похожие обсуждения

Вопросы и ответы по Вконтакте
Вопросы и ответы

Популярные вопросы и ответы о социальной сети www.vkontakte.ru (vk.com)