python - 非常简单的python HTTP代理?

标签 python http proxy

我到处寻找,发现数百万个 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/

相关文章:

python - 如何使用 importlib 在 python 中动态导入模块?

python - Python 2.7中的OpenCV 3在使用Brute-Force Matcher时出现错误

http - http中不发送content-type有什么问题?

javascript - 从 Firefox 扩展与服务器通信

android - 空指针异常 : HTTP Entity

python - 如何使用 suds (Python) 对 HTTP 代理进行身份验证?

javascript - 使用 Nodejs 的推送器无法在代理网络下工作

python - 不明白为什么我不断收到有关不支持的操作数类型的 TypeError

java - 在 IncationHandler 中设置被代理对象的实例变量

python - 制作对象的非阻塞版本的 Pythonic 方法是什么?