首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python和twisted通过telnet实现的Http

使用python和twisted通过telnet实现的Http
EN

Stack Overflow用户
提问于 2011-09-09 05:40:57
回答 1查看 1.2K关注 0票数 6

这就是我想要做的:

web-browser -->通过远程登录(Server1)连接到远程服务器-->通过端口80(server2)远程登录到squid-proxy(需要身份验证)

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

代码语言:javascript
复制
#! /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而不是浏览器得到了所有的回复。有人能概述一下做这件事的正确方法吗?我应该使用其他的东西而不是扭曲的吗?

EN

回答 1

Stack Overflow用户

发布于 2011-10-07 04:36:45

我想你应该看看twisted.web.server.Sitetwisted.web.resource.Resource。此外,由于您使用的是Twisted,因此您可能希望使用twisted.protocols.telnet.Telnet进行远程登录连接,否则您的应用程序将不是异步的。

This blog postthis answer here可能也很有用。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7354864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档