Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python扭曲HTTP代理_Python_Proxy_Twisted - Fatal编程技术网

python扭曲HTTP代理

python扭曲HTTP代理,python,proxy,twisted,Python,Proxy,Twisted,我对python非常陌生。我从twisted开始。正如我在Twisted文档中所看到的,这可以创建一个代理服务器 class MyProxy(proxy.Proxy): pass class ProxyFactory(http.HTTPFactory): protocol = MyProxy reactor.listenTCP(8080, ProxyFactory()) reactor.run() ProxyFactory::protocol看起来像一个成员变量?但是MyP

我对python非常陌生。我从twisted开始。正如我在Twisted文档中所看到的,这可以创建一个代理服务器

class MyProxy(proxy.Proxy):
    pass

class ProxyFactory(http.HTTPFactory):
    protocol = MyProxy

reactor.listenTCP(8080, ProxyFactory())
reactor.run()
ProxyFactory::protocol
看起来像一个成员变量?但是
MyProxy
是一个类型名,我不知道它是一种模板吗?否则,如何将类型指定给变量


我真正想要实现的是简单地拒绝对某些端点的请求。我想重写
buildProtocol
,但提供的参数
addr
始终是127.0.0.1

ProxyFactory。protocol
是Python类属性。由于Python是一种动态类型化语言,它比Java等语言更灵活地定义变量和类

MyProxy是Proxy子类的空类,它不定义Proxy.Proxy中默认提供的任何行为。您可能需要做的(我不擅长Twisted的内部结构)是查看proxy.proxy类的文档,并通过在MyProxy中重新定义一些方法函数来重写它们,以便这些方法执行您正在寻找的逻辑

如果您查看Twisted API文档中的源代码,那么添加自定义逻辑的好地方应该是ProxyRequest.procese(),它在解析传入的HTTP请求后开始连接远程主机

因此,您(可能)需要对ProxyRequest类进行子类化,通过
requestFactory
class属性将其提供给MyProxy