1秒で作る量産型Proxy Server


挨拶

こんにちは,いかがお過ごしでしょうか.

Proxy サーバを2,3作ってからというもの,それ以降のサーバ作りがめちゃくちゃめんどくさいし嫌になったので勢い余ってProxy Serverを作るgemを作りました.(こちらから)
(*今んところubuntuしか対応してないです、増やすかも)

で,タイトルがかなりイキってるんですがとりあえずこれさえすりゃ一瞬でProxyサーバができるよ!

というツールなのでそれ以外の用途があったりもっと作り込みたいみたいな人にはひょっとしたら不向きかもしれません.

とにかくシンプルさと即効性を求めたGemです.

1秒で作るProxy Sever

 server = Proproxy::Server.new(:ubuntu, 'xxx.xxx.xxx.xxx', 22)
 server.provision
 server.update_ip_table('yyy,yyy,yyy,yyy',zzz)

これでProxyサーバの出来上がりです(!?)

xxx.xxx.xxx.xxx にはproxyサーバにしたいサーバのIP

yyy.yyy.yyy.yyy には接続を許可するIP(wifi名とか) を入れればもうおしまいです.

zzz はport番号です,接続を許可するport番号を指定してください.

なので自分のwifiのIPとproxy serverにしたいサーバのIPさえわかれば,コピペしてenterで終わりです🎉(1秒は盛ったね !)

Proxy サーバ概要

proxy という言葉には 代理 とかいう意味があるらしく,平たくいうとインターネットにつなぐときにIPをwifiのIPからproxy server自体のIPに変更するための踏み台サーバのことです.

基本的な用途としてはやっぱりスクレイピングやセレニウムみたいなweb driverを使ってる時のIPバンされた時の対策とかですかね.

で、結局この Proproxy ってナニモン?というのは以下から↓↓↓↓

Proproxy

基本的に sshkit をラップしたもので,サーバには squid というサーバをインストールすることだけします.

Proproxy::Server#initiailizeを呼んだタイミングでssh接続を開始し, Proproxy::Server#provisionでsquidをインストールします.

provisionが終わって Proproxy::Server#update_ip_table でipの設定をするんですが、ここでipを間違えたりportとか間違えたりすると一生誰もログインできなくなります,悪しからず.

最終的なconfファイルの設定とかは 5分で作るPROXYサーバー を参考にしてます.

options

だいたいREADME に書いたんですが, squidの振る舞いをローカルから操作できるようにしました.

server.clear_squid_cache
server.stop_squid
server.start_squid
server.restart_squid

未実装なこと

ubuntuでしか使えない

まずubuntuで apt-get が使えるバージョンのものしかまだ使えてません.

ほんとはCentOSとかいい感じにやってみたかったんですが,めんどくさくてまだできていません.

間違えて追加したIPとかは手動でしか消せない

結構これは実装しないといけないなと思いながら全く実装できてないんですが,

何せshell scriptが全然できないので部分一致の行をいい感じに削除するとかどうやったらできるんだ(vimをexecuteするしかない気がしてるけどめんどくさそう.)

サーバの立ち上げからできたら嬉しい(かも)

個人的に DigitalOceanやVultrのVPSを使用しているんですがこれ,APIがめっちゃ充実しててかなり使いやすいです.

なので Proproxy::VPS::DigitalOcean.create みたいな感じでできるとひょっとして幸せかも..?

まあここはちょっとやりすぎ感もあります.

まとめ🖋

めちゃめちゃシンプルにproxy サーバを量産したり,シンプルに作りたい人には良いのではないか?

とおもう一方でもうちょっとローカルからの操作性を重視したいなと思います.

とりあえず僕個人としては Vultr APIをたたいてサーバ作ってIP取得して, Proproxy::Server.newに渡すということでProxyサーバ作成に関しては完全自動化することができました🎉

時間があったら未実装なやりたいことをちょこちょこアプデしていけたらなと思います.