2013-03-11 137 views
1

我對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

回答

3

ProxyFactory.protocol是一個Python類屬性。因爲Python是一種動態類型的語言,所以它比例如Java如何定義變量和類。

MyProxy是Proxy子類的空類,它沒有定義proxy.Proxy中默認提供的任何行爲。你可能需要做的事(我不是扭曲內部專家)是查看proxy.Proxy類的文檔,並通過在MyProxy中重新定義它們來覆蓋某些方法函數,以便這些方法執行您正在查找的邏輯。

如果您查看Twisted API文檔的源代碼,它看起來像添加自定義邏輯的好地方是ProxyRequest.procese(),它在解析傳入HTTP請求後開始連接遠程主機。

所以你(也許)將需要繼承ProxyRequest類,通過requestFactory class屬性它提供給你MYPROXY。