Windows
PowerShell
docker
Basic認証
proxy

認証ありプロキシに対して認証を行う認証なしプロキシの構築スクリプト

TL;DR

認証ありプロキシに対して認証を行う認証なしリバースプロキシを簡単に構築できるスクリプト(Windows用)を作ったので紹介します。

これは何か?

会社などで外部インターネットへのアクセスを制限するために使用されている認証ありプロキシ1はソフトウェア開発を行う上で障害となることが多々あります。2
その忌まわしい認証を代理で行ってくれるリバースプロキシをWindowsに構築できるスクリプトを作りました。
これを使えば認証プロキシ環境下でも認証なしプロキシが利用できるようになり、幸せになれます:innocent:

必要なもの

極力環境依存が無いように作りましたが、動かない環境もあるかもしれないです。

  • Windows7 または Windows10 (PowerShellが使えるWindows)
  • Docker Toolbox

使い方

  1. Docker Toolboxをインストール
  2. https://github.com/k-ishigaki/proxy-proxy からzipファイルをダウンロード(git cloneでも良いです)
  3. zipファイルを解凍した中のrun.batをダブルクリック
  4. 認証プロキシ情報を入力
  enter proxy host: 123.456.789.012
  enter proxy port: 8888
  enter proxy user: k-ishigaki
  enter proxy pass: **********

スクリプトが動作し終わったら、localhost:8080が認証なしのプロキシとして使えるようになるはずです。

参考

Dockerfileは下記を参考にしました。
やっていることの仕組みも図で書いてあるのですごくわかりやすいです。
認証ありプロキシを認証なしにするDockerコンテナ

苦労した点

PowerShellは初だったということもあり、記号が入っているパスワードをエンコードしてDockerに渡す部分に苦労しました。
PowerShellはURLエンコード、Base64エンコード、Dockerfileはalpineのapkのプロキシ設定、Base64デコード、squidの認証情報設定あたりの試行錯誤が多かったです。
正直PowerShellは当分書きたくないと思いました…。:sweat:

その他

Qiita初投稿なので不足しているところがあると思います。
疑問点、不具合などあればコメントいただけると嬉しいです。



  1. この記事ではBasic認証付きフォワードプロキシを指す。 

  2. 例えば、Java8から認証プロキシがデフォルトで通らなくなっている、など。(JavaでHTTPSのサイトに認証付きプロキシ経由でアクセスしようとすると407エラー)