我正在尝试使用 Python 2.7 mechanize
通过以下代码登录到 Mint.com
:
import mechanize
br = mechanize.Browser()
br.open("https://wwws.mint.com/login.event")
这在 OSX 上工作得很好,但它在 debian 上挂起。这个问题似乎与 ssl 有关;追溯结束于
File "/usr/lib/python2.7/ssl.py", line 305, in do_handshake
self._sslobj.do_handshake()
编辑:
该问题在使用 urllib2
的 Debian 上仍然存在。正如评论中所建议的那样,这个问题似乎实际上与 ssl 相关。为什么这会是 Debian 而不是 OSX 上的问题?
最佳答案
所以在 Fedora 上一切正常:
[bharrington@leviathan ~]$ python
Python 2.7.5 (default, Aug 22 2013, 09:31:58)
[GCC 4.8.1 20130603 (Red Hat 4.8.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open("https://wwws.mint.com/login.event")
<response_seek_wrapper at 0x29b6440 whose wrapped object = <closeable_response at 0x29b6320 whose fp = <socket._fileobject object at 0x298d150>>>
>>> br.title()
'Mint > Start Here'
>>>
这让我想知道正在使用的 SSL/OpenSSL 库。只是为了测试它,您可以从命令行运行吗:
$ openssl s_client -connect wwws.mint.com:443
您应该看到显示的 mint SSL 证书,以及完整的证书链验证,以及最后一行:“Verify return code: 0 (ok)”
虽然我高度直接怀疑这是一个 SSL 问题,但我认为值得检查一下。此外,验证 mechanize 的版本。 Debian 以使用稳定版本的代码(不是新版本)而著称。我用 mechanize 验证的版本是 0.2.5
关于Python ssl 登录卡在 Debian 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17505054/