2017-10-13 9 views
0

Comment sélectionner la valeur d'un cookie spécifique à partir d'un fichier cookie-jar pour des demandes futures?curl - sélection d'une valeur de cookie spécifique dans le fichier cookie-jar

Je dois soumettre un formulaire sur un site Web qui exige que l'ID de session en cours soit transmis en tant que données de formulaire. Le fichier sessionId est défini en tant que cookie sur la page de connexion.

première demande (authentification)

curl -d "username=my_user&pass=my_pass" http://mywebsite.com/login.php -c, --cookie-jar my-cookies 

Deuxième demande (formulaire soumettre)

curl -d "sessionId=jk5lkdr7cdqkn1ptqa0rmndbr7&formField1=abc&formField2=def" http://mywebsite.com/getReport.php -b, --cookie my-cookies 

Dans les données de demande ci-dessus, je l'ai copié manuellement l'identifiant de session à partir du fichier cookie. Le fichier cookie ressemble à ceci. (SessionId = PHPSESSID)

# Netscape HTTP Cookie File 
 
# https://curl.haxx.se/docs/http-cookies.html 
 
# This file was generated by libcurl! Edit at your own risk. 
 

 
mywebsite.com \t FALSE \t/\t FALSE \t 0 \t PHPSESSID \t jk5lkdr7cdqkn1ptqa0rmndbr7 
 
.mywebsite.com \t TRUE \t/\t FALSE \t 1516507485 \t info \t crownandcaliber%40mediaiqdigital.com 
 
.mywebsite.com \t TRUE \t/\t FALSE \t 1507867485 \t pref \t deleted 
 
.mywebsite.com \t TRUE \t/\t FALSE \t 0 \t affiliate_flag \t Y3Jvd25hbmRjYWxpYmVyQG1lZGlhaXFkaWdpdGFsLmNvbQ%3D%3D 
 
.mywebsite.com \t TRUE \t/\t FALSE \t 0 \t cookie \t name%3ATm8gYWR2ZXJ0aXNlciBuYW1lIGF2YWlsYWJsZQ%3D%3D%3B

est-il un moyen pour moi de tirer progammatically la valeur du cookie PHPSESSID qui est fixé dans la première demande dans les données de formulaire pour la deuxième demande?

+0

@IuriiDrozdov - n'a pas besoin d'aide pour garder la session en vie; faire cela en passant les cookies de la session en réponse. Je cherche à extraire le _value_ du cookie de session et le passer en tant que données de formulaire pour la demande # 2. (En plus de passer le fichier cookie entier.) –

+1

pourquoi ne pas le lire à partir du fichier alors? –

+1

awk 'NR == 5' youfilewithcookie | awk {'imprimer $ 7'} | (lire sessId; yourculcommand ici avec $ sessId) –

Répondre

1

Le code ci-dessous lit une 5ème ligne d'un fichier youfilewithcookie, il obtient le contenu d'une colonne 7 et lit dans une variable appelée sessId.

awk 'NR==5' youfilewithcookie | awk {'print $7'} | (read sessId; yourculcommand here with $sessId) 
+0

S'il vous plaît examiner [Comment puis-je écrire une bonne réponse] (https://stackoverflow.com/help/how-to-answer). Les réponses au code uniquement sont déconseillées car elles n'expliquent pas comment elles résolvent le problème dans la question. Vous devriez mettre à jour votre réponse pour expliquer ce que cela fait et comment cela résout le problème. - Cela aidera non seulement le PO, mais d'autres avec des problèmes similaires. – FluffyKitten

+0

Terminé par ceci, afin de tenir compte des cas où le cookie de session n'était pas dans la ligne 5: 'awk '/ PHPSESSID /' jivox-cookies | awk {'imprimer $ 7'} | ... ' –