很简单的python HTTP代理?

2024-05-14 06:08:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我到处寻找,发现了数百万个python代理服务器,但没有一个能完全满足我的要求(我认为:s)

一般来说,我对python有相当多的经验,但是对于HTTP协议的深奥秘密的世界,我还是个新手。

我认为可能有用的是一个非常简单的代理示例,它可以连接到,然后它自己将尝试连接到传递给它的地址。

另外,我认为让我困惑的是隐藏的东西所做的一切,例如,如果类继承自BaseHTTPServer.BaseHTTPRequestHandler,那么当请求一个页面时会发生什么,就像我发现的许多示例中没有对path变量的引用一样,然后突然poof!self.path用于函数中。我假设它是被继承的,但是它怎么会以使用的路径结束呢?

很抱歉,如果这没什么意义的话,因为我对我的问题的看法可能被打乱了

如果你能想出任何能使我的问题更清楚的办法,请建议我加上。xxx公司

编辑:

另外,如果您能提供一个链接,说明代理处理请求、请求页面(此时如何读取/修改数据)并将其传递给原始请求者的详细过程,我们将不胜感激


Tags: pathhttp协议示例代理地址世界页面
3条回答

twistedWiki

from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import sys
log.startLogging(sys.stdout)

class ProxyFactory(http.HTTPFactory):
    protocol = proxy.Proxy

reactor.listenTCP(8080, ProxyFactory())
reactor.run()

“一个非常简单的代理示例,可以连接到它,然后它自己将尝试连接到传递给它的地址。”这实际上是HTTP代理的定义。

这里有一个简单的代理示例:http://effbot.org/librarybook/simplehttpserver.htm

它的核心只有3行:

class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.copyfile(urllib.urlopen(self.path), self.wfile)

因此,是一个SimpleHTTPRequestHandler响应GET请求,打开路径中的URL(对代理的请求通常看起来像“GEThttp://example.com/”,而不是“GET/index.html”)。然后它就把它能读到的所有内容从那个URL复制到响应中。

注意这是真正的最小值。我相信这根本不涉及标题。

顺便说一句:pathhttp://docs.python.org/library/basehttpserver.html有记录。它是在调用do*方法之前设置的。

proxpy看起来很有前途,调整请求和响应非常简单。

相关问题 更多 >