cURL: ¿Cómo puedo saber si mis cookies se están configurando correctamente?

StackOverflow https://stackoverflow.com/questions/1805214

  •  05-07-2019
  •  | 
  •  

Pregunta

$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$useragent="Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";

$ch = curl_init ("website.com");
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec ($ch);

El sitio web establece una cookie y luego la redirige. ¿Sería suficiente este código? Porque parece que no está recibiendo la cookie correctamente. ¿Cómo puedo comprobar si está configurado? Mejor aún, si sé qué cookies quiero, ¿puedo hacerlo o algo?

Edit: Así que mi script CURL visita el sitio web, ¿verdad? El sitio web configura cookies para validación, y quiero ver si mi script de cURL está recibiendo esas cookies correctamente. Quiero saber si hay una prueba para eso, y / o quiero saber si puedo crear una cookie para validar el sitio web.

¿Fue útil?

Solución

Hace poco tuve un proyecto en el que necesitaba pasar cookies entre servidores, y encontré que establecer CURLOPT_COOKIEFILE y CURLOPT_COOKIEJAR en el mismo archivo hizo el truco.

Si solo desea ver si las cookies del sitio remoto se están configurando, debería poder ver el archivo CURLOPT_COOKIEJAR en un editor de texto.

Otros consejos

Si este fuera el rizo de la línea de comando, lanzarías en el parámetro -v . Preste atención a las líneas que comienzan con > Cookie: .

La versión de php de esto es:

curl_setopt($ch,CURLOPT_VERBOSE,TRUE);//and set CURLOPT_STDERR to STDOUT

Y si se tratara de un navegador, debería realizar una depuración con uno de estos: puede utilizar Fiddler en IE, TamperData o Firebug (net) en Firefox, el inspector en Chrome y en Safari , o un proxy con cualquier navegador para ver cómo se envía el formulario por un " normal " navegador.

El enfoque de proxy podría funcionar si configuras el enrollamiento de php para usarlo.

curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,TRUE);//& CURLOPT_PROXYPORT CURLOPT_PROXY

Si solo desea agregar cookies a una solicitud, puede escribir una línea como:

$ch->headers[] = 'Cookie: recent=543..; _session_id=6185..; __utma=572.1.1.1.1; __utmc=572..; __utmz=572.1.1.1.1.utmccn=(referral)|utmcsr=domain.com|utmcct=/request/path|utmcmd=referral';

pero no estoy seguro de eso, esto podría estar más en la misma línea:

curl_setopt($ch,CURLOPT_COOKIE,"recent=543..; _session_id=618..");
// Possibly, but I think this might overwrite other headers.
curl_setopt($ch,CURLOPT_HTTPHEADER, "Cookie: recent=543..; _session_id=6185..");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top