Estoy tratando de descargar archivos de bucle de música de este sitio: looperman.com. Me registré como usuario y estoy intentando descargar los bucles usando cURL. Cuando inicias sesión en looperman.com, hay unas cuantas cookies establecidas, pero por proceso de eliminación, noto que el único que se requiere para que el servidor lo vea cuando inicias sesión se llama 'loopermanlooperman'.valor de cookie cURL
Agarré el valor de esa cookie y la configuré como una variable. Luego lo paso al sitio, así:
$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;
Cuando me hago eco de la respuesta, veo la cookie no se ha establecido, y el sitio todavía me ve como no conectados en Qué estoy haciendo mal.? Looperman está construido usando CodeIgniter. Me pregunto si tienen alguna medida de protección para evitar el establecimiento de cookies como esta.
/// /// ACTUALIZACIÓN
me trataron COOKIE_JAR y CURLOPT_COOKIE. Las cookies todavía no están establecidas. Encontré esta secuencia de comandos desde otra publicación de Stack Overflow que parece llevarme la mayor parte del camino, pero aún así se establecen las cookies. Aquí 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;
}
Cuando esto devuelve, el contenido de D: \ wamp2 \ www \ caja de arena \ cookie.txt son:
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
Pero looperman todavía no me ve como se haya identificado :(
Probar esto en cambio [cookie jar] (http://icfun.blogspot.com/2009/04/php-how-to-use-cookie-jar-with-curl.html) – hackartist
Mi edición anterior utiliza CURLOPT_COOKIEJAR y CURLOPT_COOKIEFILE. Parece que no tiene efecto. –