Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 16h19   #1
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
Par défaut Script automatisation de procédure

Bonjour,

Je souhaiterai créer un script permettant de se loguer et d'automatiser une tâche rébarbative qui consiste à cliquer sur plusieurs liens successifs.

J'ai lu par ci par là quelques pistes comme l'utilisation de la librairie curl en PHP ou utiliser la fonction fsockopen ou encore de le faire en PerL

Je n'ai aucune idée de par où commencer et avec quoi ?

Toute aide ou bonnes idées sont les bienvenues !

Merci d'avance pour votre aide !
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 13h59   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,
Citation:
Je souhaiterai créer un script permettant de se loguer et d'automatiser une tâche rébarbative qui consiste à cliquer sur plusieurs liens successifs.
C'est bien possible mais avant tu dois connaître les pages en questions ensuite d'utiliser Curl.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 15h08   #3
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
Salut Thes32,

Alors pour ce qui est des noms des pages sur lesquelles je dois naviguer je les connais.

D'ailleurs, j'ai réussi avec cURL à m'authentifier sur le site, il ne me reste plus qu'à partir de ce point là qu'à simuler un "clic" sur un lien de la page où je suis positionné après mon authentification.

Et c'est là que je bloque, je ne sais pas comment continuer mon script afin qu'une fois authentifié, il navigue vers une autre page.

Je mets mon bout de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL,"http://site/login" );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'LOGIN=monlogin&PASSWORD=monpass&heureTR=\"\"' );
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie_site.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 
$auth = curl_exec ($ch);
 
curl_close ($ch);
J'ai pensé à rajouter après ça :
Code :
1
2
3
4
5
6
7
8
 
$ch2 = curl_init();
 
curl_setopt($ch2, CURLOPT_URL,"http://site/lien1" );
 
echo $navig = curl_exec ($ch2);
 
curl_close ($ch2);
Je pensais avoir l'affichage de la page correspondant au lien pour vérifier le bon fonctionnement du script mais je n'obtiens qu'une page avec l'erreur : "Session expired" ce qui accuserait peut-être les cookies de ne pas suivre dans ma 2ème requête cURL, non ?

J'ai tout de même essayé ça mais apparemment ça ne fonctionne pas non plus :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php 
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL,"http://site/login" );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'LOGIN=monlogin&PASSWORD=monpass' );
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie_site.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 
$auth = curl_exec ($ch);
 
curl_setopt($ch, CURLOPT_URL,"http://site/lien1" );
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie_site.txt'); 
 
$lien = curl_exec ($ch);
 
curl_close ($ch);
?>
Une idée ?

Merci !
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 16h07   #4
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Peux tu tester avec ceci ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
<?php
 
$credentials = array( 'LOGIN' => 'tonLogin', 'PASSWORD' => 'tonpassword', 'autre' => 'valeur' );
 
//initialisation de Curl
$ch = curl_init();
//fixer les paramètres
curl_setopt( $ch, CURLOPT_URL, "http://site/login" );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $credentials );
curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie_site.txt' );
curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie_site.txt' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
//execution login
$resultat = curl_exec ( $ch );
echo $resultat;
echo "<br>".PHP_EOL;
 
//navigation
curl_setopt( $ch, CURLOPT_URL, "http://site/lien1" );
echo $resultat = curl_exec ( $ch );
echo $resultat;
echo "<br>".PHP_EOL;
 
curl_close ( $ch );
 
?>
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 09h06   #5
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
Je viens d'essayer ça mais j'ai toujours l'erreur de perte d'authentification :
"Session expired..."

D'ailleurs tu affichais 2 fois le résultat dans ton code mais j'ai corrigé

Code :
1
2
3
 
echo $resultat = curl_exec ( $ch );
echo $resultat;
Toujours les cookies en cause ?
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 09h19   #6
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Je viens d'essayer ça mais j'ai toujours l'erreur de perte d'authentification :
"Session expired..."
Le fichier cookie_site.txt est bien crée ? le script peut bien le lire ?

Citation:
D'ailleurs tu affichais 2 fois le résultat dans ton code mais j'ai corrigé
Non, en fait les deux affichages sont différentes l'une c'est pour afficher le résultat de l'authentification et l'autre c'est pour afficher la page du lien1.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 09h45   #7
Invité de passage
 
Inscription : avril 2009
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 42
Points : 3
Points : 3
Ok ok mais regarde à la fin de ton code tu fais 2 echo en suivant pour afficher le lien1 (enfin bref !)

Pour le cookie, c'est vrai que je ne vois pas depuis mon client FTP un fichier cookie_site.txt se créer.

Mon serveur WEB tourne sous WAMP, est-ce un problème de droits du dossier "www" ? J'ai pourtant testé en passant les droits du dossier à 777

EDIT :

Ça y est je viens de trouver d'où venait mon erreur pour la création de cookie.

En fait, j'ai du mettre le chemin du fichier en dur : "C:\...\cookie_site.txt"
Et là, je vois bien le fichier se créer par contre j'ai toujours l'erreur "Session expired"...

Maintenant serait-ce la reprise de celui-ci dans la 2ème requête cURL qui poserait soucis ?

Encore merci de ton aide !
trifly est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h06.


 
 
 
 
Partenaires

Hébergement Web