回答:
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()
これは最善の解決策ではないかもしれませんが、プロキシを使用する場合は特定のものにhost:port
なるため、Netcatソリューションは引き続き機能しますが、それを理解するにはプロキシメタデータを分解する必要があります。
これを行う最も簡単な方法は、ランダムな匿名化プロキシを使用し、すべてのトラフィックをに通すことnetcat
です。(localhost:port
つまり、ブラウザプロキシをに設定し、データを実際のプロキシに転送します。)
ローカルプロキシが必要な場合は、SOCKS5プロキシを使用するのssh -D <port> localhost
がおそらく最も簡単なオプションです。明らかに、「http」プロキシではなく「socks」プロキシを使用するようにブラウザに指示する必要があります。
したがって、次のようなものです(ローカルマシンが着信ssh接続を受け入れる場合):
ssh -fN -D 8000 localhost
nc -l 8080 | tee capturefile | nc localhost 8000
当然、これは1回のブラウザ接続試行でのみ機能し、その後終了します。返されたデータをブラウザに転送することは試みていないため、完全なnetcat
ソリューションが必要です。
root
など、ユーザー
ssh -fN -D ...
SOCKS5プロキシを開始することを知っていますが、何をしますか?そして、どのポートにブラウザをポイントする必要がありますか:または?localhost
8000
nc -l ...
8000
8080
nc
コマンドは、ポート8080からのすべてのトラフィックを受け入れ、私は完全な提供していない8000に転送しnetcat
、あなたのポストはすでにその部分を行う方法を知っていたので、提案ソリューションを。