代理背后的PyQt + QtWebkit

Joe*_*gen 5 python ssl https pyqt qtwebkit

我正在编写一个PyQt(全功能Qt库的Python绑定)应用程序,我的应用程序的一小部分需要一个Web浏览器(提示,OAuth).所以我开始使用QtWebkit,这很棒.唯一的障碍是我想允许代理后面的用户使用我的应用程序.

我已经阅读了QtNetwork包中的QNetworkProxy类,并认为它应该可以解决问题.唯一的问题是当我创建和应用代理时,它在HTTP上运行得很好,但是当我向它传递HTTPS(SSL)URL时,它会给我以下错误:

QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string
Run Code Online (Sandbox Code Playgroud)

注意:当我跑...

QtNetwork.QSslSocket.supportsSsl()
Run Code Online (Sandbox Code Playgroud)

..它返回false.这就证明了我的问题.

这是我的主要代码(它在我的QApplication创建之前):

proxy = QtNetwork.QNetworkProxy()
proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
proxy.setHostName('localhost');
proxy.setPort(1337)
QtNetwork.QNetworkProxy.setApplicationProxy(proxy);
Run Code Online (Sandbox Code Playgroud)

我从这里得到了代码,但是这个例子是用C++编写的,而不是Python,所以我不确定我是否正确翻译了它.这可能是问题所在.

编辑:我已经尝试过SOCKS5和HTTP代理,他们都抛出相同的错误.

Joe*_*gen 5

我正在使用Python 2.6和PyQt 4.7.4开发Windows XP(32位).是......的原因

QtNetwork.QSslSocket.supportsSsl()
Run Code Online (Sandbox Code Playgroud)

返回false是因为我没有在我的系统中安装OpenSSL二进制文件.

为了解决这个问题,我去了这里下载二进制文件.在他们正确安装之前,我还必须从Microsoft 获得Visual C++ 2008 Redistributables安装.

现在一切都很好!