Command-Line

是否有任何命令行、通用 HTTP 代理(如 Squid)?

  • September 26, 2020

我可以輕鬆地使用 Netcat(或 Socat)來擷取我的瀏覽器和特定主機:埠之間的流量。

但是對於 Linux,是否存在類似 Squid 的 HTTP 代理的命令行對應項,我可以使用它來擷取我的 HTTP 客戶端(瀏覽器或命令行程序)和任意主機:埠之間的流量?

Perl 和 Python(可能還有 Ruby)都有簡單的工具包,可以用來快速建構簡單的 HTTP 代理。

在 Perl 中,使用HTTP::Proxy。這是文件中的 3 行範例。添加過濾器以過濾、記錄或重寫請求或響應;有關範例,請參閱文件。

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()

引用自:https://unix.stackexchange.com/questions/38850