2009-07-04 8 views
4

PyQt4でゆっくりとweb browserを構築していますが、スピードが出てきています。しかし、私はeasylist.txtとそれを組み合わせたいと思っています。私はadblockがこれを使ってブラウザからhttpリクエストをブロックすると信じています。Pythonを使用してどのようにadblockしますか?

Python/PyQt4を使ってどうやってやりますか?

[編集] [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)

のように見えます。

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

+2

どのようなHTTP要求が行われたのかをPythonから制御できますか?もしそうでなければ、それはやりにくくなるだろう。はいの場合、それは簡単です。 Sooo ....奇妙な質問だと思います。 –

+0

私はちょうどhttp://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qhttp.htmlを見てきました。それは可能かもしれないと思います。どのように考え出すかの問題かもしれません。 – regomodo

+0

あなたは何を求めていますか?広告の特定方法もしそうなら、私はAdBlock PlusからEasyListサブスクリプションのコピーを入手し、それを使用します。 – Eli

答えて

0

ウェブフィルタリングに関するこの質問はありますか?

次に、サンプルPrivoxy(http://en.wikipedia.org/wiki/Privoxy)に対して外部Webプロキシを使用してみます。ここに示されたように

+0

ええ、Webフィルタリング。もし私が必要としていることをprivoxyが行うなら、それは努力を節約するでしょうリクエストをブロックするのではなく、阻止する方が効率的でしょうか? – regomodo

+0

はい、間違いありません。それをブロックすると、リソース(イメージ、スクリプト、何でも)が読み込まれます。依頼は依然として行われます。要求を回避すると、読み込みは行われません。 –

+0

防止...ブロック.. ここの違いは何ですか? G00gle Ads(サンプル)をブロックするためのHTMLコードを書き直すのは難しいかもしれませんが、URLによるリクエストのキャッチとブロックは簡単です。 –

0

easylist.txtファイルは、単純にプレーンテキストである。また、http://adblockplus.mozdev.org/easylist/easylist.txt

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

+0

私はすでにリストにあったものを知っていました。私は、リクエストをブロックしたり、リクエストが発生しないようにすることができるかどうかを確認しようとしています。 – regomodo

0

Privoxyは安定しています。あなたはそれが完全にAPIに基づいてもしたい場合は、BrightCloud web filtering APIもチェックしてください。

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) 

・ホープ、このことができます種類のこのような何か!

関連する問題