Я изучаю сетевое программирование с использованием скрученного 10 в python. В нижеприведенном коде есть способ обнаружения HTTP-запроса при получении данных? также получить имя домена, поддомен, значения порта из этого? Отбросить его, если это не http-данные?Как определить HTTP-запрос в python + twisted?
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 за ответ. Ваш ответ очень полезен для новичков, таких как me.I получить к нему :) –
не проблема, я на самом деле потратил много времени, борясь с аналогичной проблемой и получить витой HTTP-прокси работает сам. Как только вы это выясните, он очень гладко. – themaestro