Tôi đang cố tải xuống các tệp vòng lặp nhạc từ trang web này: looperman.com. Tôi đã đăng ký với tư cách người dùng và tôi đang cố tải xuống các vòng lặp bằng cách sử dụng cURL. Khi bạn đăng nhập vào looperman.com, có một vài cookie được thiết lập, nhưng theo quy trình loại bỏ, tôi nhận thấy chỉ trên đó là cần thiết cho máy chủ để xem bạn như đăng nhập được đặt tên là 'loopermanlooperman'.Giá trị cookie cURL
Tôi đã lấy giá trị của cookie đó và đặt nó làm biến. Sau đó, tôi vượt qua nó để trang web như vậy:
$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;
Khi tôi echo Đáp lại, tôi thấy cookie chưa được thiết lập, và các trang web vẫn thấy tôi như chưa đăng nhập am i làm gì sai.? Looperman được xây dựng bằng CodeIgniter. Tôi tự hỏi nếu họ có một số biện pháp bảo vệ để ngăn chặn thiết lập cookie như thế này?
/// CẬP NHẬT ///
tôi đã cố gắng COOKIE_JAR và CURLOPT_COOKIE. Các cookie vẫn chưa được đặt. Tôi đã tìm thấy tập lệnh này từ một bài đăng Tràn ngăn xếp khác dường như khiến tôi có nhiều cách nhất, nhưng các cookie vẫn được đặt. Ở đây là:
$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;
}
Khi lợi nhuận này, các nội dung của D: \ wamp2 \ www \ sandbox \ cookie.txt là:
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
Nhưng looperman vẫn không nhìn thấy tôi như đăng nhập :(
Hãy thử thay vào đó [cookie jar] (http://icfun.blogspot.com/2009/04/php-how-to-use-cookie-jar-with-curl.html) – hackartist
Chỉnh sửa của tôi ở trên sử dụng CURLOPT_COOKIEJAR và CURLOPT_COOKIEFILE. Dường như không có hiệu lực. –