如何在 python 中禁用 http.client.HTTPSConnection 类的 ssl 验证?

Posted

技术标签:

【中文标题】如何在 python 中禁用 http.client.HTTPSConnection 类的 ssl 验证?【英文标题】:How to disable ssl verification for http.client.HTTPSConnection class in python? 【发布时间】:2018-02-21 14:12:55 【问题描述】:

HTTP PROTOCOL CLIENT的官方文档中

类 http.client.HTTPSConnection(host, port=None, key_file=None, cert_file=None, [超时, ]source_address=None, *, context=None, check_hostname=无)

HTTPConnection 的一个子类,它使用 SSL 与 安全的服务器。默认端口为 443。如果指定了上下文,则必须 是描述各种 SSL 选项的 ssl.SSLContext 实例。

是否有任何选项可以禁用 ssl 验证,如 python requests library as verify=fasle

由于某些原因,我不能使用 HTTPConnection 类,这将是一个直接的解决方案。我必须使用 HTTPSConnection 并使用

HTTPConnection.putrequest()

发送请求而无需 ssl 验证。

【问题讨论】:

【参考方案1】:

在创建 https 连接时,请确保您按如下方式传递上下文参数

import http.client
import ssl

conn = http.client.HTTPSConnection(
    HOSTNAME,
    context = ssl._create_unverified_context()
)

【讨论】:

urllib.request.urlopen(HOSTNAME, context = ssl._create_unverified_context()) 也是如此,因为 Python 3.4.3 中的 urllib (docs.python.org/3.7/library/…)

以上是关于如何在 python 中禁用 http.client.HTTPSConnection 类的 ssl 验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中使用 Selenium 在 Firefox 中禁用 Flash?

你如何在python的机械化中禁用javascript?

如何在python的请求中禁用代理socks5?

如何在 python 网络服务器中禁用反向 dns 查找?

如何在 python telnetlib 中禁用 telnet echo?

如何在 selenium webdriver(python)中禁用 chrome 的“保存密码”弹出窗口