繁体   English   中英

QWebEngineView 并忽略证书错误

[英]QWebEngineView and ignoring cert errors

我试图了解它是如何工作的,并且正在努力弄清楚如何使用它。 我能找到的唯一例子不在 Python 中,显然我不擅长翻译。

我一直在研究大多数这些模块的 help() 结果,但仍然无法弄清楚它们是如何工作的。 现在,如果我没看错,这应该可以用来在加载页面时忽略证书错误。

QWebEngineCertificateError.ignoreCertificateError()

但是当我尝试运行它时,我收到以下错误。 我很确定我用错了,但我找不到一个很好的例子来说明它应该如何工作。

TypeError: ignoreCertificateError(self): first argument of unbound method must have type 'QWebEngineCertificateError'

在普通浏览器中,当您遇到像"ERR_CERT_AUTHORITY_INVALID"这样的证书错误时,您可以选择继续。 该选项似乎不是 QWebEngineView 的默认功能。 我想要做的是实现它或让它自动忽略错误并继续。

有没有人知道如何做到这一点,你愿意给我一个正确方向的指针吗? 我难住了。 我试图通过将 Chrome 或边缘浏览器嵌入到应用程序中来解决这个问题,但它不会让我在浏览器中输入,尽管我可以点击一些东西并右键单击。

这是一个示例代码打开一个触发相同错误的网站。 它不是我需要加载的,而是触发相同错误的站点。

from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication
import sys

app = QApplication(sys.argv)
webview = QWebEngineView()
webview.load(QUrl("https://www.us.army.mil/"))
webview.show()
sys.exit(app.exec_())

错误截图:

错误截图

你必须重写 QWebEnginePage 的 certificateError() 方法:

import sys


from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication


from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineView


class WebEnginePage(QWebEnginePage):
    def certificateError(self, error):
        # If you want to ignore the certificates of certain pages
        # then do something like
        # if error.url() == QUrl("https://www.us.army.mil/"):
        #     error.ignoreCertificateError()
        #     return True
        # return super().certificateError(error)

        error.ignoreCertificateError()
        return True


def main(args):
    app = QApplication(args)
    webview = QWebEngineView()
    page = WebEnginePage()
    webview.setPage(page)
    webview.load(QUrl("https://www.us.army.mil/"))
    webview.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main(sys.argv)
```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM