2016-04-13 25 views
4

Kendi kendine imzalı bir sertifikayla test etmek için bir sunucu kurulumum var ve test etmek istiyorum.Python 3 urllib SSL sertifikası doğrulamasını reddediyor

urlopen'un Python 3 sürümünde SSL doğrulamasını nasıl yok sayarsınız?

Bu konuyla ilgili bulduğum tüm bilgiler, urllib2 veya Python 2 ile ilgilidir. piton 3

urllib urllib2 değişti:

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

Bu yüzden Python 2'de aşağıdaki şekilde yapılabileceğini biliyorum. Ancak Python 3 urlopen, içerik parametresinde eksik.

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) 

Ve evet bunun kötü bir fikir olduğunu biliyorum. Bu sadece özel bir sunucu üzerinde test edilmek içindir.

Bunun Python 3 belgelerinde veya başka bir soruda nasıl yapılması gerektiğini bulamadım. Python 3'ü açıkça anlatanlar bile, yine de urllib2/Python 2 için bir çözüme sahipti.

cevap

3

Python 3.0 ila 3.3, bağlam parametresine sahip değildir, Python 3.4'e eklenmiştir. Bu nedenle, Python sürümünüzü, bağlamı kullanmak için 3.5'a güncelleyebilirsiniz.

İlgili konular