QWebEngineView和忽略证书错误

2024-04-26 00:59:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力理解它是如何工作的,并且正在努力找出如何使用它。我能找到的唯一例子不是Python,显然我不太擅长翻译

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

QWebEngineCertificateError.ignoreCertificateError()

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

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

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

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

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

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_())

错误的屏幕截图:

screenshot of the error


Tags: fromimportapp错误sys浏览器pyqt5例子
1条回答
网友
1楼 · 发布于 2024-04-26 00:59:49

您必须重写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)
```

相关问题 更多 >