Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut [http.client] Acceptation Cookie

    Bonjour,

    je m'amuse à me créer un script en python 3.2.3 pour me connecter à mon compte sur un site. J'utilise la lib http.client, mais je ne peux me connecter car je dois accepter les cookies.
    Comment accepter les cookies en utilisant toujours la lib http.client? J'ai cru voir quelques méthodes avec la lib http.cookiejar, mais j'ai pas réussi et je n'arrive pas à faire le lien avec la lib http.client. Est-il possible d'accepter cela dans le header?

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 5 288
    Points : 7 364
    Points
    7 364

    Par défaut

    Hmm...
    Un petit tuto pour commencer et postez votre code si çà ne suffit pas.
    - W
    Architectures Post-Modernes

  3. #3
    Membre du Club Avatar de Lujeni
    Inscrit en
    novembre 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 52
    Points : 67
    Points
    67

    Par défaut

    Proposition sur le sujet : Pourquoi ne pas essayer mechanize qui permet d'interagir avec un site web en *simulant* un navigateur ?

  4. #4
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Je suis en python 3.2, mechanize n'est pas compatible avec la version 3. Pour le reste, je vais regarder. Je n'ai pas encore retravailler dessus. Mais nous sommes d'accord que la logique veut, que je établis une connexion sur le site, que je récupère tous les cookies et que je l'insère dans le header pour refaire une connexion. Est-ce bien cela?

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 8
    Points : 10
    Points
    10

    Par défaut

    Pour faire ça j'utilise la bibli requests sous python 3.2 http://docs.python-requests.org/en/latest/ que j'ai découverte il y a quelques jours et avec elle tu devrais arriver à tes fins.

    Si j'ai bien compris elle ne fait que simplifier l'utilisation d'urllib, donc ce qui est fait avec cette bibli peut aussi être fait sans elle.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import requests
     
    headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1'
                ,'Accept-Language' : 'fr-FR,fr;q=0.9,en;q=0.8'
                ,'Accept' : 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1'
                ,'Connection' : 'Keep-Alive'
    }
     
    request = requests.session()  #active la sauvegarde de la session entre les requêtes
    response = request.get("http://www.google.fr", headers = headers)
    print(response.text)
    pour activer l'authentification je pense que ce n'est pas plus compliqué (je ne l''ai jamais fait) mais sur la première ligne de la doc je pense qu'il y a l'exemple qui convient.

  6. #6
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Je suis retourné sur ce programme enfin. Malheureusement je suis en Python3.3 maintenant
    Je n'arrive toujours pas avec ces cookies. Voici mon code

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import urllib.request, http.cookiejar, urllib.parse
     
    args = urllib.parse.urlencode({'email': email, 'password': password }).encode('utf-8')
    jar = http.cookiejar.CookieJar()
    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))
     
    t = opener.open('http://www.site.com/login.php', args)
    d = t.read().decode('utf-8')
    h = t.getheaders()
    print(h)
    Dans h pourtant j'ai bien des champs Set-Cookie: ....., et pourtant sur le site il me demande d'activer les Cookie.


    print(len(jar)) me renvoi 3

  7. #7
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Lorsque je me connecte avec mon navigateur Firefox, je n'ai pas les mêmes cookies que ceux que je récupère avec mon script python.

    Il n'existe pas une librairie qui me permet d'accepter les cookies et de mettre mon propre header (exemple:le type de navigateur etc..) ??

  8. #8
    Invité de passage
    Inscrit en
    novembre 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bon béh, j'ai laissé tomber mon Python3. Je code en Python2.7 en utilisant donc mechanize et c'est réglé.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •