我正在慢慢地在PyQt4中构建一个Web浏览器,就像我正在摆脱它的速度一样.但是,我想将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)
希望这可以帮助!