5

私はゆっくりとPyQt4 でWeb ブラウザーを構築しています。しかし、easylist.txt を結合したいのです。adblock はこれを使用して、ブラウザによる http リクエストをブロックしていると思います。

python/PyQt4 を使用してどのように処理しますか?

[編集1] わかりました。私は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)

ただし、これはまったく何もせず、ドキュメントを理解できず、例も見つかりません。

[編集 2] self.proxyIP を 127.0.0.1 ではなく実際のローカル IP に変更すると、ページが読み込まれないことに気付きました。だから何かが起こっています。

4

4 に答える 4

6

これは古い質問であることは承知していますが、たまたま遭遇した人のために答えてみようと思いました. 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)

お役に立てれば!

于 2013-08-19T21:33:28.273 に答える
0

この質問はWebフィルタリングに関するものですか?

次に、サンプルPrivoxy(http://en.wikipedia.org/wiki/Privoxy)の外部Webプロキシを使用してみてください。

于 2009-07-05T23:14:43.010 に答える
0

easylist.txtファイルは、ここに示されているように、単純なプレーンテキストです:http://adblockplus.mozdev.org/easylist/easylist.txt

[で始まる行と!コメントのように見えるので、ファイルを並べ替えて、easylist.txtファイルの行の開始文字に応じてurl/requestで正しいものを検索するだけの場合です。

于 2009-07-05T23:25:22.677 に答える
0

Privoxy はしっかりしています。ただし、完全に API ベースにしたい場合は、BrightCloud Web フィルタリング APIもチェックしてください。

于 2009-09-29T06:24:36.367 に答える