Comment laisser Curl utiliser le même cookie du navigateur à partir de PHP
J'ai un script PHP qui effectue une requête HTTP au nom du navigateur et les sorties de la réponse au navigateur. Le problème est lorsque je clique sur les liens à partir du navigateur sur cette page, il se plaint de cookie variables. Je suis en supposant qu'il a besoin de l'navigateurs de cookie(s) pour le site.
comment puis-je l'intercepter et de le transférer vers le site distant?
OriginalL'auteur Hannes de Jager | 2009-07-13
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas.
Si vous curl la demande, vous devrez analyser les données en sortie, et de le remplacer tous les liens afin qu'ils passer par votre serveur.
La seule façon cela devrait fonctionner si vous utilisez des cookies persistants dans votre demande curl. CURL pouvez conserver les cookies. Attribuer un ID de session pour le fichier de cookie (en boucle) si les demandes ultérieures d'obtenir les mêmes cookies. Lorsqu'un utilisateur clique sur un lien, vous aurez besoin de roulage à nouveau la demande.
C'est un problème de sécurité pour permettre site1 de définir des cookies pour site2. Imaginez si vous pouviez créer des cookies dans le navigateur de paypal et de tromper l'utilisateur en lui faisant croire qu'ils avaient enregistré int ou une autre action malveillante.
OriginalL'auteur Byron Whitlock
C'est comment j'ai transférer tous les cookies de votre navigateur afin de curl et aussi le retour de tous les cookies, pour le curl demande au navigateur. Pour cela, j'ai besoin de résoudre certains problèmes comme la réception d'un cookie de roulage, l'analyse de l'en-tête http, l'envoi de plusieurs témoins et le verrouillage de session:
OriginalL'auteur PiTheNumber
En fait, c'est possible. Vous avez juste à prendre le cookie du navigateur et de le passer en paramètre de roulage à mimik le navigateur.
C'est comme une séance de levage...
Voici un exemple de code:
Il fonctionne très bien si votre but est d'appeler un autre site, mais ceci ne fonctionnera pas si vous appelez votre serveur web (le même qui est le lancement de la commande curl). C'est parce que votre fichier de session est toujours ouvert/verrouillé par le script afin de l'URL que vous appelez ne pouvez pas y accéder.
Si vous souhaitez contourner cette restriction (appel d'une page sur le même serveur), vous devez fermer le fichier de session avec ce code avant d'exécuter la boucle :
Espère que cela va aider quelqu'un 🙂
OriginalL'auteur CtrlX
De
curl_setopt
:Toutefois, vous devrez peut-être créer des cookies directement, ce qui peut être fait en utilisant:
Qui est le même que le Set-Cookie en-tête HTTP. Vérifiez que vous n'utilisez pas
curl_setopt($ch, CURLOPT_COOKIESESSION, true)
que cela va faire libcurl ignorer certains cookies.OriginalL'auteur Ross
Le Cookie est généralement envoyé avec la requête HTTP en-tête comme
Donc je suppose que juste à modifier le cookie dans votre en-tête.
OriginalL'auteur Daff
PiTheNumber réponse était grand, mais j'ai rencontré quelques problèmes avec elle qu'il a causé à toujours imprimer les en-têtes de la page. Donc j'ai ajusté à utiliser le plus fiable
curl_getinfo
fonction. Cette version suit également les redirections.OriginalL'auteur Vox