113 Star 951 Fork 342

PyQt5/PyQt

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 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

搜索帮助