gpt4 book ai didi

python - 你会如何使用 Python 进行广告拦截?

转载 作者:太空狗 更新时间:2023-10-30 01:10:39 25 4
gpt4 key购买 nike

我正在慢慢构建一个 web browser在 PyQt4 中,喜欢我摆脱它的速度。但是,我想将 easylist.txt 与它结合起来。我相信 adblock 使用它来阻止浏览器的 http 请求。

你会如何使用 python/PyQt4 来实现它?

[edit1] 好的。我想我已经设置了 Privoxy。我没有设置任何额外的过滤器,它似乎可以工作。我尝试使用的 PyQt4 看起来像这样

self.proxyIP = "127.0.0.1"  
self.proxyPORT= 8118
proxy = QNetworkProxy()
proxy.setType(QNetworkProxy.HttpProxy)
proxy.setHostName(self.proxyIP)
proxy.setPort(self.proxyPORT)
QNetworkProxy.setApplicationProxy(proxy)

但是,这绝对没有任何作用,我无法理解文档,也找不到任何示例。

[edit2] 我刚刚注意到我将 self.proxyIP 更改为我的实际本地 IP 而不是 127.0.0.1 页面无法加载。所以有些事情正在发生。

最佳答案

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

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 的子类:

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

希望这对您有所帮助!

关于python - 你会如何使用 Python 进行广告拦截?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1083170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com