Python:在机械化中打开链接时,self._sslobj.do_handshake()中出现错误

时间:2019-06-13 19:15:03

标签: python ssl mechanize

我试图重新运行大约2年前编写的代码,但现在无法正常工作。我正在使用python 3.7.1。 导致问题的代码段如下

<ButtonCarte  onPress={() => this.props.navigation.navigate('Carte') } />

这在ssl握手期间导致异常,并且仅显示[错误0]。完整的追溯如下-

import ssl
import mechanize
import operator

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context


ssl._DEFAULT_CIPHERS = ('DES-CBC3-SHA')
myBrowser = mechanize.Browser()
myBrowser.set_handle_robots(False)
myBrowser.set_handle_refresh(False)

myBrowser.open("https://uwp.puchd.ac.in/common/viewmarks.aspx")

能否请您解释一下实际存在的问题以及如何解决?

注意-请注意,Visit this link我正在打开并检查,它可能使用了过时的密码,并且在进行操作之前始终显示警告。

1 个答案:

答案 0 :(得分:0)

虽然还不清楚您将哪个版本的OpenSSL与Python一起使用,但我猜测它是OpenSSL 1.1.1,因为该版本随Anaconda Python 3.7一起提供。此版本不再支持DES-CBC3-SHA,即该密码被认为是弱密码且未在其中编译。因此,ssl._DEFAULT_CIPHERS = ('DES-CBC3-SHA')实质上将支持的密码列表设置为none,这使得TLS握手失败。

如果您需要此弱密码,则需要返回到旧版本的OpenSSL或重新编译OpenSSL和Python,并明确支持此弱密码。