プロキシ PAC (馬から落ちて落馬した的な?)をいまさらながら作ってみた。
内部サーバの名前解決の関係や自宅から実家のアドレスを利用して外にでたいときなどブラウザのプロキシ設定を変更したい時がある。これをそれぞれの PC のそれぞれのブラウザでやってしまうとどんな変更を行ったか忘れてしまうので一元管理を行う意味でプロキシ自動構成ファイルを設定してみる。
apache の設定
AddType application/x-ns-proxy-autoconfig .pac .pa .pace .dat .da
PAC ファイルの作成
ここの例 3 をそのまま使わせてもらう。プロキシのアドレスとポート番号は実際のものに変更する。
ちなみに、PAC のファイル名には拡張子 pac が必要。今回は proxy.pac とする。
function FindProxyForURL(url, host) { if (isResolvable(host)) return "DIRECT"; else return "PROXY proxy:80"; }
テストツール
作成した PAC ファイルをテストするツールがあったので使ってみた。
テストツール pactester のインストール
pacparser というパッケージの中の pactester コマンドを利用する。fedora 用パッケージは作成されていないようなので自分でビルドする必要がある。
# python3 -m pip install pacparser
でいけるはずだが、当方の環境ではうまくできなかったので git 上のソースから作成した。
ソースの入手。
# wget https://github.com/manugarg/pacparser/archive/refs/tags/v1.4.3.zip
展開。
# unzip v1.4.3.zip
ビルド。
# make -C src
インストール。これで pactester コマンドがインストールされる。
# make -C src install
python モジュールのインストール
必要な人は以下のコマンドを実行して python 用のモジュールをインストールする。
ただし、私の環境ではビルドするために以下のコマンドを実行しておく必要があった。
# cd /usr/bin # ln -s python3 python
ビルド。
# make -C src pymod
インストール。これで pactester コマンドがインストールされる。
# make -C src install-pymod
pactester の使い方
# pactester pactester.c: You didn't specify the PAC file Usage: pactester <-p pacfile> <-u url> [-h host] [-c client_ip] [-e] pactester <-p pacfile> <-f urlslist> [-c client_ip] [-e] Options: -p pacfile : PAC file to test (specify '-' to read from standard input) -u url : URL to test for -h host : Host part of the URL -c client_ip : client IP address (as returned by myIpAddres() function in PAC files), defaults to IP address on which it is running. -e : Deprecated: IPv6 extensions are enabledby default now. -f urlslist : a file containing list of URLs to be tested. -v : print version and exit #
さきほどの PAC で試してみる。
# pactester -p proxy.pac -u https://www.google.co.jp/ DIRECT # pactester -p proxy.pac -u https://aaa.bbb/ PROXY proxy:80 #
コメント