如何为PyQt5的QWebEngine配置127.0.0.1:6666代理?
如何为PyQt5的QWebEngine配置自定义代理
要让QWebEngine发送的所有请求都通过你在127.0.0.1:6666搭建的代理,直接用全局QNetworkProxy可能不会完全生效——因为QWebEngine基于Chromium内核,有自己的独立网络栈,更推荐通过QWebEngineProfile来配置代理。
下面是修改后的完整代码,我标注了新增的代理配置部分:
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtWebEngineWidgets from PyQt5.QtNetwork import QNetworkProxy # 新增:导入QNetworkProxy类 class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.webView = QtWebEngineWidgets.QWebEngineView(self.centralwidget) self.webView.setUrl(QtCore.QUrl("http://www.google.com/")) self.webView.setObjectName("webView") self.gridLayout.addWidget(self.webView, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) # ---------------------- 新增:代理配置核心代码 ---------------------- # 获取QWebEngine的默认全局配置文件 profile = QtWebEngineWidgets.QWebEngineProfile.defaultProfile() # 创建代理对象并填充参数 proxy = QNetworkProxy() proxy.setType(QNetworkProxy.HttpProxy) # 如果是SOCKS5代理,改为QNetworkProxy.Socks5Proxy proxy.setHostName("127.0.0.1") proxy.setPort(6666) # 若代理需要身份验证,取消注释以下两行并填入信息 # proxy.setUser("your_proxy_username") # proxy.setPassword("your_proxy_password") # 将代理规则应用到配置文件 profile.setProxy(proxy) # ------------------------------------------------------------- MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
关键说明:
QWebEngineProfile是QWebEngine的核心配置载体,管理着网络、缓存、Cookie等所有网络相关设置,修改它的代理规则会对所有使用该profile的QWebEngineView生效。- 根据你代理的实际类型选择
setType参数:HTTP/HTTPS代理用QNetworkProxy.HttpProxy,SOCKS5代理用QNetworkProxy.Socks5Proxy。 - 如果你的代理需要账号密码验证,只需取消注释代码中的用户名和密码设置行即可。
这样配置后,QWebEngine发出的所有请求都会自动通过你指定的127.0.0.1:6666代理转发了。
内容的提问来源于stack exchange,提问作者Bale
相关产品推荐
相关产品推荐

