【问题标题】:PyQt + QtWebkit behind a proxy代理背后的 PyQt + QtWebkit
【发布时间】:2010-08-09 21:54:25
【问题描述】:

我正在编写一个 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 代理进行了尝试,它们都抛出了相同的错误。

【问题讨论】:

  • 没有代理的 SSL 连接是否有效?
  • 我不知道,我目前的情况不允许我测试。

标签: python ssl https pyqt qtwebkit


【解决方案1】:

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

QtNetwork.QSslSocket.supportsSsl()

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

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

现在一切都很好!

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 2011-08-16
    • 2018-10-27
    • 2012-03-03
    • 2012-02-14
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多