Problèmes avec curl pour créer un métamoteur
Résolu/Fermé
jojonewbie
Messages postés
11
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
23 août 2010
-
28 juil. 2010 à 12:04
jojonewbie Messages postés 11 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 23 août 2010 - 29 juil. 2010 à 11:47
jojonewbie Messages postés 11 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 23 août 2010 - 29 juil. 2010 à 11:47
A voir également:
- Problèmes avec curl pour créer un métamoteur
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram - Guide
- Créer un lien pour partager des photos - Guide
4 réponses
avion-f16
Messages postés
19241
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
16 mars 2024
4 495
28 juil. 2010 à 13:25
28 juil. 2010 à 13:25
Salut.
1/ Il faudra, lors de la requête de connexion, indiquer un fichier où stocker les cookies. Lors de la requête pour effectuer la recherche, il faudra indiquer le fichier où sont enregistrés les cookies.
Voilà la deux options à utiliser :
CURLOPT_COOKIEFILE : Pour la requête de recherche
CURLOPT_COOKIEJAR : Pour la requête de connexion
2/ Il y a peut-être un token (jeton).
Regarde dans le code source du formulaire pour le savoir.
Si c'est le cas, il faudra le récupérer et le transmettre dans une deuxième requête.
Il faudra sans doute encore utiliser les cookies (pour la session, si le script stocke le jeton dans $_SESSION (sur le serveur du Wiki, pas sur le tiens)).
1/ Il faudra, lors de la requête de connexion, indiquer un fichier où stocker les cookies. Lors de la requête pour effectuer la recherche, il faudra indiquer le fichier où sont enregistrés les cookies.
Voilà la deux options à utiliser :
CURLOPT_COOKIEFILE : Pour la requête de recherche
CURLOPT_COOKIEJAR : Pour la requête de connexion
2/ Il y a peut-être un token (jeton).
Regarde dans le code source du formulaire pour le savoir.
Si c'est le cas, il faudra le récupérer et le transmettre dans une deuxième requête.
Il faudra sans doute encore utiliser les cookies (pour la session, si le script stocke le jeton dans $_SESSION (sur le serveur du Wiki, pas sur le tiens)).
avion-f16
Messages postés
19241
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
16 mars 2024
4 495
Modifié par avion-f16 le 28/07/2010 à 17:26
Modifié par avion-f16 le 28/07/2010 à 17:26
Lorsque tu tapes directement l'adresse dans le navigateur, as-tu aussi cette erreur ?
Si non, alors essaye en modifiant l'user-agent de cURL avec (par exemple) celui-ci :
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Si non, alors essaye en modifiant l'user-agent de cURL avec (par exemple) celui-ci :
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB5
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
jojonewbie
Messages postés
11
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
23 août 2010
28 juil. 2010 à 16:42
28 juil. 2010 à 16:42
Salut,
Merci, mon problème numéro 1 est entièrement résolu :) ! Effectivement, les options CURLOPT_COOKIEFILE et CURLOPT_COOKIEJAR étaient ma solution (difficile de trouver et de comprendre ce dont on a besoin dans une API d'une fonction contenant plus d'une centaine de paramètres parfois !). J'ai aussi utilisé l'option :
CURLOPT_FOLLOWLOCATION qui d'après l'API : TRUE pour suivre toutes les en-têtes "Location: " que le serveur envoie dans les en-têtes HTTP (notez que cette fonction est récursive et que PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que CURLOPT_MAXREDIRS ne soit définie).
Je ne suis pas sûr que ce soit nécessairement utile si ce n'est lorsque l'on rencontre des fonctions de redirection telle que header() etc... Si ça peut servir à quelqu'un.
Pour ce qui de mon 2ième problème, j'avoue avoir été fortement imprécis. Il ne semble pas que des tokens soient le problème (si j'ai bien compris ce que c'était). En réalité, le problème est assez déroutant puisque même la page d'accueil d'un wiki foswiki (qui est donc accessible en rentrant directement l'url par exemple) n'est pas accessible avec curl. Pour être plus précis, voilà l'erreur que curl me retourne à la fin :
Forbidden
You don't have permission to access /foswiki on this server.
Apache/2.0.52 (Red Hat) Server at pc***** Port 80
C'est comme s'il y avait une protection contre les accès indirects...
En tout cas, encore merci. J'ai déjà bien avancé !
Merci, mon problème numéro 1 est entièrement résolu :) ! Effectivement, les options CURLOPT_COOKIEFILE et CURLOPT_COOKIEJAR étaient ma solution (difficile de trouver et de comprendre ce dont on a besoin dans une API d'une fonction contenant plus d'une centaine de paramètres parfois !). J'ai aussi utilisé l'option :
CURLOPT_FOLLOWLOCATION qui d'après l'API : TRUE pour suivre toutes les en-têtes "Location: " que le serveur envoie dans les en-têtes HTTP (notez que cette fonction est récursive et que PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que CURLOPT_MAXREDIRS ne soit définie).
Je ne suis pas sûr que ce soit nécessairement utile si ce n'est lorsque l'on rencontre des fonctions de redirection telle que header() etc... Si ça peut servir à quelqu'un.
Pour ce qui de mon 2ième problème, j'avoue avoir été fortement imprécis. Il ne semble pas que des tokens soient le problème (si j'ai bien compris ce que c'était). En réalité, le problème est assez déroutant puisque même la page d'accueil d'un wiki foswiki (qui est donc accessible en rentrant directement l'url par exemple) n'est pas accessible avec curl. Pour être plus précis, voilà l'erreur que curl me retourne à la fin :
Forbidden
You don't have permission to access /foswiki on this server.
Apache/2.0.52 (Red Hat) Server at pc***** Port 80
C'est comme s'il y avait une protection contre les accès indirects...
En tout cas, encore merci. J'ai déjà bien avancé !
jojonewbie
Messages postés
11
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
23 août 2010
29 juil. 2010 à 11:47
29 juil. 2010 à 11:47
Bonjour
Effectivement, il suffisait d'imposer un autre useragent avec l'option CURLOPT_USERAGENT... Cela peut poser des problèmes d'affichage apparemment, mais en retravaillant le code retourné par cURL, tout s'arrange !
Donc voilà tous mes problèmes résolus, il y a plus qu'à en attendre d'autres ! Je devrais quand même m'en sortir maintenant.
Merci :)
Effectivement, il suffisait d'imposer un autre useragent avec l'option CURLOPT_USERAGENT... Cela peut poser des problèmes d'affichage apparemment, mais en retravaillant le code retourné par cURL, tout s'arrange !
Donc voilà tous mes problèmes résolus, il y a plus qu'à en attendre d'autres ! Je devrais quand même m'en sortir maintenant.
Merci :)