Pregunta

Estoy poco a poco la construcción de una en PyQt4 y al igual que la velocidad i 'm salir de ella. Sin embargo, quiero combinar easylist.txt con él. Creo Adblock utiliza esto para bloquear peticiones HTTP al navegador.

¿Cómo ir sobre ella usando Python / PyQt4?

[edit1] Ok. Creo que he configurar Privoxy. No tengo ninguna configuración de filtros adicionales y parece que funciona. El PyQt4 he intentado utilizar es el siguiente

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)

Sin embargo, esto no hace absolutamente nada y no puedo dar sentido a los documentos y no se puede encontrar ningún ejemplo.

[Edit2] he dado cuenta de que acaba de I'f cambio self.proxyIP a mi IP local real en lugar de 127.0.0.1 la página no se carga. Así que algo está pasando.

¿Fue útil?

Solución

Sé que esto es una vieja pregunta, pero pensé que iba a tratar de dar una respuesta para cualquier persona que pasa a tropezar con él. Se puede crear una subclase de QNetworkAccessManager y combinarlo con https://github.com/atereshkin/abpy . Algo un poco como esto:

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

Después de eso, establezca lo siguiente en todas las instancias de QWebView, o hacer una subclase de QWebView:

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

Espero que esto ayude!

Otros consejos

¿Es esta pregunta acerca de filtrado web?

A continuación, intente utilizar algunas de web-proxy externo, para la muestra Privoxy ( http: //en.wikipedia .org / wiki / Privoxy ).

El archivo easylist.txt es simplemente texto sin formato, como se ha demostrado aquí: http: // AdBlockPlus .mozdev.org / EasyList / easylist.txt

líneas que comienzan con [y también! parecen ser los comentarios, por lo que es simplemente un caso de la clasificación a través del archivo, y la búsqueda de las cosas correctas en la url / solicitud, dependiendo del carácter inicial de la línea en el archivo easylist.txt.

Privoxy es sólido. Si usted quiere que sea completamente API basada embargo, echa un vistazo a la href="http://bcws.brightcloud.com" rel="nofollow noreferrer"> BrightCloud API de filtrado web también.

scroll top