PyQt5/PySide2 广告拦截
PyQt5/PySide2 AdBlock
我正在尝试为 youtube 和其他媒体创建一个浮动浏览器。
我发现了一些旧的 adblock 示例,例如 PyQt4/PySide,但现在它们已被弃用,我无法将它们转换为 PySide2 QWebEngineView。
关于如何在 QWebEngineView 中插入广告块有什么想法吗?
旧版本linkHow would you adblock using Python?
要过滤urls,必须实现QWebEngineUrlRequestInterceptor,如果要阻止url,则必须调用QWebEngineUrlRequestInfo 的阻止(True) 函数。对于过滤,我将使用 adblockparser library and the easylist.txt.
from PyQt5 import QtCore, QtWidgets, QtWebEngineCore, QtWebEngineWidgets
from adblockparser import AdblockRules
with open("easylist.txt") as f:
raw_rules = f.readlines()
rules = AdblockRules(raw_rules)
class WebEngineUrlRequestInterceptor(QtWebEngineCore.QWebEngineUrlRequestInterceptor):
def interceptRequest(self, info):
url = info.requestUrl().toString()
if rules.should_block(url):
print("block::::::::::::::::::::::", url)
info.block(True)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
interceptor = WebEngineUrlRequestInterceptor()
QtWebEngineWidgets.QWebEngineProfile.defaultProfile().setRequestInterceptor(interceptor)
view = QtWebEngineWidgets.QWebEngineView()
view.load(QtCore.QUrl("https://www.youtube.com/"))
view.show()
sys.exit(app.exec_())
我正在尝试为 youtube 和其他媒体创建一个浮动浏览器。
我发现了一些旧的 adblock 示例,例如 PyQt4/PySide,但现在它们已被弃用,我无法将它们转换为 PySide2 QWebEngineView。
关于如何在 QWebEngineView 中插入广告块有什么想法吗?
旧版本linkHow would you adblock using Python?
要过滤urls,必须实现QWebEngineUrlRequestInterceptor,如果要阻止url,则必须调用QWebEngineUrlRequestInfo 的阻止(True) 函数。对于过滤,我将使用 adblockparser library and the easylist.txt.
from PyQt5 import QtCore, QtWidgets, QtWebEngineCore, QtWebEngineWidgets
from adblockparser import AdblockRules
with open("easylist.txt") as f:
raw_rules = f.readlines()
rules = AdblockRules(raw_rules)
class WebEngineUrlRequestInterceptor(QtWebEngineCore.QWebEngineUrlRequestInterceptor):
def interceptRequest(self, info):
url = info.requestUrl().toString()
if rules.should_block(url):
print("block::::::::::::::::::::::", url)
info.block(True)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
interceptor = WebEngineUrlRequestInterceptor()
QtWebEngineWidgets.QWebEngineProfile.defaultProfile().setRequestInterceptor(interceptor)
view = QtWebEngineWidgets.QWebEngineView()
view.load(QtCore.QUrl("https://www.youtube.com/"))
view.show()
sys.exit(app.exec_())