一日目
SOCKSプロキシが非常に厄介である。
これはHTTPプロキシのようにホストとポートを指定してハイ終わりというわけにはいかない。
まずアプリケーションがSOCKSプロキシでの通信に対応している必要があるのだ。
しかしほとんどのソフトはSOCKSプロキシの設定に対応していないので、FreeCapやSocksCapなどでアプリケーションの通信を全部SOCKSプロキシに転送しなければならない。
またHTTPプロキシに対応しているソフトの場合は、HTTPのパケットをカプセル化してSOCKSプロキシに送ることで解決することもできる。
自分はTorのようにランダムな繋ぎ替えとカスケード接続がしたかったので、ランダムな繋ぎ替えができない前者のソフトを利用するのはやめた。
HTTPプロキシではランダムな繋ぎ変えなど普通にありふれた機能であるため、簡単に見つかるだろうと思っていたのだ。
しかしそこが読み違いであり、
・HTTPパケットをカプセル化してSOCKSプロキシに流せて
・ランダムな繋ぎ替えができ
・カスケード接続にも対応できる
ローカルプロキシは今のところ見つかっていない。
カスケード接続は匿名性が上がるか下がるかの問題だから妥協できるとして、ランダムな繋ぎ替えに関しては非常に譲れない問題だったりする。
できれば汎用性があるローカルプロキシを使いたかったが、現状でSOCKSプロキシを経由させたいのは自作ネットワーククライアントだけなので、クライアント自体をSOCKSに対応させることにした。
ここでもまた問題が生じた。
まずPerlのLWP::UserAgentがSOCKSに対応していなかったのだ。
LWP::Protocol::http::socksなんてそのものズバリなモジュールも入れてみたが、うまくいかない。
とりあえずJavaで
System.getProperties().put("socksProxyHost", host);
System.getProperties().put("socksProxyPort", port);
を指定してやることで今のところ耐えている。
これだとマルチスレッドのなのに一番同期させたくないSOCKSプロキシの設定が同期されてしまいうっとおしい。
これはもっと低レベルなところまで立ち返ってソケットを自分で作れってことか?
素人がネットワークプログラミングなんてやるもんじゃないってことだね。
なまじ「理論的にに可能」なことが判断できちゃうから、あきらめもつかない。
これはHTTPプロキシのようにホストとポートを指定してハイ終わりというわけにはいかない。
まずアプリケーションがSOCKSプロキシでの通信に対応している必要があるのだ。
しかしほとんどのソフトはSOCKSプロキシの設定に対応していないので、FreeCapやSocksCapなどでアプリケーションの通信を全部SOCKSプロキシに転送しなければならない。
またHTTPプロキシに対応しているソフトの場合は、HTTPのパケットをカプセル化してSOCKSプロキシに送ることで解決することもできる。
自分はTorのようにランダムな繋ぎ替えとカスケード接続がしたかったので、ランダムな繋ぎ替えができない前者のソフトを利用するのはやめた。
HTTPプロキシではランダムな繋ぎ変えなど普通にありふれた機能であるため、簡単に見つかるだろうと思っていたのだ。
しかしそこが読み違いであり、
・HTTPパケットをカプセル化してSOCKSプロキシに流せて
・ランダムな繋ぎ替えができ
・カスケード接続にも対応できる
ローカルプロキシは今のところ見つかっていない。
カスケード接続は匿名性が上がるか下がるかの問題だから妥協できるとして、ランダムな繋ぎ替えに関しては非常に譲れない問題だったりする。
できれば汎用性があるローカルプロキシを使いたかったが、現状でSOCKSプロキシを経由させたいのは自作ネットワーククライアントだけなので、クライアント自体をSOCKSに対応させることにした。
ここでもまた問題が生じた。
まずPerlのLWP::UserAgentがSOCKSに対応していなかったのだ。
LWP::Protocol::http::socksなんてそのものズバリなモジュールも入れてみたが、うまくいかない。
とりあえずJavaで
System.getProperties().put("socksProxyHost", host);
System.getProperties().put("socksProxyPort", port);
を指定してやることで今のところ耐えている。
これだとマルチスレッドのなのに一番同期させたくないSOCKSプロキシの設定が同期されてしまいうっとおしい。
これはもっと低レベルなところまで立ち返ってソケットを自分で作れってことか?
素人がネットワークプログラミングなんてやるもんじゃないってことだね。
なまじ「理論的にに可能」なことが判断できちゃうから、あきらめもつかない。