Значение cookie cURL

Я пытаюсь загрузить файлы музыкальных циклов с этого сайта: looperman.com. Я зарегистрировался как пользователь, и я пытаюсь загрузить циклы, используя cURL. Когда вы заходите на сайт looperman.com, существует несколько файлов cookie, но по мере исключения я замечаю, что единственное, что требуется для того, чтобы сервер увидел, что вы вошли в систему, называется «loopermanlooperman».

Я взял значение этого файла cookie и установил его как переменную. Затем я передаю его на сайт следующим образом:

$sessid = 'somehashedvaluehere'; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: loopermanlooperman=$sessid;")); curl_setopt($ch, CURLOPT_URL, "http://www.looperman.com/loops/detail/$pageID"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); echo $response; 

Когда я повторяю ответ, я вижу, что cookie не был установлен, и сайт все еще видит, что я не вошел в систему. Что я делаю неправильно? Looperman построен с использованием CodeIgniter. Интересно, есть ли у них какая-то мера защиты, чтобы предотвратить установку таких файлов?

///ОБНОВИТЬ///

Я попробовал COOKIE_JAR и CURLOPT_COOKIE. Печеньки все еще не установлены. Я нашел этот скрипт из другого столбца Stack Overflow, который, похоже, доставит мне большую часть пути, но все же файлы cookie установлены. Вот:

 $loginUrl = 'http://www.looperman.com/account/login/'; $loginFields = array('user_email' => 'login@site.com', 'user_password' => 'password'); getUrl($loginUrl, 'post', $loginFields); //now you're logged in and a session cookie was generated $remote_page_content = getUrl('http://www.looperman.com/loops/detail/200'); echo $remote_page_content; function getUrl($url, $method='', $vars='') { $ch = curl_init(); if ($method == 'post') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, 'D:\wamp2\www\sandbox\cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'D:\wamp2\www\sandbox\cookie.txt'); $buffer = curl_exec($ch); curl_close($ch); return $buffer; } 

Когда это возвращается, содержимое файла D: \ wamp2 \ www \ sandbox \ cookie.txt:

 Файл cookie HTTP Netscape
 http://curl.haxx.se/rfc/cookie_spec.html
 Этот файл был создан libcurl!  Редактируйте на свой страх и риск.

 .looperman.com TRUE / FALSE 1329245288 loopermancspr 147f3f08a0b50f7aa527789e360abbc8
 .looperman.com значение TRUE / FALSE 1328467688 loopermanlooperman rX1UOdqyPEKkZ7HT0x8dSLk7g9yf5sSmg% 2B7zj66hLM9LSmS1z4nqFO2zkEkqsUqKEwNMvEiExqSKoU2% ​​2BfVsxlf3C9VyucMWt41TJVDtElUUIQrZxv0BmwZYP6JCJrY7wcT1% 2FO7kKxRu8YI97YD% 2BWdxX3jnWu2Zme9jg% 2FMggp3% 2be% 2BY% 2FFiAorh36FR1zTbSY66VJVj7268WgMy6KNdJ1DxieypwaMb2HYGpBMsQRxcI6RawnOIEdjbaPKYuf8hVy40

Но looperman все еще не видит меня, как вошел в систему 🙁

Вы должны использовать CURLOPT_COOKIE не CURLOPT_HTTPHEADER чтобы установить значения cookie, отправленные в запросе.

 curl_setopt($ch, CURLOPT_COOKIE, "loopermanlooperman=$sessid") 

CURLOPT_COOKIE

Содержимое заголовка «Cookie:», которое будет использоваться в HTTP-запросе. Обратите внимание, что несколько файлов cookie разделяются точкой с запятой, а затем пробелом (например, «fruit = apple; color = red»)

http://www.php.net/manual/en/function.curl-setopt.php/

Это делает CURL отправлением cookie . Попробуйте запросить скрипт, который выводит содержимое заголовков следующим образом;

 <?php echo "Your cookies \n"; print_r( $_COOKIE); ?> 

Возможно, сайт проверяет реферал или хост в вашем заголовке. Вы всегда можете попробовать посмотреть запросы, сделанные в браузере (в chrome go Spanner -> Tools -> Developer Tool -> Network, теперь запросите страницу и щелкните запрос в списке. Должны отображать все заголовки)