Question

Je construis lentement un PyQt4 et comme la vitesse i « m en sortir. Cependant, je veux combiner easylist.txt avec elle. Je crois que Adblock utilise pour bloquer les requêtes http par le navigateur.

Comment feriez-vous en utilisant python / PyQt4?

[edit1] Ok. Je pense que j'ai installé Privoxy. Je n'ai pas la configuration des filtres supplémentaires et il semble fonctionner. Le PyQt4 j'ai essayé d'utiliser ressemble à ceci

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)

Cependant, cela ne fait absolument rien et je ne peux pas donner un sens de la documentation et ne peut pas trouver des exemples.

[Edit2] Je viens de remarquer que je change I'f self.proxyIP à mon adresse IP locale réelle plutôt que 127.0.0.1 la page ne se charge pas. Donc, quelque chose se passe.

Était-ce utile?

La solution

Je sais que c'est une vieille question, mais je pensais que je vais essayer de donner une réponse à tous ceux qui arrive à tomber par hasard sur elle. Vous pouvez créer une sous-classe de QNetworkAccessManager et le combiner avec https://github.com/atereshkin/abpy . Quelque chose un peu comme ceci:

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()

Après cela, définissez ce qui suit sur toutes vos instances QWebView, ou faire une sous-classe de QWebView:

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

Hope this helps!

Autres conseils

Cette question est sur le filtrage web?

Ensuite, essayez d'utiliser certains de proxy Web externe, pour l'échantillon Privoxy ( http: //en.wikipedia .org / wiki / Privoxy ).

Le fichier texte est easylist.txt simplement ordinaire, comme en témoigne ici: http: // adblockplus .mozdev.org / EasyList / easylist.txt

lignes commençant par [et aussi! semblent être des commentaires, il est donc tout simplement un cas de tri dans le fichier, et la recherche des choses correctes dans l'URL / demande en fonction du caractère de départ de la ligne dans le fichier easylist.txt.

Privoxy est solide. Si vous voulez qu'il soit complètement API basée bien, consultez le BrightCloud API de filtrage web ainsi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top