如何在PyQtWebkit中为QNetworkRequest设置User-Agent?

6 投票
2 回答
4593 浏览
提问于 2025-04-16 13:46

我正在尝试在我的小型webkit浏览器中设置“User-Agent”这个头信息,但我没有成功。

这段代码:

self.web = QtWebKit.QWebView(self)
...
self.request = QNetworkRequest() 
self.request.setUrl(url) 
self.request.setRawHeader("User-Agent", QtCore.QByteArray ("TestUserAgent")) 
self.request.setRawHeader("Accept-Language", QtCore.QByteArray ("en ,*")) 
self.web.load(self.request) 

在这个例子中,“Accept-Language”设置得很好,但“User-Agent”总是默认值。请告诉我,为什么会这样?我该怎么设置“User-Agent”?

谢谢你的帮助。

2 个回答

4

好的,我现在明白了:

class Browser(QtWebKit.QWebPage):
    def __init__(self):
        super(QtWebKit.QWebPage, self).__init__()

    def userAgentForUrl(self, url):
        return "Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"

(这是一个例子)

感谢 这个链接这个链接

6

QWebView会自动设置一个用户代理(User-Agent),这个代理是根据你使用的WebKit版本来决定的。如果你想改变这个默认的设置,你需要从QWebPage这个类继承,重新实现QWebPage.userAgentForUrl这个方法。然后,你需要用QWebView.setPage把你的QWebView实例的页面设置为你新创建的QWebPage类型的实例。

撰写回答