все Python 3http.clientпонятие
http.client.HTTPSConnection
соединения
HTTP-соединение поверх TLS: то же, что HTTPConnection, но порт по умолчанию 443 и трафик шифруется. Настройки TLS задаются параметром context.
Синтаксис
conn = http.client.HTTPSConnection(host, port=None, *, timeout=..., context=None)
С 3.4.3 сертификат и имя хоста проверяются по умолчанию, и самоподписанный сертификат даёт ssl.SSLCertVerificationError — отключать проверку вместо добавления своего CA в ssl.create_default_context(cafile=...) опасно. Параметры key_file, cert_file и check_hostname удалены в 3.12: старый код получает TypeError, клиентский сертификат теперь грузят в context.load_cert_chain(). Как и у HTTPConnection, конструктор в сеть не ходит — рукопожатие TLS идёт при первом request().
Примеры
import http.client
import ssl
conn = http.client.HTTPSConnection('example.com', timeout=5)
print(conn.port, isinstance(conn, http.client.HTTPConnection)) # → 443 True
ctx = ssl.create_default_context()
print(ctx.verify_mode == ssl.CERT_REQUIRED, ctx.check_hostname) # → True True
conn = http.client.HTTPSConnection('example.com', context=ctx)
print(conn.sock) # → None — рукопожатие будет при первом request()
# Python 3.12+
import http.client
try:
http.client.HTTPSConnection('example.com', check_hostname=False)
except TypeError as e:
print('check_hostname' in str(e)) # → True — параметр удалён, настраивайте context
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности