私は Web ブラウザーを構築しており、そのブラウザーで広告ブロックを有効にしたいと考えています。複数の回答を読みましたが、うまく実装できませんでした。
adFilter の読み込みに成功し、広告マッチングは正常に機能します。
これは networkAccessManager と関係があると思いますが、その方法がわかりません。
これは QNetworkAccessManager クラスを継承する私のクラスです
class NetworkManager(QNetworkAccessManager):
def __init__(self):
super().__init__()
self.adblocker = Filter(open('easylist.txt', encoding="utf8"))
self.finished.connect(self._finished)
def createRequest(self, op, request, device=None):
url = request.url().toString()
if self.adblocker.match(url):
print('blocking url, ', url)
# block ads here
else:
print('good to go', url)
return QNetworkAccessManager.createRequest(self, op, request, device)
def examine(self, url):
self.get(QNetworkRequest(QUrl(url)))
def _finished(self, reply):
headers = reply.rawHeaderPairs()
headers = {str(k):str(v) for k,v in headers}
content_type = headers.get("Content-Type")
url = reply.url().toString()
status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
cookies = headers.get("Set-Cookie")
logger.log('{} --- {} --- {}'.format(str(status), url, content_type), 2)
createRequest メソッドをオーバーライドしてみました。広告は検出されていますが、それらの広告リクエストは実際にはブロックされていません。
どうすればこれを達成できますか。