cURL cookie值

问题描述:

我试图从这个站点下载音乐循环文件:looperman.com。我已经注册为用户,并且正在尝试使用cURL下载循环。当你登录到looperman.com时,有一些cookies被设置,但是通过排除,我注意到服务器只有在登录时才会看到你被命名为'loopermanlooperman'。cURL cookie值

我已经抓住了该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?

/// UPDATE ///

我试图COOKIE_JAR和CURLOPT_COOKIE。 Cookie仍未设置。我从另一个Stack Overflow帖子中发现了这个脚本,它似乎让我获得了大部分的途径,但仍然设置了cookie。那就是:

$loginUrl = 'http://www.looperman.com/account/login/'; 
$loginFields = array('user_email' => '[email protected]', '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 \沙盘\ cookie.txt是:

 
Netscape HTTP Cookie File 
http://curl.haxx.se/rfc/cookie_spec.html 
This file was generated by libcurl! Edit at your own risk. 

.looperman.com TRUE / FALSE 1329245288 loopermancspr 147f3f08a0b50f7aa527789e360abbc8 
.looperman.com TRUE / FALSE 1328467688 loopermanlooperman rX1UOdqyPEKkZ7HT0x8dSLk7g9yf5sSmg%2B7zj66hLM9LSmS1z4nqFO2zkEkqsUqKEwNMvEiExqSKoU2%2BfVsxlf3C9VyucMWt41TJVDtElUUIQrZxv0BmwZYP6JCJrY7wcT1%2FO7kKxRu8YI97YD%2BWdxX3jnWu2Zme9jg%2FMggp3%2Be%2BY%2FFiAorh36FR1zTbSY66VJVj7268WgMy6KNdJ1DxieypwaMb2HYGpBMsQRxcI6RawnOIEdjbaPKYuf8hVy40 

但looperman仍然没有看到我的登录:(

+0

试试这取代[饼干罐](http://icfun.blogspot.com/2009/04/php-how-to-use-cookie-jar-with-curl.html) – hackartist 2012-02-04 18:07:05

+0

我上面的编辑使用CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE。似乎没有效果。 – 2012-02-04 18:58:11

您应该使用CURLOPT_COOKIECURLOPT_HTTPHEADER设置在请求中发送的cookie的值。

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

CURLOPT_COOKIE

所述的内容 “的Cookie:” 在HTTP请求中使用报头。 (“颜色=红色水果=苹果”例如,)

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

它使卷曲发送cookie请注意,多个cookie用分号后面加一个空格隔开。尝试请求一个脚本来输出标题的内容。

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

这可能是该网站正在检查您的标题中的引荐或主机。您可以随时尝试查看浏览器中的请求(在Chrome中打开扳手 - >工具 - >开发工具 - >网络,现在请求该页面并单击列表中的请求。应显示所有标题)

+0

我试过了,没有工作:curl_setopt($ ch,CURLOPT_COOKIE,“fruit = apple”) – 2012-02-04 18:57:12

+0

另外,请记住阅读站点T&C's,看看您是否被允许以这种方式访问​​文件。 – 2012-02-04 20:51:50