2012-02-04 12 views
6

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 :(

+0

Probar esto en cambio [cookie jar] (http://icfun.blogspot.com/2009/04/php-how-to-use-cookie-jar-with-curl.html) – hackartist

+0

Mi edición anterior utiliza CURLOPT_COOKIEJAR y CURLOPT_COOKIEFILE. Parece que no tiene efecto. –

Respuesta

11

que puedes usar CURLOPT_COOKIE no CURLOPT_HTTPHEADER para establecer los valores de las cookies enviadas en la petición.

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

CURLOPT_COOKIE

El contenido de la "Cookie:" encabezado que se utiliza en la petición HTTP. Tenga en cuenta que varias cookies están separados por un punto y coma seguido de un espacio (por ejemplo, "fruto de manzana =; color = red")

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

sí hace CURL envía la cookie. Intente solicitar un script que muestre el contenido de los encabezados como este;

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

Podría ser que el sitio esté revisando la referencia o el host en su encabezado. Siempre puede intentar consultar las solicitudes realizadas en un navegador (en cromo vaya a Herramientas -> Herramienta de desarrollador -> Red, ahora solicite la página y haga clic en la solicitud en la lista. Debe mostrar todos los encabezados)

+0

Intenté esto, no funcionó: curl_setopt ($ ch, CURLOPT_COOKIE, "fruit = apple") –

+0

Además, recuerde leer los términos y condiciones del sitio para ver si puede acceder a los archivos de esta manera. –

Cuestiones relacionadas