Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 13 utilisateurs en ligne, consultez le détail
Auteur Message
ToMsS
#0 Message posté le : 28-06-2007 à 23:27:54


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 26-10-2006
Nombre de messages : 57
Bonjour ,


je souhaiterais realiser un script me permettant de me connecter sur site web et de recuoerer des informations automatiquement

1) est ce possible de faire ce genre de chose ? ( je precise que sur le dit site il faut un login/pass pour se connecter)

2) si oui avec quel langage ? ( bash , pytohn perl ..)

3) des exemples , des scipt utilisant ce procedé

d'avance merci

-------------------------------------
On est toujours le newbie de quelqu"un.
jblecanard
#1 Message posté le : 29-06-2007 à 00:12:25


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
C'est possible, nous l'avions fait dans une asso de chez nous pour capturer un catalogue. Le souci est que ça te rend énormément dépendant du site.

Pour le login et mot de passe, ça corse l'affaire. Il faut que tu regarde le mode d'authentification. Si c'est une authentification HTTP (.htaccess) ce sera facile. Si c'est via un formulaire, il faudra regarder comment il est fait et comment il envoie la requête. Dans le pire des cas, il est dynamique et on programme devra faire un calcul sur le formulaire de connexion.

Si le site est simple, bash peut suffire. S'il est un peu plus évolué, tu vas galérer. Je pense que dans ton cas, python est le plus adapté. Dans l'asso dont je parlais, on faisait ça en PHP car c'était pour une appli web. J'essaierai de choper un bout de code, je n'ai pas là sous la main.

D'un point de vue général, tout dépend énormément du site en question, ça reste un système peu fiable en production. L'essentiel du travail consistera à récupérer le HTML (facile), le parser et y trouver l'information (le plus dur), puis traiter l'info.

-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -
Azollyx
#2 Message posté le : 29-06-2007 à 12:53:21


Naboo


Forum : Modérateur
Association : Président
Arrivé(e) le : 09-04-2006
Nombre de messages : 2085
Il doit y avoir moyen de faire ça avec telnet, tout dépend de la connaissance que tu as du site. Si tu sais à peu près comment il fonctionne, tu ne devrais pas avoir de pb.
$ telnet example.org 80
> POST /script/qui/gère/la/connection.php HTTP/1.1
> Connection: Keep-Alive
> Host: example.org
> Referer: http://example.org/la/page/où/est/le/formulaire/de/connexion.html
> Content-Length: <la taille de la suite>
>
> username=toto <- nom des champs à trouver dans le formulaire
> userpwd=***
>
> # il te répond oui tu es bien connecté
> GET /ta/page
>
> Connection: Close
$

Voilà un bref récapitulatif des commandes HTTP dont tu devrais avoir besoin.

--Message édité par Azollyx le 29-06-2007 à 12:53:40--


-------------------------------------
toto
doobs
#3 Message posté le : 29-06-2007 à 13:52:30


Hobbit


Forum : Modérateur
Association : Membre actif
Arrivé(e) le : 11-08-2003
Nombre de messages : 1533
salut,

tu as tout bonnement wget qui permet de faire cela, avec login/password :

--http-user --http-passwd

http://www.cbi.pku.edu.cn/Doc/CS/wget/man.wget.html

-------------------------------------
Morgoth
#4 Message posté le : 29-06-2007 à 13:54:28


Hobbit


Forum : Modérateur
Association :
Arrivé(e) le : 20-11-2003
Nombre de messages : 1576
Sinon, si tu veux pas te faire chi** à coder du HTTP, ou si tu as besoin d'identifier les éléments HTML (donc parser le conten), tu peux utiliser un framework comme HtmlUnit (en Java). Ca émule un navigateur plutôt bien, sauf si il y a trop de JavaScript.

http://htmlunit.sourceforge.net

Je m'en sers régulièrement, donc si tu veux un exemple, il n'y a pas de problème.

-------------------------------------
Morgoth
tamiel
#5 Message posté le : 29-06-2007 à 14:40:00


Hobbit


Forum : Inscrit
Association :
Arrivé(e) le : 17-10-2003
Nombre de messages : 1067
Sauf qu'il faut mettre java et que java c'est pas dans les distributions linux par défaut donc c'est pas standard (non je ne déteste pas java je le hais tout simplement )


Je trouve qu'utiliser java pour faire un script aussi simple c'est exagéré.

Python est par défaut installé sur les distribs linux et il a des modules en standard faits pour ça (urllib, urllib2, HTMLParser, httplib) , donc je préconiserais ce choix (avis personnel et professionnel)

--Message édité par tamiel le 29-06-2007 à 14:42:41--


-------------------------------------
If you don't know, ask manpage !
ToMsS
#6 Message posté le : 01-07-2007 à 00:55:56


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 26-10-2006
Nombre de messages : 57
Merci pour toutes vos reaction , enfait je sohaiterais ecrire un script qui recuperer toute les information sur mon abonnement telephonique


le formulaire du site est le suivant :

            <form class="isd_paddings_sm" method="POST" action="https://www.sfr.fr/cas/login?service=https://www.sfr.fr/j_acegi_security_check" name="frm" ID="frm">

                        <input type="hidden" name="target" value="/" />

                        <input type="hidden" name="_eventId" value="submit" />

                        <input type="hidden" name="currentpage" value="http://www.sfr.fr/" />



                        <p class="login_help">

                                <label for="login">Mon identifiant :</label>

                                <a onmouseover="showHelp(this)" href="#" class="color_black">(?)<span>Saisissez votre N&deg; d'appel &agrave; 10 chiffres ou votre login ADSL</span></a>

                            </p>

                        <input id="login" name="username" type="text" class="xs" style="margin-right:5px;" />



                        <p class="isd_Tpaddings"><label for="code">Mon code personnel :</label></p>

                        <input id="code" name="password" type="password" class="xs"/>

                        <a href="#" onclick="javascript:checkLoginForm();"><img src="/img//skin/visu_split_ok_btn.gif" class="button_ok" alt="" border="0" /></a>

                        <ul class="lst_simple no_Vsides_mrgn clickableText isd_Vpaddings_sm">

                            <li><a href="https://monprofil.sfr.fr/monprofilTDB/publique/AccueilReinitWeb?Precedent=http://www.sfr.fr/&Quitter=http://www.sfr.fr/&Suivant=http://www.sfr.fr">&gt; Code personnel oubli&eacute;</a> &nbsp;&nbsp; <a href="http://www.sfr.fr/aide-connexion.jsp">&gt; Aide</a></li>



                        </ul>

                        <p class="checkboxLine no_Vsides_pdg">

                            <input type="checkbox" name="remember-me" value="on"/>

                            <label>M&eacute;moriser mon compte sur cet ordinateur</label>

                        </p>

                    </form>


j'ai essayer ceci pour tenter de me loggé :

wget --save-cookies=$cookie -q --post-data="username=monlogin&password=monmotdepasse" https://www.sfr.fr/cas/login?service=https://www.sfr.fr/j_acegi_security_check


mais sans succés , comment savoir quel parametre mettre dans l'option --post-data ?

-------------------------------------
On est toujours le newbie de quelqu"un.
jblecanard
#7 Message posté le : 01-07-2007 à 16:14:29


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
Salut

tu n'utilises pas correctement l'option --post-data. Extrait du man :


# Log in to the server. This can be done only once.
wget --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://server.com/auth.php


A adapter bien sûr... De plus, il fautdrait reproduire tous les champs du formulaire et pas seulement celui du login et du mot de passe.

--Message édité par jblecanard le 01-07-2007 à 16:14:45--


-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -