HTTPリクエストをSOCKSプロキシサーバーへプロキシする方法をDockerで構築してみた

HTTPプロキシサーバをDockerで構築してみました。IPアクセス制限された環境に、HTTPプロキシ→SOCKSプロキシ経由でアクセスできるようになります。
2020.08.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

データアナリティクス事業本部の藤川です。

Polipoを使用してHTTPリクエストをSOCKSプロキシサーバーへプロキシする方法を試してみる

のHTTPプロキシサーバをDockerで構築してみました。IPアクセス制限された環境に、HTTPプロキシ→SOCKSプロキシ経由でアクセスできるようになります。

余計なアプリケーションをインストールしたくない私としては、この記事を見て、コンテナ化したくなりました。 ローカル環境に他のアプリケーションをインストールする必要はありません。Dockerをインストールするだけです。 しかも、2ファイル用意するだけですし、1-2分でHTTPプロキシサーバが立ち上がります。

http_socks_proxy

参考にしたのは次の記事です。

- Polipoを使用してHTTPリクエストをSOCKSプロキシサーバーへプロキシする方法を試してみる - AWS CLIでプロキシサーバを使う場合の注意 - (小ネタ)SOCKSプロキシとSSH踏み台サーバ経由でSSHする

前提環境

  • Dockerがインストールされていること

準備

設定ファイルを作成

Docker用のファイルを2ファイル用意します。

  • Dockerfileファイル
FROM ubuntu:latest

RUN apt update && apt install -y polipo
COPY polipo.conf /tmp/polipo.conf

EXPOSE 8080
ENTRYPOINT ["polipo", "-c", "/tmp/polipo.conf"]
  • polipo.confファイル socksParentProxyパラメータにSOCKSプロキシサーバのIPアドレスを指定してください。
proxyAddress=0.0.0.0
proxyPort=8123

socksParentProxy="172.31.10.105:1080"
socksProxyType=socks5

使用方法

Dockerコンテナを起動

1.Dockerイメージを作成します。

docker build -t http_socks_proxy/local  .

2.Dockerコンテナを起動します。HTTPプロキシをlocalhost:8080でホストしています。

docker run --rm -d --name http_socks_proxy -p 8080:8123 http_socks_proxy/local

AWS CLIを試す

1.ローカル環境で環境変数を設定します。

  • Linux または macOS
export HTTP_PROXY=localhost:8080
export HTTPS_PROXY=localhost:8080
  • Windows
setx HTTP_PROXY=localhost:8080
setx HTTPS_PROXY=localhost:8080

2.AWS CLIコマンドを実行します。

aws ec2 describe-regions --region ap-northeast-1 | head -5

Dockerコンテナを停止(コンテナ削除)

1.使い終わったらDockerコンテナを停止します。--rmオプション付きで起動していますので、停止するとコンテナは削除されます。

docker stop http_socks_proxy

さいごに

非常に簡単です。Dockerにすると、ローカル環境を汚さないので助かります。