Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2014 11:05:09

catxp
Зарегистрирован: 2014-01-28
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib2 + SSLv3

Здравствуйте! Прошу помощи. Использую библиотеку 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”})
……

Офлайн

#2 Янв. 28, 2014 15:33:41

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

urllib2 + SSLv3

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())

Офлайн

#3 Янв. 28, 2014 15:34:44

kise97
Зарегистрирован: 2012-05-31
Сообщения: 83
Репутация: +  4  -
Профиль  

urllib2 + SSLv3

А вообще, используйте pyurl, request, grablib.

Офлайн

#4 Янв. 28, 2014 19:05:11

catxp
Зарегистрирован: 2014-01-28
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib2 + SSLv3

Спасибо! Надеюсь правильно применил.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version