我慢慢建立一个 Web浏览器的我“M得到了它。不过,我想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]我刚刚注意到,i'f我改变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)

希望这有助于!

其他提示

时约web过滤这个问题?

然后,尝试使用一些外部Web代理的,用于样本的Privoxy( HTTP://en.wikipedia .ORG /维基/ Privoxy的)。

在easylist.txt文件只是纯文本,如下所示: HTTP:// adblockplus .mozdev.org / easylist / easylist.txt

与[也开始的行!似乎是注释,所以它是简单地通过将文件分类,并搜索在url /请求根据在easylist.txt文件中的行的开始字符的正确东西的情况。

Privoxy的是固体。如果你希望它是虽然建立完全API,请查看 BrightCloud网页过滤API 为好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top