我到处寻找,发现数百万个 python 代理服务器,但没有一个能完全符合我的要求(我认为 :s)
我对 python 有相当多的经验,但我对 HTTP 协议(protocol)的深奥秘境还是很陌生。
我认为可能有用的是一个非常简单的代理示例,它可以连接到然后自己尝试连接到传递给它的地址。
另外,我认为让我感到困惑的是隐藏的东西所做的一切,例如。如果该类从 BaseHTTPServer.BaseHTTPRequestHandler 继承,那么在请求页面时究竟会发生什么,就像在我发现的许多示例中一样,没有对路径变量的引用,然后突然噗! self.path 在函数中使用。我假设它已被继承,但它最终如何使用所使用的路径?
如果这没有多大意义,我很抱歉,因为我对我的问题的想法可能被打乱了:(
如果您能想到任何可以使我的问题更清楚的事情,请建议我添加它。 xxx
编辑:
此外,非常感谢代理处理请求、请求页面(此时如何读取/修改数据)并将其传递给原始请求者的详细过程的解释链接 xxxx
最佳答案
“一个非常简单的代理示例,可以连接到它,然后它自己会尝试连接到传递给它的地址。”这实际上是 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(对代理的请求通常看起来像“GET http://example.com/”,而不像“GET/index.html”)。然后它只是将它可以从该 URL 读取的任何内容复制到响应中。
请注意,这是真正最小的。我相信它根本不处理标题。
顺便说一句:path
记录在 http://docs.python.org/library/basehttpserver.html .它是在调用 do*
方法之前设置的。
关于python - 非常简单的python HTTP代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412581/