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 :

acces a une page HTTPS avec urllib [Python 2.X]


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Par défaut acces a une page HTTPS avec urllib
    Bonjour,

    Je voudrais accéder (via python) a une page en HTTPS.

    Pour une page en HTTP, j'aurai fait de la manière suivante:
    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
    import urllib2
     
    #
    userAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    print "userAgent:", userAgent
     
    #
    url = "http://www.developpez.com"
    ## url = "https://wiki.python.org"
    print "url:", url
     
    #
    headers = { "User-Agent" : userAgent }
    myRequest = urllib2.Request(url, data=None, headers=headers)
     
    #
    try: 
        response = urllib2.urlopen(myRequest)  
        print "response.code, response.msg: %s, %s"%(response.code, response.msg)
    except IOError, e: 
        if hasattr(e, 'code'): # HTTPError 
            print 'http error code: ', e.code 
        elif hasattr(e, 'reason'): # URLError 
            print "can't connect, reason: ", e.reason 
        else: 
            raise
    ce qui me donne la réponse suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    userAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    url: http://www.developpez.com
    response.code, response.msg: 200, OK
    Lorsque je change l'url pour une autre en HTTPS, j'obtiens le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    userAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    url: https://wiki.python.org
    can't connect, reason:  [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
    Après un peu de recherche sur le net et dans la doc d'urllib2,
    je crois comprendre que ce qu'il manque, c'est le paramétrage de l'opener pour qu'il gère la connexion SSL.
    Je fais l'essai suivant:
    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
    import urllib2
    import ssl
     
    #
    userAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    print "userAgent:", userAgent
     
    #
    ## url = "http://www.developpez.com"
    url = "https://wiki.python.org"
    print "url:", url
     
    #
    headers = { "User-Agent" : userAgent }
    myRequest = urllib2.Request(url, data=None, headers=headers)
     
    # creation d'un opener configure pour une connexion SSL
    # ???
    context = ssl.create_default_context()
    myHTTPSHandler = urllib2.HTTPSHandler(context=context)
    myOpener = urllib2.build_opener(myHTTPSHandler)
    urllib2.install_opener(myOpener)
     
    #
    try: 
        response = urllib2.urlopen(myRequest)  
        print "response.code, response.msg: %s, %s"%(response.code, response.msg)
    except IOError, e: 
        if hasattr(e, 'code'): # HTTPError 
            print 'http error code: ', e.code 
        elif hasattr(e, 'reason'): # URLError 
            print "can't connect, reason: ", e.reason 
        else: 
            raise
    et j'obtiens le même résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    userAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    url: https://wiki.python.org
    can't connect, reason:  [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)


    Si quelqu'un pouvait m’éclairer sur ce que je fais mal, je lui en serai grandement reconnaissant.
    merci par avance.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    avec le tout premier code que tu donnes et en remplaçant l'url par https://wiki.python.org j'obtiens un OK perso.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Je confirme, le premier code répond bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    userAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    url: http://www.developpez.com
    response.code, response.msg: 200, OK
    ....
    userAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    url: https://wiki.python.org
    response.code, response.msg: 200, OK

  4. #4
    Membre expérimenté Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Par défaut

    Je confirme. je pense que tu peux te lancer maintenant !

  5. #5
    Membre confirmé Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Par défaut
    c'est une bonne nouvelle que ça marche chez vous.

    pouvez-vous s'il vous plait lancer le code suivant:
    c'est juste pour voir si ça me donne des pistes.
    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
    36
    37
    38
    39
    40
    import urllib2
    import ssl
    import sys, platform
     
    #
    print "platform.system(), platform.release(), platform.version():", platform.system(), platform.release(), platform.version()
    print "sys.version:", sys.version
    print "ssl._OPENSSL_API_VERSION:", ssl._OPENSSL_API_VERSION
     
    #
    userAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0"
    print "userAgent:", userAgent
     
    #
    ## url = "http://www.developpez.com"
    url = "https://wiki.python.org"
    print "url:", url
     
    #
    headers = { "User-Agent" : userAgent }
    myRequest = urllib2.Request(url, data=None, headers=headers)
     
    # creation d'un opener configure pour une connexion SSL
    # ???
    ## context = ssl.create_default_context()
    ## myHTTPSHandler = urllib2.HTTPSHandler(context=context)
    ## myOpener = urllib2.build_opener(myHTTPSHandler)
    ## urllib2.install_opener(myOpener)
     
    #
    try: 
        response = urllib2.urlopen(myRequest)  
        print "response.code, response.msg: %s, %s"%(response.code, response.msg)
    except IOError, e: 
        if hasattr(e, 'code'): # HTTPError 
            print 'http error code: ', e.code 
        elif hasattr(e, 'reason'): # URLError 
            print "can't connect, reason: ", e.reason 
        else: 
            raise
    ça me donne le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    platform.system(), platform.release(), platform.version(): Windows XP 5.1.2600
    sys.version: 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)]
    ssl._OPENSSL_API_VERSION: (1, 0, 1, 10, 15)
    userAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    url: https://wiki.python.org
    can't connect, reason:  [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
    Est-ce que vous avez une configuration particuliere de SSL ?

    merci.

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par KINENVEU Voir le message
    c'est une bonne nouvelle que ça marche chez vous.
    n'est-ce pas

    pouvez-vous s'il vous plait lancer le code suivant (...)
    c'est le même code que celui que tu as posté plus haut, avec quelques print en plus, donc même résultat (testé) ça me retourne bien un 200 OK

    Est-ce que vous avez une configuration particuliere de SSL ?
    non ssl._OPENSSL_API_VERSION retourne 1.0.2.1.15 chez moi

    • est-ce que quand tu vas sur https://wiki.python.org avec ton navigateurs tu as un avertissement concernant le certificat ?
    • est-ce que ça pourrait être un proxy/antivirus/firewall/autre sur ta machine qui filtre ?
    • quelle est ta version de python et d'urllib2 ? (vu sur l'output précédent, python 2.7.9 sur Windows XP, SSL 1.0.1.10.15)


    Edit: trouvé sur le net, il semble que ça corresponde au problème que tu décris : https://github.com/mtschirs/quizduel...mment-67207159

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

Discussions similaires

  1. Accès impossible aux pages https avec IE
    Par quadra38 dans le forum Windows 7
    Réponses: 2
    Dernier message: 14/12/2014, 18h45
  2. Accès à une page PHP avec HTTPS
    Par OodamienoO dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 20/05/2011, 14h55
  3. Accès d'une page php avec une iframe
    Par gianni7033 dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2009, 17h00
  4. Empêcher l'accès direct à une page avec les sessions
    Par Loupinou dans le forum Langage
    Réponses: 4
    Dernier message: 18/07/2009, 18h25
  5. Accés a une page HTTPS
    Par vins25 dans le forum Apache
    Réponses: 4
    Dernier message: 02/02/2006, 13h19

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