¿Cómo se Adblock usando Python?
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.
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.