Sto provando a scaricare file di loop musicali da questo sito: looperman.com. Mi sono registrato come utente e sto provando a scaricare i loop usando cURL. Quando si accede a looperman.com, ci sono alcuni cookie impostati, ma per processo di eliminazione, noto che solo il server è obbligato a vederti come connesso "loopermanlooperman".valore cookie CURL
Ho afferrato il valore di quel cookie e lo ho impostato come variabile. Poi lo passo al sito in questo modo:
$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;
Quando mi associo alla risposta, vedo il cookie non è stata impostata, e il sito ancora mi vede come non collegato Che cosa sto facendo di sbagliato.? Looperman è costruito usando CodeIgniter. Mi chiedo se hanno qualche misura di protezione per impedire l'impostazione di cookie come questo?
/// /// UPDATE
ho cercato COOKIE_JAR e CURLOPT_COOKIE. I cookie non sono ancora impostati. Ho trovato questo script da un altro post di Overflow dello stack che sembra avere la maggior parte del modo lì, ma i cookie sono ancora impostati. Eccolo:
$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;
}
Quando questo ritorna, il contenuto di D: \ wamp2 \ www \ sandbox \ cookie.txt sono:
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
Ma looperman ancora non mi vede come loggato :(
Prova questo invece [cookie jar] (http://icfun.blogspot.com/2009/04/php-how-to-use-cookie-jar-with-curl.html) – hackartist
La mia modifica sopra utilizza CURLOPT_COOKIEJAR e CURLOPT_COOKIEFILE. Sembra non avere alcun effetto. –