2012-01-30 235 views
7

私はPythonを使ってHTTP応答の本文を表示しようとしています。ここでPython Twisted proxy - パケットを傍受する方法

はSOFAR私のコードです:

from twisted.web import proxy, http 
from twisted.internet import reactor 
from twisted.python import log 
import sys 

log.startLogging(sys.stdout) 

class ProxyFactory(http.HTTPFactory): 
    protocol=proxy.Proxy 

reactor.listenTCP(8080, ProxyFactory()) 
reactor.run() 

私はローカルホストに私のブラウザを接続すると:8080、私はすべての私の要求がローカルで実行されているPythonのプロキシを介して送られていることがわかります。しかし、どのようにして1)レスポンス本文をプリントアウトし、2)レスポンスボディを編集してブラウザに送り返すのですか?

誰かが私を正しい方向に向けることを願っています。私はPythonにはとても新しいことを覚えておいてください!

答えて

9
プロトコル(あなたのケースでproxy.Proxy)の dataReceivedメソッドをオーバーライドし、その方法でのデータ変更を処理

from twisted.web import proxy, http 
from twisted.internet import reactor 
from twisted.python import log 
import sys 

log.startLogging(sys.stdout) 

class MyProxy(proxy.Proxy): 
    def dataReceived(self, data): 

     # Modify the data here 
     print data 

     # perform the default functionality on modified data 
     return proxy.Proxy.dataReceived(self, data) 

class ProxyFactory(http.HTTPFactory): 
    protocol=MyProxy 

factory = ProxyFactory() 
reactor.listenTCP(8080, factory) 
reactor.run() 
+0

ねえ、その返信のための多くのおかげで。私は例外があります - ファイル "proxy4.py"、15行目、dataReceived \t戻り値スーパー(MyProxy、自己).dataReceived(data) \t exceptions.TypeError:型で、classobjでなければなりません – Eamorr

+0

コードを修正しました。まだTypeErrorが発生しているかどうか確認できますか? –

+0

ありがとうございます - それは今働いています... – Eamorr

関連する問題