Answers:
Perl和Python(可能还有Ruby)都有简单的工具包,可用于快速构建简单的HTTP代理。
在Perl中,使用HTTP :: Proxy。这是文档中的三行示例。添加过滤器以过滤,记录或重写请求或响应;有关示例,请参见文档。
use HTTP::Proxy;
my $proxy = HTTP::Proxy->new( port => 3128 );
$proxy->start;
在Python中,使用SimpleHTTPServer。这是从effbot稍微改编的一些示例代码。修改do_GET
方法(或其他方法)以过滤,记录或重写请求或响应。
import SocketServer
import SimpleHTTPServer
import urllib
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
self.copyfile(urllib.urlopen(self.path), self.wfile)
httpd = SocketServer.ForkingTCPServer(('', 3128), Proxy)
httpd.serve_forever()
这可能不是最好的解决方案,但是如果您使用任何代理,那么它将具有特定的功能,host:port
因此netcat解决方案仍然可以使用,尽管您必须挑选代理元数据才能理解它。
最简单的方法可能是使用任何随机的匿名代理,然后通过引导所有流量netcat
。(即,将浏览器代理设置为localhost:port
,然后将数据转发到真实代理。)
如果您想拥有本地代理,那么ssh -D <port> localhost
最简单的选择是SOCKS5代理。显然,您需要告诉浏览器使用“袜子”代理而不是“ http”代理。
因此,如下所示(假设您的本地计算机接受传入的ssh连接):
ssh -fN -D 8000 localhost
nc -l 8080 | tee capturefile | nc localhost 8000
自然,这仅适用于一次浏览器连接尝试,然后退出,并且我没有尝试将返回数据转发到浏览器,因此您将需要完整的netcat
解决方案。
root
用户等
ssh -fN -D ...
在localhost
port 上启动SOCKS5代理8000
,但是怎么nc -l ...
办?并且,我应将浏览器指向哪个端口:8000
或8080
?
nc
命令接受来自端口8080的所有流量并将其转发到8000。我没有提供完整的netcat
解决方案,因为您的帖子建议您已经知道如何执行此操作。