Este grupo redactor ha pasado mucho tiempo buscando soluciones a tu duda, te compartimos la resolución por esto deseamos resultarte de mucha ayuda.
Solución:
Si la cookie se genera a partir de un script, puede enviar la cookie manualmente junto con la cookie del archivo (usando la opción de archivo de cookies). Por ejemplo:
# sending manually set cookie
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: test=cookie"));
# sending cookies from file
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
En este caso, curl enviará su cookie definida junto con las cookies del archivo.
Si la cookie se genera a través de javascript, debe rastrearla cómo se generó y luego puede enviarla utilizando el método anterior (a través del encabezado http).
los utma utmc, utmz
se ven cuando se envían cookies desde Mozilla. Ya no deberías preocuparte por estas cosas.
Finalmente, la forma en que lo estás haciendo está bien. Solo asegúrese de estar usando la ruta absoluta para los nombres de los archivos (es decir, /var/dir/cookie.txt
) en lugar de uno relativo.
Habilite siempre el modo detallado cuando trabaje con curl. Le ayudará mucho en el seguimiento de las solicitudes. También ahorrará mucho de su tiempo.
curl_setopt($ch, CURLOPT_VERBOSE, true);
Aquí hay una lista de ejemplos para enviar cookies: https://github.com/andriichuk/php-curl-cookbook#cookies
$curlHandler = curl_init();
curl_setopt_array($curlHandler, [
CURLOPT_URL => 'https://httpbin.org/cookies',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_COOKIEFILE => $cookieFile,
CURLOPT_COOKIE => 'foo=bar;baz=foo',
/**
* Or set header
* CURLOPT_HTTPHEADER => [
'Cookie: foo=bar;baz=foo',
]
*/
]);
$response = curl_exec($curlHandler);
curl_close($curlHandler);
echo $response;
Te mostramos comentarios y puntuaciones
Recuerda dar visibilidad a esta crónica si te fue de ayuda.