Как установить User-Agent для QNetworkRequest в PyQtWebkit? - PullRequest
6 голосов
/ 15 марта 2011

Я пытаюсь установить заголовок «User-Agent» в моем маленьком webkit-браузере, но я не получил.

Этот кусок кода:

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 ]

6 голосов
/ 16 марта 2011

QWebView переопределяет поле QNetworkRequest и устанавливает заголовок User-Agent, соответствующий версии WebKit, которую вы используете. Чтобы изменить это поведение по умолчанию, вы должны унаследовать от QWebPage , переопределить QWebPage.userAgentForUrl и установить страницу для ваших экземпляров QWebView на экземпляр вашего нового типа QWebPage, используя QWebView.setPage .

4 голосов
/ 24 октября 2011

Хорошо, теперь я понял:

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"

(это пример)

Благодаря http://www.riverbankcomputing.com/pipermail/pyqt/2011-May/029826.html и http://pastebin.com/m1b350244

...