문제

나는 천천히 a 웹 브라우저 pyqt4에서 그리고 속도가 좋아지는 속도가 나옵니다. 그러나 EasyList.txt를 결합하고 싶습니다. AdBlock은 이것을 사용하여 브라우저의 HTTP 요청을 차단한다고 생각합니다.

Python/PYQT4를 사용하여 어떻게 갈 것입니까?

edit1] OK. 나는 privoxy를 설정한다고 생각합니다. 추가 필터를 설정하지 않았으며 작동하는 것 같습니다. 내가 사용하려고 시도한 PYQT4는 이와 같이 보입니다

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)

그러나 이것은 절대적으로 아무것도하지 않으며 문서를 이해할 수 없으며 예제를 찾을 수 없습니다.

edit2] 방금 127.0.0.1이 아닌 실제 로컬 IP로 Self.proxyip을 변경한다는 것을 알았습니다. 페이지가로드되지 않습니다. 그래서 뭔가 일어나고 있습니다.

도움이 되었습니까?

해결책

나는 이것이 오래된 질문이라는 것을 알고 있지만, 나는 그것을 우연히 발견하는 사람에게 답을 줄 것이라고 생각했다. Qnetworkaccessmanager의 서브 클래스를 만들고 결합 할 수 있습니다. https://github.com/atereshkin/abpy. 다음과 같은 것 :

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

그런 다음 모든 qwebview 인스턴스에 다음을 설정하거나 Qwebview의 서브 클래스를 만드십시오.

QWebView.page().setNetworkAccessManager(myNetworkAccessManager)

도움이 되었기를 바랍니다!

다른 팁

웹 필터링에 대한이 질문이 있습니까?

그런 다음 샘플 privoxy를 위해 외부 웹 프로시를 사용해보십시오 (http://en.wikipedia.org/wiki/privoxy).

easylist.txt 파일은 여기에 설명 된 것처럼 단순히 일반 텍스트입니다. http://adblockplus.mozdev.org/easylist/easylist.txt

그리고 또한 또한! 댓글 인 것처럼 보이므로 파일을 정렬하고 EasyList.txt 파일의 선의 시작 문자에 따라 URL/요청에서 올바른 것을 검색하는 경우입니다.

friboxy는 견고합니다. 그래도 완전히 API를 기반으로하려면 BrightCloud 웹 필터링 API 또한.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top