Pergunta

Estou lentamente construindo um navegador web em PyQt4 e como o i velocidade 'estou ficando de fora. No entanto, eu quero combinar easylist.txt com ele. Acredito adblock usa isso para bloquear solicitações HTTP pelo navegador.

Como você vai fazer sobre isso usando python / PyQt4?

[edit1] Ok. Eu acho que a configuração Privoxy. Eu não tenho configuração quaisquer filtros adicionais e parece trabalho. O PyQt4 i tentei usar esta aparência

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)

No entanto, isso não faz absolutamente nada e eu não posso fazer o sentido dos documentos e não consigo encontrar qualquer exemplos.

[edit2] eu só notei que I'f eu mudar self.proxyIP ao meu IP local real em vez de 127.0.0.1 a página não carrega. Então, alguma coisa está acontecendo.

Foi útil?

Solução

Eu sei que isto é uma questão antiga, mas eu pensei que eu ia tentar dar uma resposta para qualquer um que acontece a tropeçar em cima dele. Você poderia criar uma subclasse de QNetworkAccessManager e combiná-lo com https://github.com/atereshkin/abpy . Algo tipo de como isto:

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

Depois disso, defina o seguinte em todas as suas instâncias QWebView, ou fazer uma subclasse de QWebView:

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

Espero que isso ajude!

Outras dicas

É esta pergunta sobre a filtragem web?

Em seguida, tente usar alguns dos web-proxy externo, por exemplo Privoxy ( http: //en.wikipedia .org / wiki / Privoxy ).

O arquivo easylist.txt é simplesmente texto simples, como demonstrado aqui: http: // adblockplus .mozdev.org / EasyList / easylist.txt

linhas começando com [e também! parecem ser comentários, por isso, é simplesmente um caso de triagem através do arquivo, e procurando as coisas corretas na url / pedido dependendo do caráter inicial da linha no arquivo easylist.txt.

Privoxy é sólido. Se você quer que ele seja completamente API baseada no entanto, consulte a BrightCloud web filtragem API também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top