web-dev-qa-db-fra.com

Python 3 urllib ignore la vérification du certificat SSL

J'ai une configuration de serveur pour les tests, avec un certificat auto-signé, et je veux pouvoir tester vers cela.

Comment ignorer la vérification SSL dans la version Python 3 de urlopen?

Toutes les informations que j'ai trouvées à ce sujet concernent urllib2 Ou Python 2 en général.

urllib in python 3 a changé de urllib2:

Python 2, urllib2 : urllib2.urlopen(url[, data[, timeout[, cafile[, capath[, cadefault[, context]]]]])

https://docs.python.org/2/library/urllib2.html#urllib2.urlopen

Python 3 : urllib.request.urlopen(url[, data][, timeout])https://docs.python.org/3.0/library/urllib.request. html? highlight = urllib # urllib.request.urlopen

Je sais donc que cela peut être fait en Python 2 de la manière suivante. Cependant Python 3 urlopen n'a pas le paramètre de contexte).

import urllib2
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

urllib2.urlopen("https://your-test-server.local", context=ctx)

Et oui, je sais que c'est une mauvaise idée. Ceci est uniquement destiné aux tests sur un serveur privé.

Je n'ai pas pu trouver comment cela est censé être fait dans la documentation Python 3, ou dans toute autre question. Même ceux mentionnant explicitement Python 3, encore avait une solution pour urllib2/Python 2.

15
Joakim

Python 3.0 à 3.3 n'a pas de paramètre de contexte, il a été ajouté dans Python 3.4. Ainsi, vous pouvez mettre à jour votre Python vers .5 pour utiliser le contexte.

5
Muhammad Tahir