3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PACファイル (プロキシ自動設定ファイル)とは

Posted at

1. はじめに

社用パソコンでネットワークに接続するためにPACファイルの使用を求められましたが、中身の理解はできていませんでした。
そこで、PACファイルについて調べた内容を記事としてまとめます。

2. PACファイルとは

PACファイル(プロキシ自動設定ファイル)は、Webブラウザの動作を指定する設定ファイルであり、特定のプロキシサーバを経由してアクセスするかどうかを指定するためのものです。このファイルでは、ホスト名やURLに基づいて直接アクセスとプロキシ経由の使い分けが可能です。一般的なファイル拡張子は「.pac」です。

補足するとプロキシサーバは、WebブラウザがWebサーバにアクセスする際に中継してくれるサーバです。プライベートネットワークからインターネットへのアクセスなど、直接通信が難しい場合には、クライアントの代理(proxy)としてデータの送受信を行います。

3. PACファイルの具体例

スクリプトの処理内では、条件に合ったプロキシサーバーの宛先 (URL、もしくはIPアドレス) とポート番号を返します。

PAC ファイルを記載する場合は、必ず FindProxyForURL関数を記載する必要があります。PACファイルの処理時には、このFindProxyForURLの関数が実行されます。

FindProxyForURL 関数の第一引数である url はアクセス先の URL、第二引数である host はアクセス先の URL から取得したホスト名を表します。例えば、http://shuncask.com/ という URL にアクセスする際には、url が http://shuncask.com/ 、host が shuncask.com/ となります。これらの値を様々な関数を用い条件分けし、最終的に経由するサーバーを返す (return) するような処理を作成します。以下に PAC ファイルの具体例を挙げて、説明します。

function FindProxyForURL (url, host) {
 if (isPlainHostName (host)) {
    return "DIRECT";
  } else {
  if (shExpMatch(url, "http://shuncask.com/")) {
      return "PROXY shuncask-proxy.com:6060";
    } else if (shExpMatch(url, "http://www.microsoft.com/")) {
      return "PROXY microsoft-proxy.com:7070";
    } else {
      return "PROXY other-proxy.com:8080";
    }
  }
}

先述のPACファイルには、isPlainHostName関数とshExpMatch関数が含まれています。isPlainHostName関数は、引数のhostにピリオドが含まれていなければtrueを、含まれていればfalseを返す関数です。一方で、shExpMatch関数は文字列の部分比較を行い、第一引数の文字列が、シェル表現パターンを使用した第二引数の文字列にマッチする場合はtrueを、マッチしない場合はfalseを返します。

このPACファイルを用いて、例えば http://shuncask.com/ にアクセスした場合、戻り値としては shuncask-proxy.com というプロキシサーバーに 6060 番ポートでアクセスするよう指定されます。同様に、http://www.google.com/ にアクセスした場合の戻り値は www.other-proxy.com となり、プロキシサーバーには 8080 番ポートで接続されます。ブラウザでは、これらの戻り値に基づき、対応するプロキシサーバーへの接続を試み、接続が確立されるとHTTP通信がプロキシ経由で行われます。

また、hostにピリオドが含まれていない場合、isPlainHostNameがtrueとなり、return DIRECTが戻り値となります。IEでは、return DIRECTが返されると、プロキシサーバーを経由せずに直接接続が行われる動作になります。

4. おわりに

PACファイルについて理解を深めていただけたら幸いです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?