我正在学习在python中使用扭曲10的网络编程。在下面的代码中,有什么方法可以在数据收到时检测HTTP请求?还从这个检索域名,子域,端口值?丢弃它,如果它不是http数据?如何检测Python中的HTTP请求扭曲?
from twisted.internet import stdio, reactor, protocol
from twisted.protocols import basic
import re
class DataForwardingProtocol(protocol.Protocol):
def _ _init_ _(self):
self.output = None
self.normalizeNewlines = False
def dataReceived(self, data):
if self.normalizeNewlines:
data = re.sub(r"(\r\n|\n)", "\r\n", data)
if self.output:
self.output.write(data)
class StdioProxyProtocol(DataForwardingProtocol):
def connectionMade(self):
inputForwarder = DataForwardingProtocol()
inputForwarder.output = self.transport
inputForwarder.normalizeNewlines = True
stdioWrapper = stdio.StandardIO(inputForwarder)
self.output = stdioWrapper
print "Connected to server. Press ctrl-C to close connection."
class StdioProxyFactory(protocol.ClientFactory):
protocol = StdioProxyProtocol
def clientConnectionLost(self, transport, reason):
reactor.stop()
def clientConnectionFailed(self, transport, reason):
print reason.getErrorMessage()
reactor.stop()
if __name__ == '_ _main_ _':
import sys
if not len(sys.argv) == 3:
print "Usage: %s host port" % _ _file_ _
sys.exit(1)
reactor.connectTCP(sys.argv[1], int(sys.argv[2]), StdioProxyFactory())
reactor.run()
感谢alex的回复。你的回答对于像我这样的新手来说非常有用。我会接受它:) – 2010-08-08 06:22:43
没问题,实际上我花了很多时间来解决类似的问题,并让自己的HTTP代理工作。一旦你发现它非常光滑。 – themaestro 2010-08-11 21:55:39