113 Star 947 Fork 337

PyQt5/PyQt

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.github
Demo
Donate
PyQtGraph
QAxWidget
QCalendarWidget
QCheckBox
QColumnView
QComboBox
QDateTime
QDateTimeEdit
QDial
QDockWidget
QDoubleSpinBox
QFileSystemModel
QFlowLayout
QFont
QFontComboBox
QFormLayout
QFrame
QGraphicsDropShadowEffect
QGraphicsView
QGridLayout
QGroupBox
QHBoxLayout
QLCDNumber
QLabel
QLineEdit
QListView
QListWidget
QMdiArea
QMenu
QMessageBox
QMetaObject
QOpenGLWidget
QPainter
QPlainTextEdit
QProcess
QProgressBar
QPropertyAnimation
QProxyStyle
QPushButton
QRadioButton
QScrollArea
QScrollBar
QSerialPort
QSlider
QSpacerItem
QSpinBox
QSplashScreen
QSplitter
QStackedLayout
QStackedWidget
QSystemTrayIcon
QTabWidget
QTableView
QTableWidget
QTextBrowser
QTextEdit
QThread
QTimeEdit
QToolBox
QToolButton
QTreeView
QTreeWidget
QVBoxLayout
QWebChannel
QWebEngineView
Data
ScreenShot
BlockRequest.py
BlockRequestData.py
GetCookie.py
GetRequestInfo.py
JsSignals.py
README.en.md
README.md
ScreenShotPage.py
SetCookies.py
SiteDiffUser.py
QWebView
QWidget
QtChart
QtDataVisualization
QtQuick
QtRemoteObjects
QtWinExtras
Test
.gitattributes
.gitignore
LICENSE
README.md
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

QWebEngineView

1、获取Cookie

运行 GetCookie.py

通过QWebEngineProfile中得到的cookieStore并绑定它的cookieAdded信号来得到Cookie

GetCookie

2、和Js交互操作

运行 JsSignals.py

通过qwebchannel.jsQWebChannel.registerObject进行Python对象和Javascript的交互

具体看代码中的注释

JsSignals

3、网页整体截图

运行 ScreenShotPage.py

  1. 方式1:目前通过不完美方法(先调整QWebEngineView的大小为QWebEnginePage的内容大小,等待一定时间后截图再还原大小)
  2. 方式2:通过js库html2canvas对指定元素截图,得到base64编码的数据并调用接口函数传递到py代码中

ScreenShotPage

4、同网站不同用户

运行 SiteDiffUser.py

原理是为每个QWebEngineView创建一个QWebEnginePage,且使用独立的QWebEngineProfile,并配置persistentStoragePath不同路径

SiteDiffUser

5、拦截请求

运行 BlockRequest.py

通过QWebEngineUrlRequestInterceptor中的interceptRequest方法对每个请求做拦截过滤

BlockRequest

6、拦截请求内容

运行 BlockRequestData.py

这里用了一个投巧的办法,原理是先通过QWebEngineUrlRequestInterceptor中的interceptRequest方法对每个请求做拦截过滤, 发现目标url后重定向到QWebEngineUrlSchemeHandler实现的自定义协议头返回数据

BlockRequestData

7、设置Cookie

运行 SetCookies.py

通过QWebEngineProfile中得到的cookieStore来添加QNetworkCookie对象实现, 需要注意的是httpOnly=true时,通过js无法获取

SetCookies

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/PyQt5/PyQt.git
git@gitee.com:PyQt5/PyQt.git
PyQt5
PyQt
PyQt
master

搜索帮助

371d5123 14472233 46e8bd33 14472233