J'apprends la programmation réseau en utilisant 10 en python torsadé. Dans le code ci-dessous est-il possible de détecter la requête HTTP lorsque les données sont reçues? récupérer également le nom de domaine, sous domaine, valeurs de port de cela? Rejeter si ce n'est pas des données http?Comment détecter une requête HTTP en python + tordu?
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()
merci alex pour la réponse. Votre réponse est très utile pour un débutant comme moi.Je vais y entrer :) –
pas de problème, j'ai passé beaucoup de temps à lutter contre un problème similaire et obtenir le proxy HTTP tordu travailler moi-même. Une fois que vous le comprendre, il est extrêmement lisse. – themaestro