PyQt WebEngine 设置 http headers

PyQt WebEngine set http headers

我想将我的应用程序从 Qt WebKit 移植到 Qt WebEngine。在 Qt Webkit 中,我可以使用 QNetworkRequest 设置 http headers,但在 Qt WebEngine 中,文档说:

Qt WebEngine has its own HTTP implementation and cannot go through a QNetworkAccessManager

我使用 PyQt5 和 Qt5.8。

我找不到如何在 Qt WebEngine 中设置 http headers。

----------------更新----------------

终于成功了!谢谢! @Trilarion:

定义我的 QWebEngineUrlRequestInterceptor class

class NWUrlRequestInterceptor(QWebEngineUrlRequestInterceptor):
    def __init__(self, headers):
        super(QWebEngineUrlRequestInterceptor, self).__init__()
        self.headers = headers

    def set_headers(self,headers):
        self.headers = headers

    def interceptRequest(self, info):
        print info, self.headers
        for header, value in self.headers:
            info.setHttpHeader(header, value);

在我的浏览器中使用:

self.request_interceptor = NWUrlRequestInterceptor(self.headers)
self.webpage.profile().setRequestInterceptor(self.request_interceptor)

你应该实现一个 QWebEngineUrlRequestInterceptor 在你得到一个 QWebEngineUrlRequestInfo 的 interceptRequest 方法中,它可以通过 setHttpHeader.

设置一个 http header

通过QWebEngineView.page().profile().setRequestInterceptor设置请求拦截器。

灵感来自 。