python - 代理背后的 PyQt + QtWebkit

标签 python ssl https pyqt qtwebkit

我正在编写 PyQt(功能强大的 Qt 库的 Python 绑定(bind))应用程序,我的应用程序的一小部分需要 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 代理上试过了,它们都抛出了同样的错误。

最佳答案

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

QtNetwork.QSslSocket.supportsSsl()

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

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

现在一切正常!

关于python - 代理背后的 PyQt + QtWebkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3444507/

相关文章:

python - 如何解决AttributeError : module 'tensorflow._api.v2.distribute' has no attribute 'TPUStrategy'

python - Unicode解码错误: 'charmap' codec can't decode byte 0x98 in position 7736: character maps to <undefined>

c# - 仅允许 TLS 1.0 后仍然可以进行 TLS 1.2 握手

c++ - SSL_set_tlsext_host_name 崩溃

https - 使用 Lua 获取 HTTPS 页面内容

python - Python 中的网站压力测试 - Django

c++ - 在 C++ 中为 OpenSSL 中的 SSL_read 设置连接超时

java - Android HTTPS 客户端不从套接字读取数据

c# - 在 SSL 中使用 IIS Express 开发证书时无法登录应用程序

python - Django:如何在数据库中存储日期列表和某人当天听的歌曲?