【Qt5.15使用QWebEngine加载网页非常慢,直到提示timeout问题】

Qt5中QWebEngineView的使用,让桌面客户端和web端友好通信 本文结构 1、 Qt5中web开发的基本配置,工程搭建 2、 加载HTML文件 3、 Qt界面窗口调用HTML中的JavaScript函数(Qt调用js) 4、 Qt界面窗口获取HTML中Js函数的返回值 5、 Web端消息主动通知到Qt界面(js通知Qt) 6、完整源码路径 基本配置,工程搭建 (1) Qt安装时要安装web开发组件,本案例采用Qt5.9.6 vs2015开发环境 (2) 新建... 阅读详情
AI摘要

本文探讨了QWebEngine加载网页速度慢的问题,通过Wireshark抓包发现与OCSP验证和Windows系统对私有CA的信任机制有关。解决方法包括使用自签名证书、修改QT源码跳过OCSP验证,以及调整自动根证书更新设置。

QWebEngine加载网页非常慢,直到提示timeout问题

网上很多博客都说是系统默认设置了自动寻找代理,而使用代理后延迟会变得非常大,关闭系统代理设定即可。
QNetworkProxyFactory::setUseSystemConfiguration(false);
尝试了该方法,但仍然加载网页很慢,并未解决。只好继续分析了。

分析过程:

  1. 因为同一个地址,Google浏览器加载很快,而QWebEngine加载就很慢,于是想着用抓包工具wireshark具体抓包分析一下。
  2. 两者抓包数据对比一下,发现Google去加载网页时,验证证书这一步与QWebEngine完全不一样,QWebEngine会去验证OCSP,Google则不会,时间都花在验证OCSP这一步了。
  3. 想到了出问题的地址用的是GlobalSign的商业证书,目前商业证书走的都是OCSP签名,怀疑是不是因为证书是OCSP签名导致的。
  4. 于是找了一个测试地址,重新部署了一个自签名的证书,Windows系统上一测试发现加载还是很慢,不过时间已经从之前的30s缩短至15s了,只好继续抓包定位。
  5. 再次抓包发现访问网址的时候总是会去访问ctdl.windowsupdate.com网址,该网址访问超时了。
  6. 查找了下Windows官方文档,说是不太可能在网络环境以外信任私有 CA,所以会跑到ctdl.windowsupdate.com验证证书的有效性,最后通过启用关闭自动根证书更新策略,不去访问该网站,果然加载很快,大概2~4s时间。

解决方法:

方法一:

  更换证书,使用自签名证书,并且不带CRL地址或者证书签名方式不走OCSP签名,同时启用关闭自动根证书更新策略在这里插入图片描述附: https://learn.microsoft.com/zh-cn/windows-hardware/drivers/install/trusted-root-certification-authorities-certificate-store

方法二:

  修改QT源码,找到证书校验位置,跳过证书的校验,在QWebEngine加载网页之前,先使用自定义证书校验方法校验证书,具体源码修改位置如下:
  找到QWebEngine源码中的ssl_client_socket_impl.cc文件,修改VerfiyCert()函数如下代码片段:

if (ssl_config_.IsAllowedBadCert(server_cert_.get(), &cert_status) {	// 使该判断条件恒为true即可
	server_cert_verfiy_result_.Reset();
	server_cert_verfiy_result_.cert_status = cert_status;
	server_cert_verfiy_result_.verified_cert = server_cert_;
	cert_verification_result_ = OK;
	return HandleVerifyResult();
}
【QT】Qt5 QtWebEngine使用教程 它允许在 Qt 的 C++ 代码和网页中的 JavaScript 代码之间方便地交换数据和调用函数,大大增强了 Qt 应用与 Web 内容的交互能力。在 QtWebEngine 中,可以通过 QWebEnginePage 的 runJavaScript 方法来执行网页的 JavaScript 代码。QtWebEngine 从 Qt 5.6 开始成为 Qt 的一部分。在你的 Qt 项目的 .pro 文件中添加 QT += webenginewidgets webchannel。 阅读详情

相关推荐

告别30秒等待!手把手教你为Qt5.15的QWebEngine配置SSL证书,解决timeout难题

本文详细解析了Qt5.15的QWebEngine组件在加载HTTPS网页时遇到的timeout问题,特别是OCSP验证机制导致的延迟。提供了两种解决方案:生成优化型自签名证书和代码层介入证书验证流程,帮助开发者显著提升页面加载速度,告别30秒等待。

weixin_32822843的博客 356

解决QT程序QWebEngine加载网页很慢的问题

QT程序加载网页很慢的问题

weixin_43196399的博客 4400

Qt之解决加载耗时导致的界面卡顿问题

Qt之解决加载耗时导致的界面卡顿问题

github_34572149的博客 2769

Qt5.9使用QWebEngineView加载网页速度慢 ,卡顿,原因是默认开启了代理

BUG单下的留言讲明了问题发生的原因,那就是系统默认设置为自动寻找代理,而使用代理后延迟会变得非常大。

小道士写程序 3360

单细胞轨迹分析实战:基于Monocle和CytoTRACE的细胞分化潜能与状态解析

本文提供了基于Monocle和CytoTRACE的单细胞轨迹分析实战指南。通过乳腺癌数据集,详细演示了从数据准备、伪时序分析、细胞分化潜能评估到分支点功能挖掘的全流程。结合两种工具的优势,能有效解析细胞状态动态演变,为发育和疾病研究提供关键见解。

weixin_29070861的博客 476

SAP成本核算变式OKKN配置详解:从CK11N到CK24,手把手教你搞定标准成本发布

本文深入解析SAP成本核算变式OKKN的配置原理与实战应用,涵盖从CK11N到CK24的标准成本发布全流程。详细讲解数量结构控制、价值结构配置及间接费用计算规则,帮助成本会计精准掌握标准成本计算逻辑,解决BOM版本选择、工艺路线获取等常见问题,提升企业成本管理效率。

weixin_27219587的博客 284

从抓包分析到问题定位:一次完整的Qt5.15 QWebEngine网页加载Timeout排查实录

本文详细记录了Qt5.15 QWebEngine网页加载Timeout问题的完整排查过程。通过抓包分析对比Chrome与QWebEngine的行为差异,定位到OCSP验证导致的性能问题,并提供了证书策略调整、源码修改等解决方案,帮助开发者高效解决类似网络性能问题。

weixin_33290540的博客 365

链家二手房信息爬取(内附完整代码)

链家二手房信息爬取1.简介2. 爬虫思路2.1 网页分析2.2 详情页分析2.3 不同页码的爬取2.4 解决链家只显示100页数据2.5 简单的反爬与进度条显示3. 总结 1.简介   最近帮同学爬取了链家在售二手房的信息,这是本人学习爬虫以来爬取数据最多的一次,就想着写个博客记录一下。   本次爬虫是利用python+jupyter notebook实现的,用到的第三方库如下: import pandas as pd # 数据存储 import requests # 网页内容获取 import re #

qq_46256922的博客 3万+

手把手教你用Wireshark定位Qt5.15中QWebEngine的网页加载Timeout元凶

本文详细介绍了如何使用Wireshark工具定位Qt5.15中QWebEngine网页加载Timeout问题。通过对比分析Chrome与QWebEngine的TLS握手和OCSP验证流程,揭示性能瓶颈根源,并提供Windows平台特定优化方案及Qt源码级定制方法,最终实现加载时间从28.7秒优化至2.1秒。

weixin_26804345的博客 301

对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理:

故障诊断,对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理

qq_44757503的博客 6057

光模块的封装工艺有哪些?

COB封装传统的单路10Gb/s或25Gb/s速率的光模块采用SFP封装将电芯片和TO封装的光收发组件焊接到PCB板上组成光模块。但对于40G及以上速率的高速光模块,受激光器速率限制(多为25G),主要通过多通道并行实现,如40G由4×10G实现,而100G则由4×25G实现。蝶形封装:壳体通常为长方体,结构及实现功能通常比较复杂,可以内置制冷器、热沉、陶瓷基块、芯片、热敏电阻、背光监控,并且可以支持所有以上部件的键合引线。BOX封装属于蝶形封装的一种,用于多通道并行封装。

WaytoICT- Explore ICT Technology, Build Your Tech Path 3803

QWebEngineView卡顿

QWebEngineView 是 Qt 库中的一个类,可以用来显示基于 Web 技术的内容,例如 HTML 页面和网页应用程序。如果 QWebEngineView 卡顿,可能是由于以下几种原因导致的: 加载的网页内容太大或太复杂,导致渲染速度减慢。 电脑资源不足,无法满足 QWebEngineView 的运行需求。 网络状况不佳,导致网页加载速度减慢。 QWebEngineView 的使用方法不...

weixin_42576410的博客 2294

如何为 Claude Code 配置代理与网络环境

那么大概率不是软件问题,而是。因为 Claude Code 是运行在终端里的,不是浏览器。

sg_knight的专栏 3474

Qt webengine 显示web页面、前后端通信以及下载详解

Qt webengine

FlayHigherGT的博客 9083

22、嵌入式软件随机延迟生成与加密算法防护技术

本文探讨了嵌入式软件中的随机延迟生成方法与块密码软件实现的高阶掩码及洗牌技术。重点介绍了浮动均值延迟生成方法,其在8位AVR平台上的实现效率为Θ(1),显著提升了抗相关功率分析(CPA)攻击的能力,相比传统方法更安全且轻量。同时,分析了高阶掩码与洗牌技术结合的方案,通过理论建模量化其对高级差分功率分析(DPA)攻击的抵抗能力,并以AES为例展示了该方案的应用流程。最后对比了不同防护技术在安全性与开销之间的权衡,为实际应用中选择合适的安全策略提供了依据。未来可进一步优化实现效率并融合多种防护手段以应对复杂安全

fern8的博客 86

国科大学习资料--高级软件工程-复习题简答题答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题简答题答案 def fib3 n (1…n).inject([0,1]){|mem| puts mem[0]+mem[1]; [mem[1],mem[0]+mem[1]]} end =====================================================================================================================================

无名何许人的博客 1396

Qt5 中 QWebEngineView 的使用,让桌面客户端和 web 端友好通信

一、本文结构 Qt5 中 web 开发的基本配置,工程搭建。 加载 HTML 文件。 Qt 界面窗口调用 HTML 中的 JavaScript 函数(Qt 调用 js) Qt 界面窗口获取 HTML 中 Js 函数的返回值。 Web 端消息主动通知到 Qt 界面(js 通知 Qt)。 二、基本配置,工程搭建 (1)Qt 安装时要安装 web 开发组件,本案例采用 Qt5.9.6 vs2015 开发环境。 (2)新建 Qt Gui 工程要首先勾选以下三个组件 (3)qwebchannel.

布袋和尚 3200

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

解决QT使用QWebEngineView加载不出网页问题和实现qt与html网页基础通信

但将源代码发给其他人之后,发现别人可以打开,但时间略长大概需要十秒左右,怀疑是QT版本问题,我现在用的版本是QT6.6.7,此版本加载不出地图显示,但可以加载出经纬度的文字和显示框。之后重新切换QT版本至QT5.15.2之后,生成方式选择Release之后,问题解决,地图可以在一秒左右加载出来。这个代码是让qt不使用默认的代理,我测试下来,不加这句代码会稍微慢个两秒钟,也可能是偶然问题,现在不太清楚,但最好加上,避免奇奇怪怪的问题。

doudoumantang的博客 7983

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

整理Webview加载缓慢的解决方案

整理Webview加载缓慢的解决方案

jcoiwenwfkowe的博客 836

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

关于Qt 加载网页(二) QWebenginePage和QWebengineView傻傻分不清楚

书接上回,关于Qt加载网页(一)末尾提到一个createWindows用法的问题,并且提供了两个参考博文。本人在初次使用createWindows的时候产生了一个疑问,如果在函数中直接返回this,是不是就存在一个内存溢出的可能性?(如以下代码所示) 如果不在末尾return点什么东西的话,似乎无法直接在当前QWebEngineView中显示出目标url。除非你重新再新建一个QWebEngineView,这种做法有点类似与目前主流浏览器的多页面显示方案(假如你现在是电脑网页看到本博文的时候,你的浏览器应

weixin_42043127的博客 6464

Qt QWebEngine 加载网页及交互,实现C++与JS 相互调用

本篇主要介绍QT开发过程中如何利用QWebengine加载网页,通过C++与JS 相互调用,实现QT程序与HTML网页的交互。QtWebEngine 是Qt的一个子模块,它提供了一个 Web 浏览器引擎,可以轻松地将互联网上的内容嵌入到 Qt 应用程序中。Qt WebEngine Widgets Module 用于创建基于小部件的 Web 应用程序Qt WebEngine Module 用于创建基于 Qt Quick 的 Web 应用程序。

北极星的技术笔记 1万+

【双开QWebEngine程序,后一次程序加载网页很慢】

1. 第一次与第二次加载相同网页相比,第一次网页加载只花了1s左右,但第二次加载网页时,进度80%~100%期间内,明显卡顿了10多秒,如下图。3. 对两次打开程序,分别设置不同的缓存路径,再次测试,发现后一次程序加载网页的速度和第一次基本一致,但仍然会稍微慢点,如下图。设置不同的缓存路径和QWebEngine数据。提示,怀疑是因为使用了同一个缓存路径导致的。

ZTH_G的博客 1033

Qt5 编译 Qt WebEngine

准备工作 控制面板中调整 如下图所示 Qt环境:5.9.8 需要的配置:Src、msvc2015_64或者msvc2017_64 额外工具: Python 2.7.5 或更高版本,不支持 Python 3 Bison,Flex GPerf Perl (Strawberry vesion) from http://strawberryperl.com/ 在 Windows 平台上,需要 Visual Studio 2015 或 2017,和 Windows 10 SDK。 ps:flex目录中的.ex

qq_40501206的博客 5469

关于Qt 加载网页(一) QWebengineView

最近遇见了QWebengineView* createWindow 一旦return this就会崩溃,因为我想要在同一个页面内点击链接然后重新加载URL。但是Qt的帮助信息告诉我,需要利用QWebengineView* createWindow函数来新建一个QWebengineView对象,并且返回才可以实现。但是这种做法有一个明显的bug,那就是随着页面打开次数的增加,内存迟早要占满。当然Qt给出的解决思路是将新建的QWebEngineView指定一个父窗口来显示,然后通过开关这个父窗口来控制这个新建Q

weixin_42043127的博客 2万+

qt5.15+qtwebengine build

解压 xz -d qt-everywhere-src-5.15.0.tar.xz tar -xvf qt-everywhere-src-5.15.0.tar -debug-and-release -opensource --------------------------- 安装依赖库 看https://doc.qt.io/qt-5/qtwebengine-platform-notes.html https://doc.qt.io/qt-5/linux-requirements.html confi.

ooyyee的专栏 6969
上一篇: 【I²C总线通信协议总结】
下一篇: 【鼠标在不点击的情况下,直接移动到QT控件上不显示提示信息】
ZTH_Zero
博客等级 码龄8年 10粉丝 9原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZTH_Zero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值