Найти - Пользователи
Полная версия: urllib2 + SSLv3
Начало » Python для новичков » urllib2 + SSLv3
1
catxp
Здравствуйте! Прошу помощи. Использую библиотеку urllib2, чтобы получить нужную информацию из xml файла по ссылке https/……. На сайте используется sslv3. Насколько я понял, python по дефолту использует sslv2. Есть проблемы при запросе. Как задать, чтобы при запросе использовался sslv3? Ниже кусок кода. Версия python 2.7.

……
import urllib2
…….
xml_export_config = {'xml_url': 'https/
def get_xml_data(config):
request = urllib2.Request(config, headers={“Accept” : “application/xml”})
……
kise97
http://bugs.python.org/issue11220

This works for 2.x, I'm closing this issue:
# custom HTTPS opener, banner's oracle 10g server supports SSLv3 only
import httplib, ssl, urllib2, socket
class HTTPSConnectionV3(httplib.HTTPSConnection):
    def __init__(self, *args, **kwargs):
        httplib.HTTPSConnection.__init__(self, *args, **kwargs)
        
    def connect(self):
        sock = socket.create_connection((self.host, self.port), self.timeout)
        if self._tunnel_host:
            self.sock = sock
            self._tunnel()
        try:
            self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_SSLv3)
        except ssl.SSLError, e:
            print("Trying SSLv3.")
            self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, ssl_version=ssl.PROTOCOL_SSLv23)
            
class HTTPSHandlerV3(urllib2.HTTPSHandler):
    def https_open(self, req):
        return self.do_open(HTTPSConnectionV3, req)
# install opener
urllib2.install_opener(urllib2.build_opener(HTTPSHandlerV3()))
if __name__ == "__main__":
    r = urllib2.urlopen("https://ui2web1.apps.uillinois.edu/BANPROD1/bwskfcls.P_GetCrse")
    print(r.read())
kise97
А вообще, используйте pyurl, request, grablib.
catxp
Спасибо! Надеюсь правильно применил.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB