|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
Boinjour,
je fais des requêtes à un serveur avec curl. je fais une requête pour m'authentifier, et je voudrais le faire seulement toutes les 10 minutes. Code :
Si ca fait moins de 10 minutes, récuperer $ch ( CURL Handle authenticated ) pour l'utiliser dans une autre requete. Quelqu'un pour m'aider? merci d'avance |
||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Si ton script est relancé à chaque fois, tu perds tous tes pointeurs de ressources. Mais pourquoi ne pas simplement réinjecter le cookie de session/authentification avec CURLOPT_COOKIEFILE.
Pour le timestamp, c'est relativement simple, tu le mets en bdd ou en fichier plat et tu le relis à chaque fois que tu veux exécuter le script.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
tu veux dire je teste si le temps est inferieur à 10min, je fais un
Code :
curl_setopt($ch, CURLOPT_COOKIEFILE, "\tmp\cookie.txt"); |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
Il n'y a pas un autre moyen que de créer un timestamp dans un bdd.?
une info dans le cookie qui nous donnerai la date de création par exemple |
|
|
00
|
|
|
#5 | |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Si tu veux récupérer un pointeur de ressource plus loin dans un script, c'est possible, bien sûr. Mais si le script est exécuté à nouveau, tous les pointeurs de ressources seront automatiquement fermés quand le premier script s'arrêtera.
A ma connaissance il n'y a pas de connections persistante pour ce type de ressource. http://be2.php.net/manual/fr/resource.php Pour le timestamp la fonction curl_getinfo() ne contient que des données de durée (connexion et transaction). Pas l'heure de la connexion. Pourrais-tu expliquer le pourquoi de ta demande. Gain de temps? Prolongation d'une session? Citation:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
c'est pour un gain de temps oui.
le but est de s'authentifier au serveur une fois, de pouvoir effectuer des requêtes sans se ré-authentifier (pour eviter de faire 2 requetes à chaque fois). Et de faire une authentification automatique selon un temps prédéfini. |
|
|
00
|
|
|
#7 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
je vais récapituler:
je m'identifie a un serveur: Code :
ensuite pour effectuer de nouvelle requete a ce serveur, j'ai besoin de recupérere la ressource $ch . Pour éviter d'appeler une methode d'authentification à chaque fois. Apres dans une methode "send_query", je fais : Code :
j'espère avoir été plus clair. |
||||
|
|
00
|
|
|
#8 | ||
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
A première vue il ne s'agit pas d'une authentification http mais plutôt par cookie. Essaye, comme suggéré plus haut de réinjecter le cookie capturé lors de la première connexion.
Ton script send_query: Code :
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
||
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
merci pour ton aide.
j'avais deja essayé ca mais ca m renvoi une erreur: Code :
curl_setopt(): supplied argument is not a valid cURL handle resource in Code :
curl_setopt($ch, CURLOPT_COOKIEFILE, $COOKIE); |
|
|
00
|
|
|
#10 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Tu dois évidemment rouvrir une ressource (curl_setopt($ch, CURLOPT_URL,$url)
Sans pointeur de ressources ça ne risque pas de marcher! As-tu la main sur le serveur cible? Sinon, les techniques d'indentifications des sites sont parfois très ténébreuses. Il n'y a pas de recette miracle. Par exemple, hotmail n'offre pas d'accès POP, dès lors certains ont essayé d'utiliser CURL (ou wget) pour accéder à leur mail. Pas évident apparemment. Il faut utiliser un anayleur de trames (Etheral, tcpdump) pour décortiquer le contenu de toutes les entêtes de redirection et cookies envoyés par hotmail et d'ensuite les "replay" avec CURL. Pas si simple.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
je le fais bien ( voir 2 posts plus haut)!!
je re ouvre une ressource! |
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Pour ouvrir une ressource CURL, tu dois faire:
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
oui mais en faisant ca, je perds ma 1ere ressource, et donc ce n'est plus la meme session non?
|
|
|
00
|
|
|
#14 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
J'essaye de te comprendre. Tu veux accéder à un site et y lancer un script après t'être identifié. L'identification CURL se passe toujours en deux temps:
Il faut bien comprendre la logique des échanges d'entêtes http entre le site et le client (ici CURL). Ensuite, il faut procéder par essais-erreurs pour arriver à tes fins. Ainsi que lire la doc et d'essayer, "à blanc", les exemples de la doc. Je suppose que tu n'as pas la main sur la cible et que tu essayes de court-circuiter les pages d'indentification pour accéder à une page ou script particulier. Rien de mal à cela mais si la cible est un site qui n'aime pas les bots, tu peux t'attendre à une bonne défense. CURL est l'outil préféré des robots. Si, par contre il s'agit d'un simple site avec une authentification de base, c'est jouable. Pour t'aider dans ton déboguage, affiche les headers reçus (CURLOPT_HEADER) et analyse-les.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
j'ai acces au serveur cible, car c'est pour un stage.
Le serveur appartient à mon entreprise. j'ai du mal a comprendre ce systeme de cookie en effet ! |
|
|
00
|
|
|
#16 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2005 Messages : 101 ![]() |
bonjour,
j'ai réussi en capturant une 1ere fois le cookie et en le ré injectant avec toutes les options de transfert. J'ai un petit probleme. Est-ce que je peux choisir le chemin de mon cookie? car par défaut il se créer a la racine de apache. |
|
|
00
|
|
|
#17 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 709 ![]() |
Tu y mets le chemin que tu veux avec, toutefois, la limitation définie dans open_basedir du php.ini.
Certaines versions de PHP/CURL passent au travers de cette limitation mais chuuut il ne faut le dire à personne!
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT Jabber: ripat at im.apinc.org |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com