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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top