Python Twisted Proxy - как перехватывать пакеты - PullRequest
7 голосов
/ 30 января 2012

Я пытаюсь распечатать тело ответа HTTP, используя Python.

Вот мой программный код:

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

Когда я подключаю свой браузер к localhost: 8080,Я вижу, что все мои запросы направляются через прокси-сервер Python, работающий локально.Но как мне 1) распечатать тело ответа и 2) отредактировать тело ответа перед отправкой его обратно в браузер?

Я надеюсь, что кто-то может указать мне правильное направление - имейте в виду, что яочень новый для Python!

1 Ответ

9 голосов
/ 30 января 2012

Переопределите метод dataReceived протокола (proxy.Proxy в вашем случае) и обработайте изменение данных этим методом:

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