使用Python和Twisted通过Telnet进行HTTP传输

6

我希望做的事情是:

Web浏览器 --> 通过Telnet连接到远程服务器(server1) --> 通过Telnet连接到端口80上需要身份验证的Squid代理服务器(server2)

我编写了一个使用Twisted的小Python脚本(在此处:

#! /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()

但后来我意识到我的做法是错误的,我的shell获得了squid返回的所有回复而不是浏览器。 有人能概述一下正确的做法吗? 我应该使用其他东西代替twisted吗?


不一定非要使用Python,其他任何语言也可以。 - vivek
1
这个问题不是很容易理解。如果您尝试澄清您想要实现的目标,可能会有所帮助。 - Jean-Paul Calderone
我需要通过另一台服务器(实际上是一个交换机)访问一个运行在80端口的Squid代理服务器。我可以telnet到交换机,然后从那里使用telnet连接到Squid代理服务器。简而言之,我想通过那个交换机隧道传输我的http连接。 - vivek
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接