您将如何使用Python进行adblock?

您将如何使用Python进行adblock?,python,pyqt,pyqt4,adblock,Python,Pyqt,Pyqt4,Adblock,我正在PyQt4中慢慢地构建一个,并且喜欢它的速度。但是,我想将easylist.txt与它结合起来。我相信adblock使用它来阻止浏览器的http请求 您将如何使用python/PyQt4来实现它 [edit1]好的。我想我已经安装了Privoxy。我没有设置任何额外的过滤器,它似乎工作。我尝试使用的PyQt4如下所示 self.proxyIP = "127.0.0.1" self.proxyPORT= 8118 proxy = QNetworkProxy() proxy.set

我正在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,则页面不会加载。所以发生了一些事情。

这个问题是关于网络过滤的吗


然后尝试使用一些外部web代理,例如Privoxy()。

easylist.txt文件只是纯文本,如下所示:


以开头的行[而且!似乎是注释,因此这只是一个对文件进行排序的例子,并根据easylist.txt文件中行的起始字符在url/request中搜索正确的内容。

Privoxy是可靠的。如果您希望它完全基于API,也可以查看。

我知道这是一个老问题estion,但我想我会尝试为偶然发现它的任何人提供一个答案。您可以创建QNetworkAccessManager的子类并将其与组合。类似于以下内容:

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控制HTTP请求的执行吗?如果不能,这将是一个棘手的问题。如果可以,那就很简单。Sooo…我想这是一个奇怪的问题。我刚刚看了一下,我认为这是可能的。可能只是想弄清楚如何执行。你在问什么?如何识别广告?如果是,我会抓到一份广告的副本AdBlock Plus的EasyList订阅并使用它。如何在Python中实现EasyList规则以查找广告并根据EasyList规则阻止/阻止某些http请求。是的,web过滤。如果privoxy执行我需要的操作,将节省工作。阻止请求比阻止请求更有效吗?是的,当然。如果您阻止它,您仍会加载资源(图像、脚本等);请求仍会发出。如果阻止请求,则不会发生加载。阻止…阻止..这有什么区别?可能很难重写阻止G00gle广告的HTML代码(对于示例)但通过URL很容易捕获和阻止请求。我已经知道列表中的内容。我只是想看看是否有可能阻止请求或阻止请求发生。