Pyside的QWebEngineProfile类

devtools/2025/2/2 17:58:50/

QWebEngineProfile 是 PySide/Qt 中用于管理浏览器引擎(WebEngine)配置的类,属于 QtWebEngineCore 模块。它主要用于控制网页的全局行为,例如缓存、Cookie、持久化存储、用户代理(User-Agent)、代理设置等。每个 QWebEngineProfile 可以关联多个 QWebEnginePageQWebEngineView,实现不同配置的页面隔离。


核心功能

  1. 存储管理
    控制浏览器数据的存储路径(缓存、Cookies、本地存储等)。
  2. 用户代理(User-Agent)
    自定义浏览器的 User-Agent 字符串。
  3. HTTP 头与请求拦截
    修改 HTTP 请求头或拦截请求。
  4. 权限控制
    管理地理位置、摄像头/麦克风访问等权限。
  5. Cookie 策略
    管理 Cookie 的存储和过滤。

基本用法示例

1. 创建自定义 Profile
from PySide6.QtWebEngineCore import QWebEngineProfile, QWebEnginePage
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtCore import QUrl# 创建一个自定义 Profile
custom_profile = QWebEngineProfile("MyCustomProfile")# 设置存储路径(需在页面加载前设置)
custom_profile.setPersistentStoragePath("./web_data")
custom_profile.setCachePath("./web_cache")# 创建页面并关联 Profile
web_page = QWebEnginePage(custom_profile)
web_view = QWebEngineView()
web_view.setPage(web_page)# 加载网页
web_view.load(QUrl("https://www.example.com"))
web_view.show()

2. 自定义 User-Agent
# 修改 User-Agent
custom_profile.setHttpUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) MyCustomBrowser/1.0"
)

3. 管理 Cookies
# 获取 Cookie 存储对象
cookie_store = custom_profile.cookieStore()# 删除所有 Cookies
cookie_store.deleteAllCookies()# 监听 Cookie 变化
cookie_store.cookieAdded.connect(lambda cookie: print("Cookie added:", cookie.name()))

4. 拦截 HTTP 请求
from PySide6.QtWebEngineCore import QWebEngineUrlRequestInterceptorclass RequestInterceptor(QWebEngineUrlRequestInterceptor):def interceptRequest(self, info):# 修改请求头info.setHttpHeader(b"X-Custom-Header", b"MyValue")# 拦截特定 URLif b"blocked-site.com" in info.requestUrl().toString().encode():info.block(True)# 绑定拦截器到 Profile
interceptor = RequestInterceptor()
custom_profile.setUrlRequestInterceptor(interceptor)

5. 权限管理
def handle_feature_permission(page, origin, feature):if feature == QWebEnginePage.PermissionFeature.Geolocation:# 允许地理位置权限page.setFeaturePermission(origin, feature, QWebEnginePage.PermissionGrantedByUser)else:# 拒绝其他权限page.setFeaturePermission(origin, feature, QWebEnginePage.PermissionDeniedByUser)# 绑定权限请求信号
web_page.featurePermissionRequested.connect(handle_feature_permission)

默认 Profile

Qt 提供了一个默认的全局 Profile,可通过 defaultProfile() 访问:

default_profile = QWebEngineProfile.defaultProfile()

注意事项

  • 多 Profile 隔离
    不同 Profile 之间的数据(如 Cookies、缓存)是隔离的。
  • 生命周期管理
    QWebEngineProfile 必须在应用的生命周期内保持有效(避免提前释放)。
  • 路径权限
    确保设置的存储路径有读写权限。

通过灵活配置 QWebEngineProfile,可以实现高度定制的浏览器行为,适用于多账户登录、隐私模式等场景。


http://www.ppmy.cn/devtools/155502.html

相关文章

基于物联网的智能环境监测系统(论文+源码)

1系统的功能及方案设计 本课题为基于物联网的智能环境监测系统的设计与实现,整个系统采用stm32f103单片机作为主控制器,通过DHT11传感器实现智能环境监测系统温度和湿度的检测,通过MQ传感器实现CO2浓度检测,通过光照传感器实现光照…

工业相机常用词语解释

线阵相机和面阵相机: 线阵相机,是采用线阵图像传感器的相机。线阵图像传感器以CCD为主, 一行的数据可以到几K甚至几十K,但是高度只有几个像素,行频很高,可以到每秒几万行,适合做非常高精度、宽…

使用Pygame制作“打砖块”游戏

1. 前言 打砖块(Breakout / Arkanoid) 是一款经典街机游戏,玩家控制一个可左右移动的挡板,接住并反弹球,击碎屏幕上方的砖块。随着砖块被击碎,不仅能获得分数,还可以体验到不断加速或复杂的反弹…

C++ 写一个简单的加减法计算器

************* C topic:结构 ************* Structure is a very intersting issue. I really dont like concepts as it is boring. I would like to cases instead. If I want to learn something, donot hesitate to make shits. Like building a house. Wh…

http跳转https

1、第一种:不好使 在nginx的配置中,在https的server站点添加如下头部: add_header Strict-Transport-Security “max-age63072000; includeSubdomains; preload”; 这样当第一次以https方式访问我的网站,nginx则会告知客户端的浏览…

详解u3d之AssetBundle

一.AssetBundle的概念 “AssetBundle”可以指两种不同但相关的东西。 1.1 AssetBundle指的是u3d在磁盘上生成的存放资源的目录 目录包含两种类型文件(下文简称AB包): 一个序列化文件,其中包含分解为各个对象并写入此单个文件的资源。资源文件&#x…

HTML 标题

HTML 标题 引言 HTML(超文本标记语言)是构建网页的基础,而标题则是网页中不可或缺的元素。标题不仅能够帮助用户快速了解网页内容,还能够对搜索引擎优化(SEO)产生重要影响。本文将详细介绍HTML标题的用法…

图书管理系统 Axios 源码__新增图书

目录 功能介绍 核心代码解析 源码:新增图书功能 总结 本项目基于 HTML、Bootstrap、JavaScript 和 Axios 开发,实现了图书的增删改查功能。以下是新增图书的功能实现,适合前端开发学习和项目实践。 功能介绍 用户可以通过 模态框&#xf…