Соединение HTTPS Python

Я пытаюсь проверить, что эта цель предоставляет веб-службу https. У меня есть код для подключения через HTTP, но я не уверен, как подключиться через HTTPS. Я прочитал, что вы используете SSL, но я также прочитал, что он не поддерживает ошибки сертификата. Код, который я получил, – это документы python:

import httplib conn = httplib.HTTPConnection("www.python.org") conn.request("GET", "/index.html") r1 = conn.getresponse() print r1.status, r1.reason 

Кто-нибудь знает, как подключиться к HTTPS?

Я уже пробовал HTTPSConenction, но он отвечает кодом ошибки, утверждая, что httplib не имеет атрибута HTTPSConnection. У меня также нет socket.ssl.

Я установил Python 2.6.4, и я не думаю, что в него была включена поддержка SSL. Есть ли способ интегрировать этот suppot в новый python, не устанавливая его снова.

Я установил OpenSSL и pyOpenSsl, и я попробовал приведенный ниже код из одного из ответов:

 import urllib2 from OpenSSL import SSL try: response = urllib2.urlopen('https://example.com') print 'response headers: "%s"' % response.info() except IOError, e: if hasattr(e, 'code'): # HTTPError print 'http error code: ', e.code elif hasattr(e, 'reason'): # URLError print "can't connect, reason: ", e.reason else: raise 

У меня есть ошибка:

  Traceback (most recent call last): File "<stdin>", line 2, in <module> File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib.py", line 87, in urlopen return opener.open(url) File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib.py", line 203, in open return self.open_unknown(fullurl, data) File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib.py", line 215, in open_unknown raise IOError, ('url error', 'unknown url type', type) IOError: [Errno url error] unknown url type: 'https' 

Кто-нибудь знает, как заставить это работать?

 -- UPDATE 

Я выяснил, в чем проблема: версия Python, которую я использовал, не поддерживала SSL. Я нашел это решение в настоящее время по адресу: http://www.webtop.com.au/compiling-python-with-ssl-support .

Теперь код будет работать после этого решения, что очень хорошо. Когда я импортирую ssl и HTTPSConnection, я знаю, что не получаю ошибку.

Спасибо за помощь всем.

8 Solutions collect form web for “Соединение HTTPS Python”

http://docs.python.org/library/httplib.html :

Примечание. Поддержка HTTPS доступна только в том случае, если модуль сокета был скомпилирован с поддержкой SSL.

 #!/usr/bin/env python import httplib c = httplib.HTTPSConnection("ccc.de") c.request("GET", "/") response = c.getresponse() print response.status, response.reason data = response.read() print data # => # 200 OK # <!DOCTYPE html .... 

Чтобы проверить, включен ли SSL, попробуйте:

 >>> import socket >>> socket.ssl <function ssl at 0x4038b0> 

Чтобы проверить поддержку ssl в Python 2.6+ :

 try: import ssl except ImportError: print "error: no ssl support" 

Для подключения через https :

 import urllib2 try: response = urllib2.urlopen('https://example.com') print 'response headers: "%s"' % response.info() except IOError, e: if hasattr(e, 'code'): # HTTPError print 'http error code: ', e.code elif hasattr(e, 'reason'): # URLError print "can't connect, reason: ", e.reason else: raise 

с помощью

 class httplib.HTTPSConnection 

http://docs.python.org/library/httplib.html#httplib.HTTPSConnection

Если используется httplib.HTTPSConnection:

Пожалуйста, взгляните на: Изменено в версии 2.7.9:

Этот класс теперь выполняет все необходимые проверки сертификата и имени хоста по умолчанию. Чтобы вернуться к предыдущему, непроверенному, поведение ssl._create_unverified_context () может быть передано параметру контекста. Вы можете использовать:

 if hasattr(ssl, '_create_unverified_context'): ssl._create_default_https_context = ssl._create_unverified_context 
 import requests r = requests.get("https://stackoverflow.com") data = r.content # Content of response print r.status_code # Status code of response print data 

Предполагая поддержку SSL для модуля socket .

 connection1 = httplib.HTTPSConnection('www.somesecuresite.com') 

Почему вы не попробовали httplib.HTTPSConnection? Он не выполняет проверку SSL, но это не требуется для подключения через https. Ваш код отлично работает с подключением https:

 >>> import httplib >>> conn = httplib.HTTPSConnection("mail.google.com") >>> conn.request("GET", "/") >>> r1 = conn.getresponse() >>> print r1.status, r1.reason 200 OK 

У меня был код, который не HTTPConnection (MOVED_PERMANENTLY error) с HTTPConnection (MOVED_PERMANENTLY error) , но как только я переключился на HTTPS он работал отлично, без каких-либо других изменений. Это очень простое решение!

  • Как импортировать _ssl в python 2.7.6?
  • Python + LDAP + SSL
  • Обход SSL, когда я использую SUDS для использования веб-службы
  • Ошибка Python Urllib2 SSL
  • Проблема Python ssl с многопроцессорной обработкой
  • Вопрос Django и SSL
  • Tweepy SSLError
  • request.exceptions.SSLError: _ssl.c: 504: EOF произошел с нарушением протокола
  • python foursquare - сертификат SSL3 не подтвержден
  • Подключение к FTP TLS 1.2 Server с ftplib
  • Ошибка авторизации сбоев SSLv3 с urllib2
  • Python - лучший язык программирования в мире.