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 :

Probleme identification cookies


Sujet :

Réseau/Web Python

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Probleme identification cookies
    Bonjour,
    J'ai suivis les tuto de voidspace pour m'identifier sur un site web avec urllib, urllib2 et cookielib. L'identification se fait grace a deux input, un login et un password, j'envoie donc une requete POST avec ces deux variables et je recupere le cookie de session. Jusque là tout va bien, sauf que lorsque je me connecte sur une deuxieme page (interne au site web) je ressoi un message me disant que je dois etre identifié. Je precise que l'identification sur la premiere page fonctionne car j'ai regardé ce que me renvoyait le serveur et j'etais bien connecté.
    Je pense que le problème est que le cookie n'est pas conservé.
    Voici mon code source:
    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
    34
    35
     
    import urllib
    import urllib2, cookielib
     
    list=[1, 21, 22, 23, 52]
    nb=0
    i = 0
    result= ""
    login = 'syltrox'
    password = '12345'
     
    cookiejar = cookielib.CookieJar()
    urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
     
    values = {'login_id':login, 'password_id':password, 'identification':1}
    data = urllib.urlencode(values)
    request = urllib2.Request("http://www.morphee-challenge.fr/", data)
    url = urlOpener.open(request)
    page = url.read(500000)
     
    print "Identification reussi"
     
     
    while i != 5:
    	the_url = 'http://morphee-challenge.fr/challenges/programmation/spider/%s.php'%list[nb]
    	req = urllib2.Request(the_url)
    	handle = urllib2.urlopen(req)
    	print handle.read()
     
    	if "perdu" in handle.read():
    		result = result + str(list[nb])
    	print "<!>", result
     
    	i = i + 1
    	nb = nb + 1
    Je precise que le code est destiné a une epreuve de programmation sur morphee-challenge.com.
    Ma question est donc: Comment faire pour garder le cookie en memoire sur toute les pages visitées ( si l'erreur vient effectivement de ça ).
    Merci d'avance.

  2. #2
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Sur ton code, une chose me gène, tu fais un:


    print "identification réussie"

    Alors que tu n'as rien tester! Je te propose donc de faire un test sur ta page de retour, je m'explique:

    Ouvre ton navigateur web et connecte toi sur le site, une fois connecté, tu dois arrivé sur une certaine page, sur cette page, il doit normalement y avoir des éléments qui te prouvent que tu est connecté!

    Comme un bouton "déconnection" ou un "Bienvenue" ou encore un "Mon Compte".

    Je fais ceci pour vérifier mes connexions:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     page = url.read()
            #print page <- pour tester
            if "<td><a href=\"deco.php\">Déco</a></td>" in page:
                print "CONNECTION A LE SITE COMPTE:", psd," -> OK"
                connected = 1
           else:
             print 'erreur'
    Ensuite, tu peux vérifier si tes cookies existent en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print [cookie.name for cookie in cookiejar]
    Et tu look si les cookies sont présent.
    Voilà ce uqe je peux te proposer, ensuite, je ne sais pas.

    Bon courage man

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    page = url.read()
            #print page <- pour tester
            if "<td><a href=\"deco.php\">Déco</a></td>" in page:
                print "CONNECTION A LE SITE COMPTE:", psd," -> OK"
                connected = 1
           else:
             print 'erreur'
    A quoi correspond le "psd" dans ton code? Le connected=1 te sert a quoi? Pourquoi ne donner qu'un quart du code, ca ne veut plus rien dire

    Pour les cookies je cherche sur google et je vois un code intéressant

    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
    #! python
    import cookielib, urllib, urllib2
     
    login = 'ismellbacon123@yahoo.com'
    password = 'login'
     
    # 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)
    La page se trouve ici : http://wikipython.flibuste.net/moin.py/CodesReseau
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. probleme de cookie
    Par chrissch87 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/11/2006, 11h53
  2. [Cookies] probleme gestion cookie de session
    Par cyberyan dans le forum Langage
    Réponses: 1
    Dernier message: 13/11/2006, 10h58
  3. [Cookies] HELP probleme avec cookies
    Par sirbaldur dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 13h26
  4. [Cookies] problemes avec cookie
    Par mereyj dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2006, 22h48
  5. probleme identification et mot de passe root
    Par freums dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2003, 17h09

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