cURL cookie value


cURL cookie value

我正在尝试从这个网站下载音乐循环文件:looperman.com。我已经注册为用户,我正在尝试使用cURL下载循环。当你登录looperman.com时,会设置一些cookie,但通过消除过程,我注意到服务器看到你登录所需的唯一cookie名为"loopermanoperatman"。

我已经获取了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?

///更新////

我尝试了COOKIE_JAR和CURLOPT_COOKIE。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''ssandbox''cookie.txt的内容为:

Netscape HTTP Cookie文件http://curl.haxx.se/rfc/cookie_spec.html这个文件是由libcurl生成的!编辑风险自负。looperman.com真/假1329245288 loopermancspr 147f3f08a0b50f7aa527789e360abbc8looperman.com TRUE/FALSE 1328467688 looperman-operman rX1UOdqyPEKkZ7HT0x8dSLk7g9yf5sSmg%2B7zj66hLM9LSmS1z4nqFO2zkEkqsUqKEwNMvEiExqSKoU2%2BfVsxlf3C9VyucMWt41TJVDtElUUIQrZxv0BmwZYP6JCJrY7wcT1%2FO7kKxRu8YI97YD%2BWdxX3jnWu2Zme9jg%2FMggp3%2Be%2BY%2FAorh36FR 1zTbSY66VJVj7268WgMy6KNdJ1DxieypwaMb2HYGpBMsQRxcI6RawnOEdjbaPKYuf8hVy40

但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中,现在请求页面并单击列表中的请求。应显示所有标题)