python扭曲的HTTP代理
问题描述:
我对python非常陌生。我开始扭曲。正如我在Twisted文档中看到的那样,这可以构成代理服务器。python扭曲的HTTP代理
class MyProxy(proxy.Proxy):
pass
class ProxyFactory(http.HTTPFactory):
protocol = MyProxy
reactor.listenTCP(8080, ProxyFactory())
reactor.run()
ProxyFactory::protocol
看起来像一个成员变量?但MyProxy
是一个typename,我不知道它是一种模板吗?否则我该如何将一个类型分配给一个变量?
我真正想要存档的只是拒绝对某些端点的请求。我想重写buildProtocol
但提供的参数addr
始终是127.0.0.1
答
ProxyFactory.protocol
是一个Python类属性。因为Python是一种动态类型的语言,所以它比例如Java如何定义变量和类。
MyProxy是Proxy子类的空类,它没有定义proxy.Proxy中默认提供的任何行为。你可能需要做的事(我不是扭曲内部专家)是查看proxy.Proxy类的文档,并通过在MyProxy中重新定义它们来覆盖某些方法函数,以便这些方法执行您正在查找的逻辑。
如果您查看Twisted API文档的源代码,它看起来像添加自定义逻辑的好地方是ProxyRequest.procese(),它在解析传入HTTP请求后开始连接远程主机。
所以你(也许)将需要继承ProxyRequest类,通过requestFactory
class属性它提供给你MYPROXY。