← Semua artikel

Apa Itu PAC Proxy? Cara Kerja Proxy Auto-Configuration

Diperbarui 28 Oct 2026

Kalau menggunakan proxy secara manual, biasanya kamu memasukkan satu alamat IP dan port lalu semua traffic yang mengikuti konfigurasi tersebut akan diarahkan melalui proxy. Tetapi bagaimana kalau hanya domain tertentu yang harus memakai proxy, sementara website internal harus tetap terhubung langsung?

Untuk kondisi seperti itu ada mekanisme bernama Proxy Auto-Configuration atau PAC.

Dengan PAC, browser atau aplikasi tidak hanya mendapatkan satu alamat proxy. Mereka mendapatkan sebuah file berisi aturan yang menentukan apakah setiap request harus menggunakan proxy tertentu atau menggunakan koneksi langsung.

Contohnya:

google.com → PROXY A internal.example.com → DIRECT *.company.com → DIRECT website lainnya → PROXY B

Karena sifatnya berbasis aturan, PAC banyak digunakan pada jaringan perusahaan, sekolah, organisasi, atau environment yang mempunyai kebijakan proxy lebih kompleks daripada sekadar satu IP dan port.

Kalau kamu masih belum familiar dengan proxy dasar, baca terlebih dahulu Apa Itu Proxy dan Apa Itu IP Proxy.

Apa Itu PAC Proxy?

PAC adalah singkatan dari Proxy Auto-Configuration.

PAC bukan jenis proxy baru seperti HTTP, SOCKS5, residential, atau datacenter proxy.

PAC adalah mekanisme konfigurasi yang menentukan proxy mana yang digunakan untuk suatu request, atau apakah request tersebut harus dilakukan secara langsung tanpa proxy.

Browser
→
PAC Rule
→
Proxy / DIRECT

Bagaimana Cara Kerja PAC?

File PAC berisi JavaScript function bernama:

FindProxyForURL(url, host)

Setiap kali browser ingin mengakses sebuah URL, function tersebut dijalankan.

Function kemudian mengembalikan hasil seperti:

DIRECT

atau:

PROXY proxy.example.com:8080

atau beberapa pilihan:

PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080; DIRECT

Apa Itu FindProxyForURL?

FindProxyForURL() adalah function utama dalam PAC.

Struktur paling dasar:

function FindProxyForURL(url, host) { return "PROXY proxy.example.com:8080"; }

Dengan konfigurasi tersebut, request akan diarahkan ke:

proxy.example.com:8080

Apa Arti Parameter url dan host?

Function menerima dua nilai utama.

Parameter Isi
url URL yang sedang diakses.
host Hostname dari URL tersebut.

Contohnya pengguna membuka:

https://www.example.com/products?id=10

Secara konsep PAC menerima:

url = https://www.example.com/... host = www.example.com

Rule kemudian dapat mengambil keputusan berdasarkan hostname atau informasi URL yang tersedia.

Apa Arti DIRECT?

DIRECT berarti request tidak menggunakan proxy.

return "DIRECT";
Browser
→
DIRECT
→
Website

Apa Arti PROXY?

PROXY berarti browser harus menggunakan HTTP proxy tertentu.

return "PROXY proxy.example.com:8080";
Browser
→
Proxy
→
Website

Bisakah PAC Menggunakan SOCKS?

Bisa, tergantung dukungan client.

return "SOCKS proxy.example.com:1080";

Beberapa browser juga mendukung format SOCKS tertentu. Untuk memahami jenis protokolnya, baca SOCKS5 Proxy.

PAC Bisa Menggunakan Lebih dari Satu Proxy

Salah satu fungsi menarik PAC adalah menyediakan beberapa pilihan proxy secara berurutan.

return "PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080; DIRECT";

Secara sederhana:

Proxy 1 ↓ gagal Proxy 2 ↓ gagal DIRECT

Dengan begitu client mempunyai fallback ketika proxy utama tidak dapat digunakan.

Apakah Urutan Proxy Penting?

Ya. Proxy yang ditulis lebih dulu menjadi pilihan utama sesuai perilaku client yang mendukung PAC.

PROXY singapore.example.com:8080; PROXY indonesia.example.com:8080; DIRECT

Dalam contoh tersebut proxy Singapura menjadi pilihan pertama.

Apa Itu PAC Fallback?

Fallback adalah pilihan alternatif apabila proxy sebelumnya tidak tersedia.

PROXY proxy-a:8080; PROXY proxy-b:8080; DIRECT

Proxy B menjadi fallback dari Proxy A, sedangkan DIRECT menjadi opsi terakhir.

Haruskah Selalu Menambahkan DIRECT?

Tidak.

Jika kebijakan jaringan mewajibkan seluruh traffic internet melalui proxy, menambahkan DIRECT sebagai fallback justru dapat melanggar policy.

DIRECT adalah keputusan policy. Jangan menambahkannya secara otomatis kalau koneksi langsung memang tidak diperbolehkan.

Contoh PAC Paling Sederhana

function FindProxyForURL(url, host) { return "PROXY proxy.example.com:8080"; }

Semua URL menggunakan proxy yang sama.

Contoh Bypass Localhost

function FindProxyForURL(url, host) { if (host === "localhost") { return "DIRECT"; } return "PROXY proxy.example.com:8080"; }

Localhost tidak dikirim melalui proxy.

Apa Itu isPlainHostName()?

PAC menyediakan helper function seperti:

isPlainHostName(host)

Function ini berguna untuk mengenali hostname lokal yang tidak mempunyai titik domain.

server01 printer01 intranet

Bypass Hostname Lokal

function FindProxyForURL(url, host) { if (isPlainHostName(host)) { return "DIRECT"; } return "PROXY proxy.example.com:8080"; }

Apa Itu dnsDomainIs()?

dnsDomainIs() membantu mencocokkan domain tertentu.

if (dnsDomainIs(host, ".company.local")) { return "DIRECT"; }

Rule seperti ini berguna untuk melewatkan internal domain tanpa proxy.

Contoh PAC untuk Domain Internal

function FindProxyForURL(url, host) { if ( isPlainHostName(host) || dnsDomainIs(host, ".company.local") ) { return "DIRECT"; } return "PROXY proxy.example.com:8080"; }

Apa Itu shExpMatch()?

shExpMatch() digunakan untuk mencocokkan pola sederhana.

if (shExpMatch(host, "*.example.com")) { return "DIRECT"; }

Contohnya dapat mencocokkan:

www.example.com api.example.com cdn.example.com

Memilih Proxy Berdasarkan Domain

function FindProxyForURL(url, host) { if (shExpMatch(host, "*.example-a.com")) { return "PROXY proxy-a.example.com:8080"; } if (shExpMatch(host, "*.example-b.com")) { return "PROXY proxy-b.example.com:8080"; } return "DIRECT"; }

Dengan pola seperti ini, satu browser dapat menggunakan proxy berbeda berdasarkan destination.

Butuh Proxy untuk Dicoba dengan Konfigurasi PAC?

GudangProxy menyediakan daftar proxy gratis yang dapat difilter berdasarkan negara, protokol, tingkat anonimitas, dan status koneksi. Pilih endpoint sesuai kebutuhan lalu gunakan pada environment testing atau jaringan yang memang kamu kelola.

Lihat Daftar Proxy Gratis →

Apa Itu isInNet()?

isInNet() digunakan untuk membuat keputusan berdasarkan network IPv4.

if (isInNet(host, "192.168.0.0", "255.255.0.0")) { return "DIRECT"; }

Contoh PAC untuk Jaringan Lokal

function FindProxyForURL(url, host) { if ( isPlainHostName(host) || isInNet(host, "192.168.0.0", "255.255.0.0") ) { return "DIRECT"; } return "PROXY proxy.example.com:8080"; }

Kenapa Jaringan Lokal Sering Di-bypass?

Resource seperti printer, NAS, router, intranet, dashboard internal, dan development server biasanya tidak perlu melewati internet proxy.

Contohnya:

192.168.1.1 192.168.1.10 server.company.local

Apa Itu dnsResolve()?

PAC juga mempunyai function:

dnsResolve(host)

Contoh:

var ip = dnsResolve(host);

Hasilnya dapat digunakan dalam rule berikutnya.

Hati-hati dengan DNS di PAC

DNS lookup dapat menambah proses evaluasi PAC.

Resolve DNS ↓ Evaluasi PAC ↓ Pilih Proxy

Jika rule domain berbasis string sudah cukup, tidak selalu perlu melakukan DNS resolution.

Apa Itu isResolvable()?

if (isResolvable(host)) { return "DIRECT"; }

Function ini mengecek apakah hostname bisa di-resolve.

PAC dan DNS Bukan Hal yang Sama

Sistem Fungsi
PAC Menentukan DIRECT atau proxy.
DNS Menerjemahkan hostname menjadi alamat IP.

Kalau ingin memahami DNS lebih jauh, baca Cara Kerja DNS.

PAC Bisa Memilih Proxy Berdasarkan Waktu?

PAC mempunyai helper seperti:

weekdayRange() dateRange() timeRange()

Rule dapat berubah berdasarkan hari atau waktu tertentu.

Contoh PAC Berdasarkan Jam

function FindProxyForURL(url, host) { if (timeRange(9, 17)) { return "PROXY office-proxy.example.com:8080"; } return "DIRECT"; }

Contoh ini hanya menunjukkan kemampuan PAC. Implementasi production harus disesuaikan dengan kebijakan jaringan.

PAC vs Manual Proxy

Aspek Manual Proxy PAC
Konfigurasi IP dan port File/URL berisi rule
Routing per domain Terbatas Bisa
Bypass Biasanya sederhana Lebih fleksibel
Multiple proxy Tergantung aplikasi Bisa
Fallback Tidak selalu Bisa

PAC vs Proxy Chain

PAC memilih proxy yang digunakan untuk request.

Request A → Proxy A Request B → Proxy B

Sementara proxy chain membuat satu request melewati beberapa proxy:

Client → Proxy A → Proxy B → Website

Baca pembahasan lengkap di Proxy Chain.

Beberapa PROXY yang dipisahkan semicolon di PAC biasanya merupakan fallback, bukan proxy chain.

PAC vs Rotating Proxy

Keduanya juga berbeda.

Konsep Fokus
PAC Memilih endpoint proxy.
Rotating Proxy Mengganti exit IP di belakang gateway.

Untuk mekanisme rotation, baca Rotating Proxy.

Bagaimana PAC Dipasang?

Biasanya file PAC disediakan melalui sebuah URL.

https://config.example.com/proxy.pac

URL tersebut kemudian dipasang pada browser, Windows, macOS, enterprise policy, atau aplikasi yang mendukung Proxy Auto-Configuration.

Contoh File PAC Lengkap

function FindProxyForURL(url, host) { // Local hostname if (isPlainHostName(host)) { return "DIRECT"; } // Internal domain if (dnsDomainIs(host, ".company.local")) { return "DIRECT"; } // Local network if (isInNet(host, "192.168.0.0", "255.255.0.0")) { return "DIRECT"; } // Default return "PROXY proxy.example.com:8080; DIRECT"; }

Kenapa PAC Banyak Digunakan Perusahaan?

Jaringan perusahaan biasanya mempunyai banyak jenis traffic.

Internet → Proxy Internal ERP → DIRECT Internal Git → DIRECT Partner Network → Special Proxy

PAC membuat aturan tersebut dapat dikelola secara terpusat.

Keuntungan PAC Terpusat

  • rule lebih mudah diperbarui,
  • tidak perlu mengganti setting satu per satu,
  • bisa membuat bypass domain,
  • bisa menentukan proxy berbeda,
  • bisa membuat fallback.

PAC dan Proxy Authentication

PAC hanya menentukan proxy mana yang digunakan. Authentication tetap ditangani oleh proxy dan client.

Contohnya proxy dapat membalas:

407 Proxy Authentication Required

Untuk memahami metode autentikasi proxy, baca Proxy Authentication.

Apakah Username dan Password Sebaiknya Ditulis di PAC?

Tidak.

File PAC sebaiknya dianggap sebagai konfigurasi yang bisa dibaca client. Jangan menggunakannya untuk menyimpan credential rahasia.

PAC dan HTTPS

Kalau PAC memilih HTTP proxy untuk URL HTTPS, alurnya dapat menjadi:

HTTPS URL ↓ PAC ↓ HTTP Proxy ↓ CONNECT ↓ TLS ↓ Website

PAC sendiri tidak melakukan encryption. PAC hanya menentukan jalur koneksi.

Apa Itu WPAD?

WPAD masih berkaitan dengan konfigurasi proxy otomatis, tetapi bukan hal yang sama dengan PAC.

Istilah Fungsi
PAC Berisi rule pemilihan proxy.
WPAD Membantu client menemukan konfigurasi proxy otomatis.

Kenapa PAC Tidak Bekerja?

Beberapa penyebab umum:

  • URL PAC salah,
  • server PAC tidak dapat diakses,
  • syntax JavaScript salah,
  • FindProxyForURL salah,
  • DNS bermasalah,
  • proxy offline,
  • browser masih memakai konfigurasi lama,
  • aplikasi tidak mendukung PAC.

Langkah Pertama Troubleshooting PAC

Buka URL PAC secara langsung:

https://config.example.com/proxy.pac

Pastikan file memang dapat diambil oleh perangkat.

Test PAC dengan DIRECT

function FindProxyForURL(url, host) { return "DIRECT"; }

Kalau koneksi kembali normal, kemungkinan masalah berada pada rule atau endpoint proxy.

Test Satu Proxy Saja

function FindProxyForURL(url, host) { return "PROXY proxy.example.com:8080"; }

Setelah itu cek endpoint proxy secara terpisah menggunakan panduan Cara Cek Proxy Aktif.

PAC Bisa Benar tetapi Proxy Mati

PAC ✓ Proxy ✕

Dalam kondisi tersebut periksa:

  • hostname/IP,
  • port,
  • protocol,
  • authentication,
  • firewall,
  • timeout.

PAC dan Proxy Timeout

Jika primary proxy gagal, client dapat membutuhkan waktu sebelum pindah ke fallback.

Kalau ada banyak proxy yang mati, browsing bisa terasa sangat lambat.

Baca juga Proxy Timeout.

Urutan Rule PAC Sangat Penting

Rule spesifik sebaiknya diperiksa lebih dulu.

Contoh yang lebih tepat:

if (host === "internal.example.com") { return "DIRECT"; } if (shExpMatch(host, "*.example.com")) { return "PROXY proxy-a:8080"; }

Kalau rule wildcard ditaruh terlebih dahulu, hostname internal bisa keburu cocok dengan rule tersebut.

Kenapa PAC Bisa Membuat Browsing Lambat?

  • file PAC lambat diambil,
  • rule terlalu kompleks,
  • terlalu banyak DNS lookup,
  • primary proxy terus gagal,
  • proxy memiliki latency tinggi.

PAC dan Proxy Geolocation

PAC dapat mengarahkan destination berbeda melalui proxy negara berbeda.

example-id.com → Proxy Indonesia example-sg.com → Proxy Singapore

Untuk memverifikasi lokasi exit IP, baca Proxy Geolocation.

PAC di Chrome

Chrome dapat mengikuti konfigurasi proxy sistem maupun PAC sesuai platform dan policy yang digunakan.

Panduan terkait tersedia di Cara Menggunakan Proxy di Chrome.

PAC di Firefox

Firefox menyediakan opsi Automatic Proxy Configuration URL.

Lihat Cara Setting Proxy di Firefox.

PAC di Windows

Windows mempunyai pengaturan setup script untuk konfigurasi proxy otomatis.

Lihat Cara Setting Proxy di Windows.

PAC di macOS

macOS menyediakan Automatic Proxy Configuration di pengaturan network.

Lihat Cara Setting Proxy di macOS.

Apakah Semua Aplikasi Mengikuti PAC Sistem?

Tidak.

Ada aplikasi yang mengikuti system proxy, ada yang mempunyai setting proxy sendiri, dan ada juga yang tidak menggunakan PAC sama sekali.

PAC Tidak Sama dengan Environment Variable Proxy

Aplikasi command-line sering menggunakan:

HTTP_PROXY HTTPS_PROXY ALL_PROXY NO_PROXY

Itu merupakan mekanisme berbeda dari PAC.

PAC dan Keamanan

PAC menentukan ke mana traffic diarahkan. Karena itu file PAC harus dianggap sebagai konfigurasi penting.

Jika file tersebut dimodifikasi pihak yang tidak berwenang, traffic dapat diarahkan ke proxy yang salah.

Jangan Menaruh Secret di PAC

Hindari menaruh:

  • password,
  • API key,
  • secret token,
  • credential proxy sensitif.

Versioning File PAC

Untuk jaringan besar, beri informasi versi.

// PAC Version: 2026-10-27 // Change: added internal.example.com bypass

Versioning memudahkan debugging jika terjadi masalah setelah perubahan.

Test PAC Sebelum Production

Minimal uji:

  • domain internal,
  • domain eksternal,
  • HTTPS,
  • fallback proxy,
  • DNS rule,
  • browser utama,
  • DIRECT connection.

Contoh Test Matrix

URL Expected Result
intranet.company.local DIRECT ✓
example.com Proxy A ✓
example.net Proxy A ✓
Proxy A Offline Proxy B ✓

Cara Mendesain PAC yang Mudah Dipelihara

  1. Letakkan rule paling spesifik terlebih dahulu.
  2. Gunakan komentar.
  3. Hindari DNS lookup yang tidak diperlukan.
  4. Gunakan hostname proxy yang jelas.
  5. Tentukan fallback secara eksplisit.
  6. Jangan menyimpan credential rahasia.
  7. Buat test matrix.
  8. Simpan version history.
  9. Dokumentasikan alasan setiap bypass.
  10. Jaga konfigurasi tetap sederhana.

Kesalahan Umum Saat Menggunakan PAC

  • menganggap PAC adalah jenis proxy,
  • menganggap beberapa PROXY berarti proxy chain,
  • menambahkan DIRECT tanpa memahami policy,
  • menaruh rule terlalu umum di atas,
  • melakukan DNS lookup berlebihan,
  • menaruh credential di PAC,
  • menganggap semua aplikasi mengikuti PAC sistem,
  • tidak mengetes fallback,
  • tidak mengecek apakah proxy aktif,
  • mengubah PAC production tanpa testing.

Checklist PAC Proxy

Bagian Yang Dicek
File PAC Bisa diakses client.
FindProxyForURL Ada dan valid.
Rule Urutan benar.
DIRECT Digunakan sesuai policy.
Proxy Endpoint aktif.
Fallback Diuji saat primary mati.
DNS Tidak melakukan lookup berlebihan.
Authentication Dikelola di mekanisme yang tepat.
Browser Client mendukung PAC.
Security Tidak menyimpan secret.

FAQ PAC Proxy

Apa itu PAC Proxy?

PAC atau Proxy Auto-Configuration adalah mekanisme berbasis file JavaScript yang menentukan apakah sebuah request menggunakan proxy tertentu atau koneksi langsung.

Apa fungsi FindProxyForURL?

FindProxyForURL(url, host) adalah function utama dalam PAC yang mengevaluasi destination dan mengembalikan keputusan seperti DIRECT, PROXY, atau SOCKS.

Apa arti DIRECT dalam PAC?

DIRECT berarti request dilakukan tanpa menggunakan proxy.

Apa arti PROXY dalam PAC?

PROXY menentukan HTTP proxy yang digunakan, misalnya PROXY proxy.example.com:8080.

Bisakah PAC menggunakan beberapa proxy?

Bisa. PAC dapat menyediakan beberapa pilihan proxy secara berurutan sebagai fallback.

Apakah beberapa proxy dalam PAC berarti proxy chain?

Tidak. Daftar beberapa proxy pada PAC umumnya merupakan alternatif/fallback, bukan koneksi multi-hop.

Bisakah PAC menggunakan SOCKS5?

Bisa pada client yang memang mendukung return value SOCKS/SOCKS5 dalam PAC.

Apakah PAC bisa bypass domain tertentu?

Bisa. PAC dapat mengembalikan DIRECT untuk domain internal, localhost, subnet tertentu, atau destination lain sesuai rule.

Apakah PAC menyimpan username dan password proxy?

Sebaiknya tidak. PAC bukan tempat yang tepat untuk menyimpan credential rahasia.

Kenapa PAC tidak bekerja?

Penyebabnya bisa berupa file PAC tidak dapat diakses, syntax salah, rule salah, DNS bermasalah, endpoint proxy mati, authentication gagal, atau aplikasi tidak mendukung PAC.