cURL: Como posso saber se meus cookies estão sendo definidas corretamente?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

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

O site define um cookie e, em seguida, redireciona. Será que isto seja suficiente código? Porque parece não estar recebendo o cookie corretamente. Como posso verificar para ver se ele é definido? Melhor ainda, se eu sei o que eu quero biscoitos posso apenas torná-lo ou algo assim?

Edit: Então minha onda visitas de script o site certo? O site conjuntos de cookies para validação, e eu quero ver se o meu script cURL está recebendo esses cookies corretamente. Eu quero saber se há um teste para isso, e / ou que eu quero saber se eu posso apenas criar um cookie para validar para o site.

Foi útil?

Solução

Eu tive recentemente um projeto onde eu precisava para passar os cookies entre servidores, e eu achei que a fixação de ambos CURLOPT_COOKIEFILE e CURLOPT_COOKIEJAR para o mesmo arquivo fez o truque.

Se você está apenas querendo ver se os cookies do site remoto estão sendo definidas, você deve ser capaz de olhar para o arquivo CURLOPT_COOKIEJAR em um editor de texto.

Outras dicas

Se esta fosse a onda linha de comando que você jogaria no parâmetro -v. Preste atenção às linhas começando com > Cookie:.

A versão php disso é:

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

E se isso fosse um navegador eu depurar com um destes: você pode usar Fiddler no IE, TamperData ou Firebug (líquido) no Firefox, o inspetor no Chrome e on Safari , ou um procurador com qualquer navegador para ver como o formulário é enviado por um navegador "normal".

O trabalho abordagem pode proxy se enrolar você conjunto de php para usá-lo.

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

Se você quiser apenas adicionar cookies para um pedido, você pode escrever uma linha 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';

mas eu não estou certo sobre isso, estes podem ser mais ao longo da mesma linha:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top