Как сохранить куки-файлы из ответа на запрос cURL с использованием php? - PullRequest
12 голосов
/ 27 октября 2011

Я использую curl через php, чтобы получить URL. Я успешно могу скачать страницу, заголовки и все. Однако файлы cookie, возвращаемые любой страницей, не сохраняются в указанном файле. Я проверил разрешения и т.д., и ничего не кажется необычным. Я начинаю думать, что в моем коде что-то не так.

$get_cookie_page = 'http://www.google.ca';
echo curl_download($get_cookie_page);

function curl_download($Url){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $Url);
  curl_setopt($ch, CURLOPT_NOBODY, true);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  $http_headers = array(
                    'Host: www.google.ca',
                    'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2',
                    'Accept: */*',
                    'Accept-Language: en-us,en;q=0.5',
                    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                    'Connection: keep-alive'
                  );
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $http_headers);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  $output = curl_exec($ch);
  curl_close($ch);
  return $output;
}

Любая помощь приветствуется.

Ответы [ 2 ]

22 голосов
/ 06 декабря 2011

Спасибо всем за помощь.Однако проблема была в другом.Я, вероятно, должен был упомянуть, что я работаю на сервере Windows, и cURL не смог прочитать путь к cookie.txt.

Использование:

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');

вместо:

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

решило проблему.

4 голосов
/ 27 октября 2011

Используйте абсолютный путь к файлу jar-файла cookie, чтобы вы точно знали, где он был сохранен, и, таким образом, вы знаете, что имеете право на запись в него.

curl сохраняет все известные ему cookie-файлы вфайл, включая так называемые сеансовые куки (срок действия которых не истек)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...