2011-09-08 12 views
6

Esto es lo que quiero hacer:HTTP a través de telnet con el pitón y retorcido

navegador web -> conectar con el servidor remoto a través de telnet (server1) -> a calamar-proxy (que requiere autenticación) a través de telnet en el puerto 80 (servidor 2)

he escrito un pequeño script en Python que utiliza Twisted (aquí:

#! /usr/bin/python 
from twisted.internet import reactor, protocol 
from twisted.web import http 
from telnetlib import Telnet 
import getpass 
from sys import stdout 

class datareceiver(protocol.Protocol): 
    def dataReceived(self,data): 
     self.telnet_con.write(data) 
     stdout.write(self.telnet_con.read_all()) 

    def connectionMade(data): 
     stdout.write("\nA connection was made to this server\n") 

def main(): 
    server1 = "10.1.1.1" 
    #user = raw_input("Enter your remote account: ") 
    password = getpass.getpass() 
    tn = Telnet(server1) 

    if password: 
     tn.read_until("Password: ") 
     tn.write(password + "\n") 

    #This is server2 
    tn.write("telnet 10.1.1.10 80 \n") 


    #serverfac = protocol.Factory() 
    serverfac = http.HTTPFactory() 
    datareceiver.telnet_con = tn 
    serverfac.protocol = datareceiver 
    reactor.listenTCP(9229,serverfac) 

    reactor.run() 
    tn.write("exit\n") 

    print tn.read_all() 

if __name__ == "__main__": 
    main() 

Pero entonces me di cuenta de que lo estoy haciendo por el camino equivocado, mi concha está recibiendo toda la respuestas de squid en lugar del navegador. Puede alguien jus ¿Esbozar una forma correcta de hacer esto? ¿Debo usar algo más en lugar de retorcerlo?

+0

No es realmente necesario usar Python, cualquier otra cosa también haría – vivek

+1

La pregunta no es muy fácil de entender. Podría ayudar si tratas de aclarar lo que estás tratando de lograr. –

+0

Tengo que acceder a un servidor proxy Squid (que servidores en el puerto 80) a través de otro servidor (en realidad es un conmutador). Puedo hacer telnet en el interruptor y luego usar telnet para conectarme al servidor squid-proxy. En resumen, quiero tunelizar mi conexión http a través de ese interruptor – vivek

Respuesta

Cuestiones relacionadas