Come si Adblock utilizzando Python?
Domanda
Sto lentamente costruendo un browser web in PyQt4 e come la velocità i 'm uscirne. Tuttavia, voglio unire easylist.txt con esso. Credo che AdBlock utilizza per bloccare le richieste HTTP del browser.
Come si va su di esso utilizzando python / PyQt4?
[edit1] Ok. Credo di aver configurazione Privoxy. Non ho messa a punto eventuali filtri aggiuntivi e sembra funzionare. Il PyQt4 Ho cercato di usare assomiglia a questo
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)
Tuttavia, questo non fa assolutamente nulla e non posso dare un senso ai documenti e non riesce a trovare alcun esempio.
[EDIT2] Ho appena notato che i'f cambio self.proxyIP al mio attuale IP locale 127.0.0.1 piuttosto che la pagina non si carica. Quindi, qualcosa sta accadendo.
Soluzione
So che questa è una vecchia questione, ma ho pensato di provare a dare una risposta per chiunque capita di inciampare su di esso. Si potrebbe creare una sottoclasse di QNetworkAccessManager e combinarlo con https://github.com/atereshkin/abpy . Qualcosa di un po 'come questo:
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()
Dopo di che, impostare il seguente su tutti i casi QWebView, o fare una sottoclasse di QWebView:
QWebView.page().setNetworkAccessManager(myNetworkAccessManager)
Spero che questo aiuti!
Altri suggerimenti
E 'a questa domanda sul filtraggio web?
Quindi provare utilizzare alcuni dei web-proxy esterno, per il campione Privoxy ( http: //en.wikipedia .org / wiki / Privoxy ).
Il file easylist.txt è un testo semplice, come dimostrato qui: http: // AdBlockPlus .mozdev.org / EasyList / easylist.txt
linee che iniziano con [e anche! sembrano essere commenti, quindi è semplicemente un caso di smistamento attraverso il file e cercare le cose giuste nella url / richiesta a seconda del carattere di partenza della riga nel file easylist.txt.
Privoxy è solido. Se si vuole che sia completamente API basata però, controlla la BrightCloud filtro web API pure.