【问题标题】:How to specify user agent in QWebEngineView如何在 QWebEngineView 中指定用户代理
【发布时间】:2020-01-09 17:51:07
【问题描述】:

我正在使用 PyQt5 自动化网页上的功能。 PyQt5 中显示的页面与 Chrome 中显示的页面大不相同。如果我要更改用户代理,我可以模仿 Chrome 的功能吗?如果是这样,我将如何在以下示例中更改用户代理:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import *

app = QApplication(sys.argv)
web = QWebEngineView()

profile = QWebEngineProfile()
profile.setHttpUserAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36")

# How do i set the profile in the web ???

web.load(QUrl("https://stackoverflow.com"))
web.show()
web.loadFinished.connect(on_load_finished)

sys.exit(app.exec_())

【问题讨论】:

标签: python pyqt pyqt5 user-agent qwebengineview


【解决方案1】:

根据the docs

User-Agent 请求标头包含一个特征字符串, 允许网络协议对等方识别应用程序类型, 操作系统、软件供应商或软件版本 请求软件用户代理。

有些网页会使用用户代理来为您的浏览器显示个性化的内容,例如,您可以通过用户代理信息推断它是否支持 AJAX。

如果我要更改用户代理,我可以模仿 Chrome 的功能吗?

可能是的,虽然 Google Chrome 和 Qt Webengine 是基于 Chromium 的,但每个开发组都创建了一个可以具有不同功能的新层,例如,QtWebEngine 抑制了新版本中添加的许多 Chromium 功能。

我将如何更改用户代理?

无需创建新的 QWebEngineProfile,因为您可以使用页面的配置文件:

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

if __name__ == "__main__":

    app = QApplication(sys.argv)
    web = QWebEngineView()

    print(web.page().profile().httpUserAgent())

    web.page().profile().setHttpUserAgent(
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
    )
    web.load(QUrl("https://stackoverflow.com"))
    web.show()
    web.resize(640, 480)
    sys.exit(app.exec_())

如果你想使用 QWebEngineProfile 然后创建一个新的 QWebEnginePage:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineProfile, QWebEngineView
from PyQt5.QtWidgets import QApplication

if __name__ == "__main__":

    app = QApplication(sys.argv)
    web = QWebEngineView()

    profile = QWebEngineProfile()
    profile.setHttpUserAgent(
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
    )

    page = QWebEnginePage(profile, web)
    web.setPage(page)
    web.load(QUrl("https://stackoverflow.com"))
    web.show()
    web.resize(640, 480)
    sys.exit(app.exec_())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多