2012-02-04 7 views
6

मैं इस साइट से संगीत लूप फ़ाइलों को डाउनलोड करने का प्रयास कर रहा हूं: looperman.com। मैंने एक उपयोगकर्ता के रूप में पंजीकृत किया है, और मैं curl का उपयोग कर लूप डाउनलोड करने की कोशिश कर रहा हूँ। जब आप looperman.com में लॉग इन करते हैं, तो कुछ कुकी सेट सेट होते हैं, लेकिन उन्मूलन की प्रक्रिया के द्वारा, मुझे लगता है कि सर्वर के लिए आपको केवल लॉग इन के रूप में देखने के लिए जरूरी है, जिसे 'loopermanlooperman' नाम दिया गया है।curl कुकी मान

मैंने उस कुकी के मूल्य को पकड़ लिया है, और इसे एक चर के रूप में सेट किया है। तो फिर मैं इसे इतना पसंद है साइट के लिए पारित:

$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_JAR और CURLOPT_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; 
    } 

जब यह रिटर्न, डी की सामग्री: \ 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

+0

ऊपर मेरा संपादन CURLOPT_COOKIEJAR और CURLOPT_COOKIEFILE का उपयोग करता है। ऐसा कोई प्रभाव नहीं पड़ता है। –

उत्तर

11

आप CURLOPT_COOKIE नहीं CURLOPT_HTTPHEADER का उपयोग करना चाहिए अनुरोध में भेजा कुकी मूल्यों को निर्धारित करने के लिए।

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

CURLOPT_COOKIE

की सामग्री को "कुकी:" शीर्षक HTTP अनुरोध में प्रयोग की जाने वाली। (", रंग = लाल फल = सेब" उदाहरण के लिए,)

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

यह कर्ल कुकी भेज पड़ता है ध्यान दें कि कई कुकीज़ अर्धविराम फिर एक रिक्ति के साथ अलग होती है। इस तरह के शीर्षकों की सामग्री को आउटपुट करने वाली स्क्रिप्ट का अनुरोध करने का प्रयास करें;

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

यह साइट आपके शीर्षलेख में रेफ़रल या होस्ट की जांच कर रही है। आप ब्राउज़र में किए गए अनुरोधों को देखने का प्रयास कर सकते हैं (क्रोम गो स्पैनर -> टूल्स -> डेवलपर टूल -> नेटवर्क में, अब पेज का अनुरोध करें और सूची में अनुरोध पर क्लिक करें। सभी शीर्षलेख दिखाना चाहिए)

+0

मैंने यह कोशिश की, काम नहीं किया: curl_setopt ($ ch, CURLOPT_COOKIE, "fruit = apple") –

+0

साथ ही, यह देखने के लिए टी एंड सी की साइटें पढ़ना याद रखें कि आपको इस तरह से फ़ाइलों तक पहुंचने की अनुमति है या नहीं। –