python扭曲的HTTP代理

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。