У меня проблемы с cookie с cURL.
После проблем я включил функцию verbose и выяснил, что cURL устанавливает их отрицательную дату истечения срока действия, даже если сервер отправляет положительную дату.
Пример:
* Added cookie _c_sess=""test"" for domain test.com, path /, expire -1630024962 < Set-Cookie: _c_sess="test"; Domain=test.com; HttpOnly; expires=Mon, 26-Mar-2012 14:52:47 GMT; Max-Age=1332773567; Path=/
Поскольку вы можете видеть как истечения срока действия, так и максимальный возраст положительны, но значения cURL истекают до отрицательного значения.
У кого-то есть идея?
РЕДАКТИРОВАТЬ:
Вот код PHP, который я использую.
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://site.com/"); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiepath); curl_setopt($ch, CURLOPT_HEADER ,1); curl_setopt($ch, CURLOPT_VERBOSE ,1); curl_setopt($ch, CURLOPT_STDERR ,$f); curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch);
Данные из банка cookie:
#HttpOnly_.test.com TRUE / FALSE -1630016318 _test_sess "test"
Ваш код отлично работает для меня. Ваш пример сайта, http://www.site.com/ даже не пытается установить какие-либо файлы cookie. Когда я запускал его на сайтах, которые устанавливали файлы cookie (например, FaceBook), у меня было положительное время истечения срока действия.
Вероятно, эта ошибка является проблемой на сервере, который пытается установить файлы cookie, устанавливающие неправильное значение.
Любое отрицательное число немедленно истечет с помощью файла cookie ( cite ).
Мое лучшее предположение, сайт пытается закончить ваш файл cookie.
Возможно, это та же проблема, что и Curl, которая не распознает значение true в cookie правильно: «У вас возникла проблема на вашем компьютере из-за ограничений 32-разрядных целочисленных значений со знаком».