Recuperation donnée page web

MichaelOfCourse Messages postés 90 Statut Membre -  
MichaelOfCourse Messages postés 90 Statut Membre -
Bonjour,

Je suis inscrit sur un site de jeu du loup garou en ligne, si certain connaissent, et j'aimerais aujourd'hui créer une signature dynamique sur le forum de ce site.

Je m'explique, une fois connecté au site, en allant sur la page mon compte, des informations apparaissent tel que mon ratio, mon nombre de points... etc

J'aimerais dans un premier temps, réussir a "capturer" ces informations. Je me suis renseigné tout l'après midi, et j'en suis a un stade ou je ne sais plus ou chercher, j'ai compris qu'il fallait cURL, mais j'ai cru comprendre qu'il fallait que la lib soit installée sur le serveur, aucune idée de si c'est le cas.

BREF, j'aimerais que vous me donniez des pistes sur comment créer une page qui toutes les 2h, par exemple, s'occupe de me loguer sur le site, en extraire ces informations, et en fasse une image png :D

Je vous remercie beaucoup d'avance !

A voir également:

2 réponses

[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut MichaelOfCourse,

Comme tu es sous Linux, tu peux récupérer et filtrer le contenu de ta page en ligne de commande avec curl, grep et sed, par exemple, et fabriquer ton image au moyen de ce que tu as récupéré avec imagemagick, par exemple.

Un script bash pourrait réunir ces commandes.

Et tu pourrais lancer ce script toutes les deux heures avec cron.

Donc : pas besoin de serveur Php.


Dal
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Pour la partie récupération, tu as des explications pas à pas sur l'usage de ces outils curl, grep et sed pour extraire des données d'une page là : https://computers.tutsplus.com/tutorials/grep-and-sed-demystified--mac-45826


Dal
0
MichaelOfCourse Messages postés 90 Statut Membre 6
 
Merci beaucoup pour toutes ces explications, MAIS, cette solution m'empeche de repasser sous windows, et surtout, m'oblige a garder mon ordi allumé.

Ensuite, tout est traité niveau client là, mais je pensais qu'il y aurait eu une solution a base de php :(

EDIT : Je vais tout de même essayer ta solution en attendant :)
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Si tu as un accès shell à ton serveur Php, tu peux faire la même chose sur cette machine.


Dal
0
MichaelOfCourse Messages postés 90 Statut Membre 6
 
Je viens de voir ton autre commentaire en dessous, que je vais essayer aussi, car il m'a l'air plus a portée de main, en tout cas, j'ai réussi a afficher dans mon terminal le code html de la page demandée, et j'ai aussi réussi a le parser. Est ensuite apparu un nouveau problème, que j'avais un peu oublié, les infos que je cherche, ne sont disponibles qu'une fois connecté, dnoc je suis arrivé sur ce site : https://curl.se/docs/manual.html qui m'indique comment remplir automatiquement les champs que je cherche, seulement ça ne marche pas, surement a cause du ait que le "submit" ne possède pas d'attribut "name" ?

En tout cas je vais essayer d'avancer sur cette méthode, et en meme temps je vais aussi lire ton autre commentaire.

Merci vraiment de ton aide
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Re MichaelOfCourse,

Autrement, tu peux faire cela avec Php, et utiliser les fonctions disponibles dès lors que tu as gd compilé dans ton Php (comme https://www.php.net/manual/fr/function.imagecreatetruecolor.php ou https://www.php.net/manual/en/image.examples-png.php).

Pour savoir si ton serveur Php supporte curl, gd, etc., tu mets ceci dans une page php et tu vois ce qui est indiqué :

<?php

phpinfo();

?>

Il te faudra utiliser curl, preg_match ou un autre moyen de parser le contenu récupéré et les fonctions graphiques.

Le problème sera, si tu veux vraiment que ton script soit exécuté toutes les deux heures, de lancer ce script. Les pages Php sont lancées par les visiteurs quand ils sollicitent le serveur.

Si tu as Php CLI disponible sur ton serveur et un service cron sur ton serveur, tu peux te servir de Php comme d'un langage de script shell, la sortie ne se faisant pas alors par l'intermédiaire d'un serveur Web, mais sur la sortie standard.

Si tu ne peux utiliser Php que sous forme de pages servies par un serveur Web, tu peux utiliser des sites tels que ceux signalés dans cette recherche https://www.google.fr/search?q=web+cron&gws_rd=ssl pour programmer une requête vers ta page php selon la fréquence souhaitée (il y a des services gratuits, qui marchent plus ou moins bien, et des services payants).

Une autre solution, si la "signature" peut être hébergée sur ton serveur Php, serait d'indiquer l'adresse de ton script Php, qui envoie un header("Content-type: image/png"); avec le résultat des commandes de création d'image. Alors, pas besoin de programmer toutes les 2 heures. C'est lancé à chaque fois que l'affichage de la "signature" est demandé.


Dal
0
MichaelOfCourse Messages postés 90 Statut Membre 6
 
Rebonjour Dal,
<?php
$postfields = array(
	'qpseudo' => '********',
	'qpassword' => '*******',
);
$path_cookie = 'connexionlgel.txt';
if (!file_exists(realpath($path_cookie))) touch($path_cookie);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://loups-garous-en-ligne.com/compte');
curl_setopt($curl, CURLOPT_COOKIESESSION, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($curl, CURLOPT_COOKIEJAR, realpath($path_cookie));



$return = curl_exec($curl);
curl_close($curl);

if (!preg_match('#Username and password do not match#i', $return))
{
	echo 'Connexion ok.';
	echo $return;
}
else
{
	echo 'Connexion échoué.';
}


?>


J'ai écris ce code, avec l'aide de plusieurs sites, il me permet normalement, de remplir les champs Pseudo et mot de passe, seulement, la page sur laquelle ce code est hebergé m'affiche toujours Connexion Ok, même quand le pseudo entré est faux. As tu une idée de là où le code pèche ?
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
A la vue de cette page, il semble que l'URL vers laquelle les données sont postées n'est pas celle que tu indiques, mais devrait être "/login". Regarde le code html et ce qui est indiqué dans la balise "form".

Es-tu sûr que la page html renvoyée en cas d'erreur de connexion contient "Username and password do not match" ?

Par ailleurs, cela serait peut être aussi une bonne idée de t'assurer que tu ce que tu envisages de faire ne pose pas de problèmes au site en question, ou est conforme à leurs conditions d'utilisation.


Dal
0
MichaelOfCourse Messages postés 90 Statut Membre 6
 
Après vérification, j'ai en effet été trop vite, donc j'ai remplacé l'url par la bonne (https://loups-garous-en-ligne.com/?loginError=true

Par contre, j'ai une nouvelle erreur
preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash
qui me dit que mes délimiteurs ne sont pas corrects, bon, soit, je verrais ça plus tard, mais surtout, ma page m'affiche encore Connexion ok quand je rentre un mauvais mot de passe :'(

Oui, leurs conditions d'utilisation n'interdisent pas la connexion tierce ;)
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
après tes curl_setopt, change ton code comme cela :

if ( ! $return = curl_exec($curl))
{
    trigger_error(curl_error($curl));
    exit;
}
curl_close($curl);

echo "<pre>$return</pre>";
exit;

Dal

Edit : typos
0
MichaelOfCourse Messages postés 90 Statut Membre 6
 
Ca à l'air de marcher bien mieux, si ce n'est que "Failed to connect... Unknown error 101"

Après recherche ça viendrait de chez Free en fait :(
0