J'essaie de télécharger des fichiers de boucle de musique à partir de ce site: looperman.com. Je me suis inscrit en tant qu'utilisateur et j'essaye de télécharger les boucles en utilisant cURL. Lorsque vous vous connectez à looperman.com, il y a quelques cookies réglés, mais par processus d'élimination, je remarque que le seul sur ce qui est requis pour que le serveur vous voit connecté est nommé 'loopermanlooperman'.Valeur de cookie cURL
J'ai saisi la valeur de ce cookie et l'ai défini en tant que variable. Ensuite, je passe au site comme si:
$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;
Quand je fais l'écho de la réponse, je vois le cookie n'a pas été défini, et le site me voit toujours comme pas loggué Qu'est-ce que je fais mal.? Looperman est construit en utilisant CodeIgniter. Je me demande s'ils ont une certaine mesure de protection pour éviter de mettre des cookies comme celui-ci?
/// /// MISE A JOUR
J'ai essayé COOKIE_JAR et CURLOPT_COOKIE. Les cookies ne sont toujours pas définis. J'ai trouvé ce script à partir d'un autre post de Stack Overflow qui semble m'apporter la plupart du temps, mais les cookies sont toujours définis. Ici, il est:
$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;
}
Lorsque ce rendement, le contenu de D: \ wamp2 \ www \ sandbox \ cookie.txt sont:
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
Mais looperman ne me voit pas encore comme connecté :(
ceci à la place [cookie jar] (http://icfun.blogspot.com/2009/04/php-how-to-use-cookie-jar-with-curl.html) – hackartist
Mon édition ci-dessus utilise CURLOPT_COOKIEJAR et CURLOPT_COOKIEFILE. Semble n'avoir aucun effet. –