複数の広告アカウントを運営している場合、マーケットプレイスをパースしている場合、または海外のプラットフォームで作業している場合、すべてのトラフィックがプロキシを通過している状況に直面したことがあるでしょうが、実際には数サイトのためだけに必要です。その結果、速度が低下し、トラフィックの消費が増え、プロキシが「燃え尽きる」速度が速くなります。PACファイルはこの問題を解決します:どのサイトがプロキシを通過し、どのサイトが直接接続されるかを正確に指定できます。
PACファイルとは何か、なぜ必要か
PACはProxy Auto-Configurationの略で、プロキシの自動設定を意味します。基本的には、ブラウザやシステムの各リクエストに対して、トラフィックを直接送るかプロキシサーバーを通すかを決定するJavaScript関数を含む小さなテキストファイルです。
技術的に聞こえますが、実際には非常にシンプルなツールです。一度ルールを設定すれば、システムが自動的にそれを適用します。毎回手動でプロキシを切り替えたり、各サイトのために別のブラウザを持つ必要はありません。
実際に役立つ人:
- アービトラージャー — Facebook AdsやTikTok Adsで広告を運用していますが、他のトラフィック(メール、メッセンジャー、業務用サイト)がプロキシを通過して遅くなるのを避けたい。
- SMM専門家 — InstagramやTikTokで20〜50のアカウントを運営しており、各プロファイルには特定のプラットフォーム用のプロキシが必要です。
- マーケットプレイスのセラー — WildberriesやOzonの価格をパースしていますが、プロキシを通過するのはこれらのサイトへのリクエストだけにしたい。
- マーケティング担当者 — 異なる地域からの検索結果や広告を確認しながら、他の作業は実際のIPで行います。
PACファイルの最大の利点は、通常のプロキシ設定に対してトラフィックとリソースの節約ができることです。すべてのトラフィックがプロキシを通過すると、YouTube、Google Docs、Windowsの更新を含めて、毎メガバイトに対して支払うことになります。PACファイルを使用すると、本当に必要なものだけをプロキシを通過させることができます。
💡 重要なポイント
PACファイルは、すべての現代のブラウザ(Chrome、Firefox、Edge)、オペレーティングシステム(Windows、macOS、Linux)、およびほとんどのアンチデテクトブラウザでサポートされています。これは、すでに25年以上の歴史を持つ標準です。
PACファイルの動作:トラフィックのルーティングロジック
ブラウザやアプリケーションがURLを開こうとするたびに、PACファイルの関数が呼び出され、2つのパラメータ(URL自体とホスト名(ドメイン))が渡されます。関数はこれらのデータを分析し、次の3つの値のいずれかを返します:
DIRECT— 直接接続する、プロキシなし。PROXY host:port— 指定されたアドレスとポートのHTTPプロキシを使用する。SOCKS5 host:port— SOCKS5プロキシを使用する。
関数は接続が確立される前に瞬時に実行されます。ユーザーは遅延を感じません。ロジックは非常に複雑にすることができます:Facebookへのトラフィックを1つのプロキシを通過させ、TikTokへのトラフィックを別のプロキシを通過させ、その他は直接接続することができます。
こちらが簡略化された動作のフローです:
- ブラウザでfacebook.comを開く
- ブラウザがPACファイルの関数を呼び出す:"facebook.comへのリクエストをどこに送るか?"
- 関数がルールリストをチェックし、応答する:"PROXY 185.10.10.1:8080を使用"
- ブラウザがプロキシを通じてFacebookに接続する
- google.comを開く — 関数が応答する:"DIRECT"
- Googleがあなたの実際のIPで直接開かれる
このアプローチはスプリットトンネリングと呼ばれ、トラフィックの分離を意味します。これは企業ネットワークやVPNでの標準的なプラクティスですが、プロキシでの作業にはPACファイルがさらに適しています — 設定が簡単で、追加のソフトウェアをインストールする必要がありません。
PACファイルの構造:部分ごとに解析
PACファイルは、.pac拡張子を持つ通常のテキストファイルです。その中には、FindProxyForURLという名前の必須のJavaScript関数が1つ含まれています。ブラウザは各リクエストの際にこの関数を呼び出します。
基本的な構造は次のようになります:
function FindProxyForURL(url, host) {
// ルール 1: localhostの場合は常に直接接続
if (isPlainHostName(host)) {
return "DIRECT";
}
// ルール 2: ドメインがfacebook.comの場合はプロキシを通す
if (dnsDomainIs(host, "facebook.com")) {
return "PROXY 185.10.10.1:8080";
}
// ルール 3: その他のリクエストは直接接続
return "DIRECT";
}
よく使用する主要な組み込み関数を解説します:
| 関数 | 何をするか | 例 |
|---|---|---|
dnsDomainIs(host, ".example.com") |
ホストがドメインに属しているか確認します | facebook.comとすべてのサブドメインをキャッチします |
shExpMatch(host, "*.example.com") |
パターンマッチング(ワイルドカード) | ドメインマスクによる柔軟なフィルタリング |
isInNet(host, "10.0.0.0", "255.0.0.0") |
IPサブネットへの所属を確認します | IP範囲によるフィルタリングのために |
isPlainHostName(host) |
ホストがローカル名かどうかを確認します | localhost、printer、nas — 直接接続 |
localHostOrDomainIs(host, "...") |
ローカルホストまたはドメインを確認します | 内部ネットワークの例外用 |
重要な点:関数はルールを上から下へ処理し、最初の一致で停止します。したがって、ルールの順序は重要です — より特定的な条件を最初に配置し、最後にデフォルトの一般的なルールを配置します。
実際のタスクのためのPACファイルの実例
以下は、特定のタスクに対する4つの実用的なテンプレートです。必要なものをコピーし、プロキシのアドレスとポートを自分のデータに置き換えれば、ファイルは使用可能になります。
テンプレート 1: FacebookとInstagramのみをプロキシ経由で(アービトラージャー向け)
function FindProxyForURL(url, host) {
// ローカルアドレスは常に直接接続
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
host === "127.0.0.1") {
return "DIRECT";
}
// Facebookとそのすべてのサブドメインはプロキシを通す
if (dnsDomainIs(host, "facebook.com") ||
dnsDomainIs(host, "fbcdn.net") ||
dnsDomainIs(host, "fb.com")) {
return "PROXY 185.10.10.1:8080";
}
// Instagramは同じプロキシを通す
if (dnsDomainIs(host, "instagram.com") ||
dnsDomainIs(host, "cdninstagram.com")) {
return "PROXY 185.10.10.1:8080";
}
// その他は直接接続
return "DIRECT";
}
テンプレート 2: プラットフォームごとに異なるプロキシ(SMMエージェンシー向け)
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
// Instagramはレジデンシャルプロキシ #1を通す
if (dnsDomainIs(host, "instagram.com") ||
dnsDomainIs(host, "cdninstagram.com")) {
return "PROXY 91.200.10.5:3128";
}
// TikTokはレジデンシャルプロキシ #2を通す
if (dnsDomainIs(host, "tiktok.com") ||
dnsDomainIs(host, "tiktokcdn.com") ||
dnsDomainIs(host, "musical.ly")) {
return "PROXY 91.200.10.6:3128";
}
// VKは別のプロキシを通す
if (dnsDomainIs(host, "vk.com") ||
dnsDomainIs(host, "vk.me") ||
dnsDomainIs(host, "userapi.com")) {
return "PROXY 91.200.10.7:3128";
}
return "DIRECT";
}
テンプレート 3: WildberriesとOzonのパース(セラー向け)
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
// Wildberriesはプロキシを通す(価格のパース)
if (dnsDomainIs(host, "wildberries.ru") ||
dnsDomainIs(host, "wbstatic.net") ||
dnsDomainIs(host, "wb.ru")) {
return "PROXY 45.130.10.20:8080";
}
// Ozonはプロキシを通す
if (dnsDomainIs(host, "ozon.ru") ||
dnsDomainIs(host, "ozonusercontent.com")) {
return "PROXY 45.130.10.20:8080";
}
// Avitoはプロキシを通す
if (dnsDomainIs(host, "avito.ru") ||
dnsDomainIs(host, "avito.st")) {
return "PROXY 45.130.10.20:8080";
}
return "DIRECT";
}
テンプレート 4: SOCKS5プロキシとバックアップHTTP(冗長性)
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
// 目的のサイトはSOCKS5がメイン、HTTPがバックアップ
if (dnsDomainIs(host, "facebook.com") ||
dnsDomainIs(host, "instagram.com") ||
dnsDomainIs(host, "tiktok.com")) {
// SOCKS5が利用できない場合は自動的にHTTPに切り替わる
return "SOCKS5 185.10.10.1:1080; PROXY 185.10.10.1:8080; DIRECT";
}
return "DIRECT";
}
💡 バックアッププロキシについて
行は"SOCKS5 ...; PROXY ...; DIRECT" — これはバックアップのチェーンです。最初のプロキシが利用できない場合、ブラウザは自動的に次のプロキシを試み、その後直接接続を試みます。非常に重要なタスクに便利で、ダウンタイムを許可できない場合に役立ちます。
ブラウザとシステムでPACファイルを接続する方法
PACファイルを接続する方法は2つあります:コンピュータ上のローカルファイルを通じて、またはURLを通じて(ファイルがサーバーに配置されている場合)。ほとんどのタスクにはローカルファイルで十分です。
ステップ 1: PACファイルを作成する
任意のテキストエディタ(Notepad、Notepad++、VS Code)を開き、上記のテンプレートからコードを貼り付けます。.pac拡張子でファイルを保存します。例えば:proxy_rules.pac。推奨される保存場所:C:\proxy\proxy_rules.pac(Windows)または/Users/username/proxy/proxy_rules.pac(macOS)。
ステップ 2: Windows 10/11での接続
- 設定 → ネットワークとインターネット → プロキシを開く
- 「スクリプト設定を使用する」セクションでスイッチをオンに切り替えます。
- 「スクリプトのアドレス」フィールドにファイルのパスを次の形式で入力します:
file:///C:/proxy/proxy_rules.pac - 保存をクリックします。
- ブラウザを再起動します。
ステップ 3: macOSでの接続
- システム環境設定 → ネットワークを開く
- アクティブなネットワーク接続(Wi-FiまたはEthernet)を選択し、詳細をクリックします。
- プロキシタブに移動します。
- プロキシの自動設定にチェックを入れます。
- URLフィールドに次のように入力します:
file:///Users/username/proxy/proxy_rules.pac - OK → 適用をクリックします。
ステップ 4: Google Chromeでの接続(システムとは別に)
Chromeはシステムのプロキシ設定を使用しますが、コマンドラインオプションを通じて別のPACファイルで起動することもできます。これは、ChromeだけがPACを通じて動作し、他のアプリケーションはそうでないようにしたい場合に便利です。
Chromeのショートカットを作成し、「ターゲット」フィールドの末尾に次を追加します:
--proxy-pac-url="file:///C:/proxy/proxy_rules.pac"
ステップ 5: Firefoxでの接続
- 設定 → 一般 → ネットワーク設定 → 設定を開きます。
- プロキシの自動設定URLを選択します。
- パスを入力します:
file:///C:/proxy/proxy_rules.pac - OKをクリックします。
アンチデテクトブラウザにおけるPACファイル:Dolphin、AdsPower、GoLogin
アービトラージャーやSMM専門家にとって、アンチデテクトブラウザで作業する際にPACファイルは追加の可能性を開きます。プロファイル全体に1つのプロキシを割り当てるのではなく、ブラウザのプロファイル内で柔軟なルーティングを設定できます。
Dolphin Anty
Dolphin Antyでは、PACファイルはプロファイルレベルで接続されます。プロファイルを作成または編集する際に、プロキシセクションでPACスクリプトタイプを選択し、URLまたはファイルへのパスを指定します。これにより、1つのプロファイルが異なるサイトに対して異なるプロキシを使用できるようになります — 例えば、Facebookはモバイルプロキシを通し、その他は直接接続します。
実際のシナリオ:あなたは10のFacebook広告アカウントを持っています。Dolphinの各プロファイルにPACファイルを接続し、FacebookとInstagramのドメインのみをプロキシを通過させます。残りのトラフィック(拡張機能のダウンロード、更新)は直接接続され、プロキシのトラフィックを最大70%節約します。
AdsPower
AdsPowerでは、プロファイル設定のプロキシ設定セクションにPAC URLを入力するフィールドがあります。PACファイルのアドレスを指定します — ローカルにある場合は、シンプルなローカルHTTPサーバーに配置し(例えば、Pythonを使用して:python -m http.server 8000)、http://localhost:8000/proxy_rules.pacのアドレスを指定します。
GoLogin
GoLoginは、プロファイル設定のプロキシURLフィールドを通じてPACファイルをサポートしています。構文は同様で、ファイルへの完全なURLを指定します。GoLoginは、プロキシ設定のテンプレートを保存し、複数のプロファイルに一括適用することも可能で、大量のアカウントを扱う際に便利です。
MultiloginとOcto Browser
両方のブラウザはURLを通じてPAC構成をサポートしています。Multiloginでは、プロファイル → プロキシ → カスタムプロキシセクションで設定します。Octo Browserでも同様に、プロファイル設定でプロキシタイプPACを選択し、ファイルへのリンクを指定します。
🔧 アンチデテクトブラウザのためのライフハック
PACファイルを無料ホスティング(GitHub Pages、Pastebin RAW、Cloudflare Workers)に配置します — これにより、ローカルサーバーは不要になり、ファイルはどのプロファイルからでも、どのデバイスからでもアクセス可能になります。また、1か所でルールを更新でき、変更はすべてのプロファイルに即座に適用されます。
PAC構成に適したプロキシの種類
PACファイルは任意のプロキシタイプで動作しますが、異なるタスクには異なるオプションが適しています。以下は、選択を助ける比較表です:
| プロキシタイプ | 最適な用途 | PACでのプロトコル | 速度 |
|---|---|---|---|
| レジデンシャル | Facebook Ads、Instagram、TikTok — 厳しいアンチフロード保護を持つソーシャルメディア | PROXY、SOCKS5 | 中程度 |
| モバイル | アカウントのファーミング、アプリのモバイルバージョンでの作業 | PROXY、SOCKS5 | 中程度 |
| データセンター | マーケットプレイスのパース、価格の監視、SEOタスク | PROXY、SOCKS5 | 高速 |
Facebook AdsやInstagramをPAC構成で使用する場合、アービトラージャーは通常、レジデンシャルプロキシを選択します — これらは実際の家庭ユーザーのIPを持ち、プラットフォームのアルゴリズムによる疑念を引き起こすことが非常に少ないです。
InstagramやTikTokのアカウントをモバイルデバイスやアンチデテクトブラウザのモバイルプロファイルを通じて運営している場合は、モバイルプロキシに注目してください — これらは実際のモバイルネットワークを通じて動作し、これらのプラットフォームに最も「クリーン」なトラフィックを提供します。
Wildberries、Ozon、またはAvitoのパースタスクでは、速度とリクエスト数が重要であるため、データセンターのプロキシが最適な選択となります — これらはより高速で、単位時間あたりのリクエスト数を増やすことができます。
PACファイルでの認証設定
プロキシがログインとパスワードを必要とする場合、PACファイルにそれらを指定する必要はありません — これは安全ではなく、ファイルが読まれる可能性があるためです。認証はブラウザによって別に処理されます:最初の接続時に認証情報を要求し、それを保存します。あるいは、IPによる認証のプロキシを使用してください — その場合、ログイン/パスワードは全く必要ありません。
よくあるエラーとその修正方法
PACファイルを設定する際のほとんどの問題は、いくつかの典型的なエラーに関連しています。それぞれを解説し、解決策を示します。
エラー 1: PACファイルが適用されない
症状:ファイルのパスを指定しましたが、トラフィックが直接または古い設定を通過しています。
原因と解決策:
- ファイルのパスが間違っています。形式を確認してください:Windowsでは
file:///C:/path/file.pac(file:の後にスラッシュが3つ)である必要があります。 - ブラウザが古い設定をキャッシュしています。ブラウザを完全に閉じて再度開いてください。
- Windowsではグループポリシーが干渉する可能性があります。gpedit.msc → コンピュータの構成 → 管理用テンプレート → Windowsコンポーネント → Internet Explorerで確認してください。
エラー 2: すべてのトラフィックがプロキシを通過し、必要なものだけではない
症状:速度が低下し、インターネット全体が遅くなっています。
原因:関数の最後にreturn "PROXY ..."があり、return "DIRECT"ではありません。
解決策:関数の最後の行がreturn "DIRECT";であることを確認してください。これは、前の条件に該当しないすべてのデフォルトルールです。
エラー 3: サブドメインがルールに該当しない
症状:facebook.comのルールは機能しますが、static.facebook.comやm.facebook.comは機能しません。
原因:関数dnsDomainIsは、ドメインとそのすべてのサブドメインの正確な一致を確認しますが、ドメインの前にドットを指定した場合のみです。
解決策:dnsDomainIs(host, "facebook.com")を使用してください — この関数は自動的にすべてのサブドメインをキャッチします。あるいは、各サブドメインのために別々の行を追加します。
エラー 4: JavaScriptの構文エラー
症状:PACファイルが全く機能せず、ブラウザが無視します。
解決策:オンラインツールPACファイルデバッガーでファイルを確認するか(Googleで検索)、コードをブラウザのコンソールに貼り付けて(F12 → コンソール) — JavaScriptエラーがすぐに表示されます。最も一般的な問題は、括弧やセミコロンの見落としです。
エラー 5: PACファイルがHTTPSサイトで機能しない
症状:HTTPサイトはプロキシを通過しますが、HTTPSサイトはそうではありません。
原因:HTTPSの場合、ブラウザはCONNECTメソッドを通じてトンネルを確立します。一部のHTTPプロキシはCONNECTをサポートしていません。
解決策:HTTPの代わりにSOCKS5プロキシを使用してください — これは両方の接続タイプをサポートします。PACファイルではPROXYをSOCKS5に置き換えます。
PACファイルのチェックリスト
- ✅ 関数名は正確に
FindProxyForURL(大文字小文字を区別) - ✅ 関数は2つのパラメータを受け取ります:
urlとhost - ✅ すべての波括弧が閉じられています
- ✅ 関数の最後に
return "DIRECT";があります - ✅ プロキシのアドレスは
IP:PORT形式で、スペースなし - ✅ ファイルはUTF-8エンコーディングで保存されています
- ✅ 設定のファイルパスは
file:///から始まります - ✅ 変更後にブラウザが再起動されています
結論と推奨事項
PACファイルは、プロキシを専門的に扱う人々にとって最も過小評価されているツールの1つです。トラフィックの節約、他のインターネットの速度の保持、手動での設定切り替えなしでの柔軟なルーティング管理など、複数の問題を同時に解決します。
アービトラージャーにとって、PACファイルとアンチデテクトブラウザ(Dolphin Anty、AdsPower、GoLogin)の組み合わせは、Facebook AdsやTikTok Adsのトラフィックのみをプロキシを通過させ、余分なバイトを一切使用しないように設定できます。SMM専門家にとっては、1つのシステム内でInstagram、TikTok、VKのための異なるプロキシを使用できます。マーケットプレイスのセラーにとっては、余分な負荷なしでWildberriesとOzonを正確にパースできます。
最も重要なことは、PACファイルは単なる数行のコードを含むテキストファイルであるということです。恐れる必要はありません。この記事からの準備されたテンプレートの1つを取り、自分のプロキシデータを挿入すれば、10分でトラフィックの柔軟なルーティングが設定されます。
Facebook Ads、Instagram、またはTikTokをPAC構成で使用する予定がある場合は、レジデンシャルプロキシを使用することをお勧めします — これにより、プラットフォームからの信頼度が最も高く、PACファイルを通じてルーティングを正しく設定した場合のブロックリスクが最小限に抑えられます。