cURL: Come faccio a sapere se i miei cookie sono impostati correttamente?

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

  •  05-07-2019
  •  | 
  •  

Domanda

$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);

Il sito Web imposta un cookie e quindi reindirizza. Questo codice sarebbe sufficiente? Perché sembra non ricevere correttamente il cookie. Come posso verificare se è impostato? Meglio ancora, se so quali cookie voglio posso semplicemente crearli o qualcosa del genere?

Modifica: Quindi il mio script CURL visita il sito Web giusto? Il sito Web imposta i cookie per la convalida e voglio vedere se il mio script cURL sta ricevendo correttamente quei cookie. Voglio sapere se esiste un test per questo e / o voglio sapere se posso semplicemente creare un cookie per convalidare il sito Web.

È stato utile?

Soluzione

Di recente ho avuto un progetto in cui dovevo passare i cookie tra i server e ho scoperto che l'impostazione di CURLOPT_COOKIEFILE e CURLOPT_COOKIEJAR ha funzionato allo stesso file.

Se vuoi solo vedere se i cookie del sito remoto sono impostati, dovresti essere in grado di guardare il file CURLOPT_COOKIEJAR in un editor di testo.

Altri suggerimenti

Se questo fosse l'arricciamento della riga di comando, inseriresti il ??parametro -v . Presta attenzione alle righe che iniziano con > Cookie:.

La versione php di questo è:

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

E se questo fosse un browser, farei il debug con uno di questi: puoi usare Fiddler su IE, TamperData o Firebug (net) su Firefox, l'ispettore su Chrome e su Safari o un proxy con qualsiasi browser per vedere come viene inviato il modulo da un "normale" browser.

L'approccio proxy potrebbe funzionare se si imposta l'arricciatura di php per usarlo.

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

Se si desidera aggiungere solo cookie a una richiesta, è possibile scrivere una riga come:

$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';

ma non ne sono sicuro, potrebbero essere più sulla stessa linea:

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..");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top