我到处寻找并发现了数百万个 python 代理服务器,但没有一个完全符合我的要求(我认为:s)
一般来说,我对 python 有相当多的经验,但我对 HTTP 协议的深层秘密世界还很陌生。
我认为可能有用的是一个非常简单的代理示例,它可以连接到,然后它本身会尝试连接到传递给它的地址。
另外,我认为让我感到困惑的是隐藏的东西所做的一切,例如如果该类继承自 BaseHTTPServer.BaseHTTPRequestHandler ,当请求页面时会发生什么,就像在我发现的许多示例中一样,没有对路径变量的引用,然后突然噗! self.path 在函数中使用。我假设它已被继承,但它最终如何得到所使用的路径?
如果这没有多大意义,我很抱歉,因为我对问题的想法可能是混乱的:(
如果您能想到任何能让我的问题更清楚的事情,请建议我添加它。 xxx
Edit:
另外,如果有一个链接来解释代理处理请求、请求页面(此时如何读取/修改数据)并将其传递给原始请求者的详细过程,我们将不胜感激 xxxx
“一个非常简单的代理示例,可以连接到,然后它本身会尝试连接到传递给它的地址。”这实际上就是 HTTP 代理的定义。
有一个really简单的代理示例在这里:http://effbot.org/librarybook/simplehttpserver.htm http://effbot.org/librarybook/simplehttpserver.htm
它的核心只有三行:
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
self.copyfile(urllib.urlopen(self.path), self.wfile)
所以这是一个SimpleHTTPRequestHandler
为了响应 GET 请求,打开路径中的 URL(对代理的请求通常类似于“GEThttp://example.com/ http://example.com/”,不像“GET /index.html”)。然后它只是将从该 URL 读取到的所有内容复制到响应中。
请注意,这是really最小。我相信它根本不处理标题。
BTW: path
记录于http://docs.python.org/library/basehttpserver.html http://docs.python.org/library/basehttpserver.html。它是在你之前设置的do*
方法被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)