用webpage,webpage可以用,你看我上面发的两个链接。
webpage是webengineview的属性
用webpage,webpage可以用,你看我上面发的两个链接。
webpage是webengineview的属性
QWebEnginePage 应该才是 WebEngineView的属性
是呀,我的意思是,你按照下面的逻辑来做:
我估计你按照上面的调用顺序来设置, 你最早的 query.url() 的问题就可以解决
嗯,这个你想表达的流程我了解,但是
QWebEnginePage 并不支持 setNetworkAccessManager
https://doc.qt.io/qt-5/qwebenginepage.html
似乎基于chromium 的 QWebEngine并没有太多Proxy的支持,而NetWorkAccessManager 这些都是基于Webkit的QtWebKit
嗯,那我建议直接操作系统底层库入手,针对EAF进程进行URL规则过滤,不用QT的方法
嗯嗯,还是感谢懒猫大大的耐心回复,和大大的讨论交流中不断查阅文档,我也逐渐知道,是chromium 本身限制了,而不是QtWebEngine的实现bug,哈哈哈。
目前来说,可能直接从系统入手,或者代理层入手设置url规则才是最好的方式。不过,上面的类似 get_url
的方式对我来说也能work (本来还想给eaf贡献贡献的,不过这种蹩脚的实现还是自己玩玩好了),我看看还没有什么优化思路。
懒猫大大,我又查了下Qt的文档,在QtWebEngine下 QWebEngineUrlRequestInterceptor有类似 QProxyFactory 的 queryProxy的捕获请求的功能,基于QWebEngineUrlRequestInterceptor 改了下,我又提交了一版代码。
好的,我周末要带小朋友出去玩一下,估计要晚上回家才能 review code 了,耐心等一下哈。
好的,不急 谢谢!
你现在测试的时候,是多个页面的流量都会走各自的代理吗? 还是要等在当前页面加载完?
我简单瞄了一个错误,晚上回来继续 review.
晚上回来我看看这个方法通用不,通用就合并。
没法解决的话可以在EAF和真实代理之间自己写一个socks代理来劫持dns做中转,相当于自己实现了pac。
当然第二种方式又会存在跨平台测试。
目前基于 QtWebEngine 还是做不到多个页面的代理独立。
https://doc.qt.io/qt-5/qtwebengine-overview.html#proxy-support
需要等页面加载完。目前我测试基本是work的,而且正常场景下应该够用,但是确实存在多个页面同时loading的时候,代理可能要相互影响的问题
看来只有两条路,一条中转socks来配置规则,一条是把EAF多进程化,每个页面自己一个进程可以独立切换。
多进程的改动还比较复杂,能很好的解决每个进程之间独立代理的这个功能,但是会带来一个副作用,就是每一个页面打开速度都会降低,因为它会有一个Python进程的启动消耗。
个人不倾向这种改造方案,多进程的形式无疑会增大内存损耗,降低性能
其实EAF内部写一个socks5代理应该很容易,根据规则再看要不要转发给本地代理,这样就不用和chromium较劲了,哈哈哈哈哈。
那我也来试试
我问了朋友,说不用自己写,你可以折腾一下 clash, 就是 socks5 server, 可以自定义规则:
我自己没有折腾过,欢迎折腾好发一下攻略哈,好多EAF用户都期待这个功能。
用起来了,不过看 clash 配置功能好多好复杂,感觉clash这个东西用来转发个规则有点杀鸡用牛刀的感觉,哈哈哈哈
等我摸索摸索两天配置先,再来写个攻略
通过Clash的规则的方式来转发