コマンドラインの汎用HTTPプロキシ(Squidなど)はありますか?


9

Netcat(またはSocat)を使用して、ブラウザーと特定のhost:port間のトラフィックを簡単にキャプチャできます。

しかし、Linuxの場合、HTTPクライアント(ブラウザまたはコマンドラインプログラムのいずれか)と任意のhost:port間のトラフィックをキャプチャするために使用できるSquidのようなHTTPプロキシに相当するコマンドラインはありますか?


回答:


8

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

これはまさに私が探していたソリューションの種類だと思います。ありがとう。
2012年

PythonはHTTPリクエストで機能しましたが、HTTPSリクエストをサポートしていないようです。
Russell Silva


6

これは最善の解決策ではないかもしれませんが、プロキシを使用する場合は特定のものに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ソリューションが必要です。


ありがとう。Linuxの匿名化プロキシの名前の提案はありますか?私は、(サイズ、メモリ、起動速度の面で)イカのようにヘビー級としてではないものを好む非によって始動可能となるrootなど、ユーザー
ハリー

また、SOCKS5プロキシの例には従いませんでした。上記の2つの呼び出しで何が起こっているのか説明していただけますか?私は、例えば、それがポートでssh -fN -D ...SOCKS5プロキシを開始することを知っていますが、何をしますか?そして、どのポートにブラウザをポイントする必要がありますか:または?localhost8000nc -l ...80008080
ハリー

2
匿名化プロキシの@harryは、privoxyを見てください
Ulrich Dangel

1
「匿名化プロキシ」と言っても、自分で設定したものではありません。ネット上の既存のプロキシを意味します。@UlrichDangelはprivoxyを提案しており、他にもあると確信しています。
ams

ncコマンドは、ポート8080からのすべてのトラフィックを受け入れ、私は完全な提供していない8000に転送しnetcat、あなたのポストはすでにその部分を行う方法を知っていたので、提案ソリューションを。
ams
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.