且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

您将如何使用 Python 进行广告拦截?

更新时间:2023-02-10 07:38:28

我知道这是一个老问题,但我想我会尝试为任何偶然发现它的人提供答案.您可以创建 QNetworkAccessManager 的子类,并将其与 https://github.com/atereshkin/abpy 结合使用.有点像这样:

I know this is an old question, but I thought I'd try giving an answer for anyone who happens to stumble upon it. You could create a subclass of QNetworkAccessManager and combine it with https://github.com/atereshkin/abpy. Something kind of like this:

from PyQt4.QtNetwork import QNetworkAccessManager
from abpy import Filter
adblockFilter = Filter(file("easylist.txt"))
class MyNetworkAccessManager(QNetworkAccessManager):
    def createRequest(self, op, request, device=None):
        url = request.url().toString()
        doFilter = adblockFilter.match(url)
        if doFilter:
            return QNetworkAccessManager.createRequest(self, self.GetOperation, QNetworkRequest(QUrl()))
        else:
            QNetworkAccessManager.createRequest(self, op, request, device)
myNetworkAccessManager = MyNetworkAccessManager()

之后,在所有 QWebView 实例上设置以下内容,或者创建 QWebView 的子类:

After that, set the following on all your QWebView instances, or make a subclass of QWebView:

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

希望这会有所帮助!