Форум сайта python.su
0
Здравствуйте! Прошу помощи. Использую библиотеку 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”})
……
Офлайн
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())
Офлайн
0
Спасибо! Надеюсь правильно применил.
Офлайн