IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Se loguer automatiquement avec un script python


Sujet :

Réseau/Web Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Se loguer automatiquement avec un script python
    Bonjour

    Comme dit dans le titre, je veux pouvoir me loguer automatiquement sur un site internet via un script python. Je ne connais pas du tout se langage donc j'ai fait quelque recherche sur internet et j'en suis arrivé à trouver ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    31
    32
    33
     
    import cookielib, urllib, urllib2
     
     
    login = 'LOG'
    password = 'PASS'
     
    # On active le support des cookies pour urllib2
     
    cookiejar = cookielib.CookieJar()
    urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
     
    # On envoie login/password au site qui nous renvoie un cookie de session
     
    values = {'login':login, 'password':password }
    data = urllib.urlencode(values)
    request = urllib2.Request("http://www.imdb.com/register/login", data)
    url = urlOpener.open(request)  # Notre cookiejar reçoit automatiquement les cookies
    page = url.read(500000)
     
    # On s'assure qu'on est bien logué en vérifiant la présence du cookie "id"
    # (qui est - sur le site imdb.com - le cookie contenant l'identifiant de session.)
     
    if not 'id' in [cookie.name for cookie in cookiejar]:
        raise ValueError, "Echec connexion avec login=%s, mot de passe=%s" % (login,password)
     
    print "Nous sommes connecte !"
     
    # Maintenant on fait une autre requête sur le site avec notre cookie de session.
    # (Notre urlOpener utilise automatiquement les cookies de notre cookiejar)
     
    url = urlOpener.open('http://imdb.com/find?s=all&q=grave')
    page = url.read(200000)
    Seulement sa ne marche pas, sa me retourne l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "C:\Documents and Settings\MBouchut\Bureau\test.py", line 24, in <module>
        raise ValueError, "Echec connexion avec login=%s, mot de passe=%s" % (login,password)
    ValueError: Echec connexion avec login=LOG, mot de passe=PASS
    Auriez vous une idée de comment régler le problème?

    Cordialement

  2. #2
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Ben je dirais que le site que tu testes ne gère peut-être pas les comptes, ou qu'il n'a pas de compte "LOG", ou que s'il a un compte "LOG" son mot de passe n'est pas "PASS". Ça ne vient pas forcément de la partie python... Je dirais aussi que le bout de script que tu as posté ne se suffit pas à lui même, car la ligne 24 ne devrait pas provoquer l'exception décrite, et qu'un essai chez moi met en évidence que tu mets des codes non ascii dans tes commentaires sans spécifier d'encodage.

    A+

    Pfeuh

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut pfeuh

    Alors j'ai bien créé un compte sur le site juste avant de tester mon script. Si je me logue manuellement dessus je suis bien connecté donc sa viendrai pas du login ou du mot de passe. J'ai aussi tester le script sur 2 sites différent.

    Pour les commentaires j'ai viré les caractères non ASCII.

    Qu'est ce que tu entend par "le code ne se suffit pas à lui même"? Il en manquerai un morceau pour qu'il puisse s’exécuter correctement? Dans ce cas tu pourrais me renseigner sur ce qu'il manque?

    Cordialement

    Bastien

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par bastien981 Voir le message
    Qu'est ce que tu entend par "le code ne se suffit pas à lui même"? Il en manquerai un morceau pour qu'il puisse s’exécuter correctement?
    j'ai lancé un serveur apache sur ma machine, j'ai copié-collé ton script dans un éditeur, j'ai remplacé les caractères accentués par des caractères ascii et j'ai remplacé l'url par une url que mon proxy ne bloque pas. J'ai lancé ce script et j'ai bien eu une exception, mais à la ligne 25 et non 24 comme marqué dans ton post, ce qui me fait supposer que le script que tu as posté ne correspond pas au message d'erreur. Pour les caractères non ascii, il suffit de mettre cette ligne en entête de ton script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: utf-8 -*-
    je ne peux pas t'en dire plus, n'étant pas branché réseau, je peux juste te dire que l'exception est levée parce que le cookie "id" n'a pas été trouvé. Ce qui a motivé ma réponse précédente, à savoir que ce n'est pas forcément la partie python qui est en cause.

    On s'assure qu'on est bien logue en verifiant la presence du cookie "id" (qui est - sur le site imdb.com - le cookie contenant l'identifiant de session.)
    Il me semble que les cookies sont chez les clients et non sur le serveur. Donc si j'ai bien compris ton problème, il suffit de créer le bon cookie sur ta machine avant de te connecter et le reste suivra automatiquement à la connexion. Mais comme je n'ai vraiment pas la culture réseaux, je ne pourrai pas t'aider plus...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut

    Merci pour ta réponse.

    Javais pas trop fait attention à cette histoire de cookie. Je suis aller vérifier et en effet je n'ai pas de cookie lié à ce site. J'ai donc ré-éxécuter mon programme en mettant l'url d'un site où j'avais bien un cookie qui se créé automatiquement. Sa me sort alors un autre message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Traceback (most recent call last):
      File "C:\Documents and Settings\MBouchut\Bureau\test.py", line 19, in <module>
        url = urlOpener.open(request)
      File "C:\Python26\lib\urllib2.py", line 389, in open
        response = meth(req, response)
      File "C:\Python26\lib\urllib2.py", line 502, in http_response
        'http', request, response, code, msg, hdrs)
      File "C:\Python26\lib\urllib2.py", line 427, in error
        return self._call_chain(*args)
      File "C:\Python26\lib\urllib2.py", line 361, in _call_chain
        result = func(*args)
      File "C:\Python26\lib\urllib2.py", line 510, in http_error_default
        raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    HTTPError: HTTP Error 403: Forbidden

  6. #6
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Désolé, je ne pourrais pas t'aider plus, ça dépasse mes connaissances. Nul doute que quelqu'unva le faire. Un petit coup de google sur "erreur 403"?

    A+

    Pfeuh

Discussions similaires

  1. [Python 3.X] problème de débutant avec premier scripts - python 3.4.2 - IDLE, Notepad ++
    Par James Ogram dans le forum Général Python
    Réponses: 7
    Dernier message: 23/01/2015, 00h09
  2. [EasyPHP] redémarraer EasyPHP automatiquement avec un script php
    Par swissikarim dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 16/02/2011, 22h12
  3. comparaison de deux fichiers textes avec un script python
    Par zekruss dans le forum Général Python
    Réponses: 1
    Dernier message: 10/11/2009, 05h52
  4. edition d'un fichier .txt avec un script python
    Par ziedzekri dans le forum Général Python
    Réponses: 7
    Dernier message: 06/10/2009, 00h14
  5. Executer un CppUnittest avec un script python
    Par merlinerick dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 20/08/2009, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo