使用python和twisted通过telnet的Http

使用python和twisted通过telnet的Http,python,proxy,twisted,telnet,Python,Proxy,Twisted,Telnet,这就是我想做的: web浏览器-->通过telnet(服务器1)连接到远程服务器-->通过端口80(服务器2)上的telnet连接到squid代理(需要身份验证) 我编写了一个使用Twisted的小python脚本(这里: 但后来我意识到我做得不对,我的shell得到的是squid而不是浏览器的所有回复。 有人能概括出正确的方法吗? 我应该使用其他东西而不是twisted吗?我想您应该查看和。另外,由于您使用的是twisted,您可能希望将其用于telnet连接,否则您的应用程序将不会是异步的

这就是我想做的:

web浏览器-->通过telnet(服务器1)连接到远程服务器-->通过端口80(服务器2)上的telnet连接到squid代理(需要身份验证)

我编写了一个使用Twisted的小python脚本(这里:

但后来我意识到我做得不对,我的shell得到的是squid而不是浏览器的所有回复。 有人能概括出正确的方法吗?
我应该使用其他东西而不是twisted吗?

我想您应该查看和。另外,由于您使用的是twisted,您可能希望将其用于telnet连接,否则您的应用程序将不会是异步的

也可能有用


希望这有帮助!

使用python并不是真的必要,其他任何东西都可以。这个问题不太容易理解。如果您尝试澄清您要实现的目标,可能会有所帮助。我必须通过另一台服务器(实际上是交换机)访问squid代理服务器(端口80上的服务器)。我可以将telnet连接到交换机中,然后从那里使用telnet连接到squid代理服务器。简言之,我希望通过该交换机隧道我的http连接
#! /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()