2009-07-04 36 views
4

我正在PyQt4中緩慢地構建一個web browser,並且像我擺脫它的速度一樣。不過,我想將easylist.txt與它結合使用。我相信adblock使用它來阻止瀏覽器的http請求。你會如何使用Python來阻止?

你將如何去使用python/PyQt4?

[編輯] 好的。我想我已經設置了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)

然而,這個絕對沒有,我不能讓文檔的意義,並不能找到任何的例子。

我剛剛注意到,我將self.proxyIP更改爲我的實際本地IP而不是127.0.0.1,頁面無法加載。所以發生了一些事情。

+2

您是否通過Python控制了HTTP請求的完成?如果沒有,這將是棘手的。如果是的話,那麼這是微不足道的。 Sooo ....我覺得很奇怪的問題。 – 2009-07-05 09:35:25

+0

我剛剛看過http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qhttp.html,我認爲這可能是可能的。可能只是想知道如何。 – regomodo 2009-07-06 19:17:20

+0

你在問什麼?如何識別廣告?如果是這樣,我會從AdBlock Plus中獲取一份EasyList訂閱並使用它。 – Eli 2009-07-06 20:23:31

回答

0

的easylist.txt文件就是純文本,這表現在這裏:http://adblockplus.mozdev.org/easylist/easylist.txt

線,[開始也!似乎是註釋,所以它僅僅是對文件進行排序並根據easylist.txt文件中行的起始字符在url/request中搜索正確的內容的情況。

4

我知道這是一個古老的問題,但我想我會嘗試給任何偶然發現的人提供答案。您可以創建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) 

希望這有助於!