代理背后的PyQt + QtWebkit

时间:2010-08-09 21:54:25

标签: 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

注意:当我跑...

QtNetwork.QSslSocket.supportsSsl()

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

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

proxy = QtNetwork.QNetworkProxy()
proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy)
proxy.setHostName('localhost');
proxy.setPort(1337)
QtNetwork.QNetworkProxy.setApplicationProxy(proxy);

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

编辑:我在SOCKS5和HTTP代理上尝试了它们,它们都抛出相同的错误。

1 个答案:

答案 0 :(得分:5)

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

QtNetwork.QSslSocket.supportsSsl()

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

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

现在一切都很好!