Python Twisted代理 - 如何拦截数据包
我正在尝试用Python打印出HTTP响应的内容。
这是我到目前为止写的代码:
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 个回答
10
重写一个协议的 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()