İçeriğe geç
Glossary 7 dk okuma 981 görüntülenme

PAC dosyası

PAC dosyalarını öğrenin: betik yoluyla otomatik proxy yapılandırmasının anahtarı. Bu güçlü yöntemle ağ yönetimini basitleştirin ve güvenliği artırın.

PAC dosyası

Proxy Auto-Configuration (PAC) dosyası, web tarayıcılarının ve diğer user agent'ların belirli bir URL için hangi proxy sunucusunun (varsa) kullanılacağını belirlemek üzere çalıştırdığı bir JavaScript dosyasıdır. Bu mekanizma, istemci trafiğinin proxy altyapısı üzerinden nasıl yönlendirileceği konusunda dinamik ve ayrıntılı kontrol sağlar.

PAC dosyalarını anlamak

PAC dosyası, proxy yapılandırma mantığını bir web sunucusunda merkezileştirerek istemci tarafında manuel proxy ayarları yapma ihtiyacını ortadan kaldırır. Bir istemci PAC dosyası kullanacak şekilde yapılandırıldığında, her HTTP/HTTPS isteğinden önce betiği indirir ve çalıştırır. Betiğin ana fonksiyonu olan FindProxyForURL(url, host), doğrudan bağlanılacağını, belirli bir proxy kullanılacağını veya bir SOCKS proxy kullanılacağını belirten bir string döndürür.

PAC dosyası kullanmanın faydaları

PAC dosyalarını uygulamak birkaç operasyonel avantaj sunar:

  • Ayrıntılı kontrol: URL desenlerine, hostname'lere, IP adreslerine, günün saatine veya ağ konumuna göre özel yönlendirme kuralları tanımlayın.
  • Yük dengeleme: aşırı yüklenmeyi önlemek için trafiği birden fazla proxy sunucusuna dağıtın.
  • Failover: birincil sunucu erişilemez olduğunda alternatif proxy sunucuları belirtin; böylece güvenilirlik artar.
  • Belirli trafiği atlama: belirli iç veya güvenilir alan adlarını proxy'yi tamamen atlayacak şekilde yönlendirin; bu gecikmeyi ve kaynak tüketimini azaltır.
  • Basitleştirilmiş istemci yapılandırması: istemcilerin yalnızca PAC dosyasının URL'sine ihtiyacı vardır; bu da dağıtımı ve güncellemeleri kolaylaştırır. Proxy mantığındaki değişiklikler her istemcide değil, sunucuda bir kez yapılır.

PAC dosyasının yapısı ve söz dizimi

PAC dosyası, JavaScript ile yazılmış düz metin bir dosyadır ve genellikle proxy.pac veya wpad.dat olarak adlandırılır. PAC dosyasının çekirdeği, mutlaka bulunması gereken FindProxyForURL(url, host) fonksiyonudur.

FindProxyForURL(url, host) fonksiyonu

Bu fonksiyon iki argüman alır:
* url: istenen nesnenin tam URL'si (örneğin http://www.example.com/index.html).
* host: URL'den çıkarılan hostname (örneğin www.example.com).

Fonksiyon bir string değer döndürmelidir:

  • DIRECT: proxy kullanmadan doğrudan hedefe bağlanır.
  • PROXY <host>:<port>: belirtilen HTTP proxy sunucusunu kullanır.
  • SOCKS <host>:<port>: belirtilen SOCKS proxy sunucusunu kullanır.
  • Birden fazla seçenek: birden fazla proxy sunucusunu ya da bir proxy ile doğrudan bağlantıyı noktalı virgülle ayırın (örneğin PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080; DIRECT). İstemci bağlantıları belirtilen sırayla dener.

PAC dosyalarında sık kullanılan JavaScript fonksiyonları

Standart JavaScript fonksiyonlarının yanı sıra, proxy otomatik yapılandırması için tasarlanmış tarayıcıya özgü çeşitli fonksiyonlar da kullanılabilir:

  • isPlainHostName(host): host bir alan adı içermiyorsa true döndürür (örneğin localhost, intranet-server).
  • dnsDomainIs(host, domain): host, domain alanına aitse true döndürür (örneğin dnsDomainIs("www.example.com", ".example.com")).
  • shExpMatch(str, pattern): str, shell ifadesi eşleştirmesiyle pattern desenine uyuyorsa true döndürür (örneğin shExpMatch("http://www.example.com/index.html", "http://*.example.com/*")).
  • isInNet(host, pattern, mask): host adresinin IP'si, pattern ve mask ile belirtilen IP ağının içindeyse true döndürür (örneğin isInNet(host, "192.168.1.0", "255.255.255.0")). host bir hostname veya IP adresi olabilir.
  • myIpAddress(): tarayıcının çalıştığı makinenin IP adresini döndürür. Konum tabanlı proxy kararları için kullanışlıdır.
  • dnsResolve(host): host hostname'ini bir IP adresine çözümler. Çözümleme başarısız olursa boş string döndürür.
  • weekdayRange(wd1, wd2, gmt): geçerli hafta günü belirtilen aralıktaysa true döndürür. wd1, wd2 kısaltmalardır (örneğin "MON", "FRI"). gmt isteğe bağlıdır ve GMT saati içindir.
  • dateRange(day1, month1, year1, day2, month2, year2, gmt): geçerli tarih belirtilen aralıktaysa true döndürür.
  • timeRange(hour1, min1, sec1, hour2, min2, sec2, gmt): geçerli saat belirtilen aralıktaysa true döndürür.

Örnek PAC dosyası

Bu örnek; iç alan adlarını atlamayı, belirli trafiği yönlendirmeyi ve failover uygulamayı gösterir.

function FindProxyForURL(url, host) {
    // Proxy sunucularinizi tanimlayin
    var PRIMARY_PROXY = "PROXY proxy.example.com:8080";
    var SECONDARY_PROXY = "PROXY backup-proxy.example.com:8080";
    var SOCKS_PROXY = "SOCKS socks.example.com:1080";

    // 1. Yerel host'lar ve ic alan adlari icin dogrudan baglanti
    // Duz hostname'ler icin proxy'yi atla (or. "localhost", "intranet-server")
    if (isPlainHostName(host)) {
        return "DIRECT";
    }

    // Belirli bir ic alan adi icin proxy'yi atla
    if (dnsDomainIs(host, ".internal-domain.com")) {
        return "DIRECT";
    }

    // Belirli ic IP araliklari icin proxy'yi atla
    // Not: myIpAddress() istemcinin IP'sini dondurur. Burada *hedefin* ic olup olmadigi kontrol edilir.
    // Istemcinin IP'sini kontrol etmek icin myIpAddress() ve isInNet kullanin.
    if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
        isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
        isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")) {
        return "DIRECT";
    }

    // 2. Belirli uygulamalar veya protokoller icin SOCKS proxy kullan
    // Ornek: tum FTP trafigini bir SOCKS proxy uzerinden yonlendir
    if (url.substring(0, 4) == "ftp:") {
        return SOCKS_PROXY;
    }

    // 3. Belirli dis alan adlarini failover ile birincil proxy uzerinden yonlendir
    // Ornek: partner-site.com trafigini birincil proxy uzerinden,
    // ikincil proxy'ye geri donus ile yonlendir.
    if (dnsDomainIs(host, ".partner-site.com")) {
        return PRIMARY_PROXY + "; " + SECONDARY_PROXY;
    }

    // 4. Belirli URL'leri engelle (var olmayan bir proxy veya hata dondurerek)
    // Not: bazi tarayicilar "PROXY 0.0.0.0:0" degerini engelleme olarak yorumlayabilir.
    // Daha saglam bir engelleme mekanizmasi genellikle proxy'nin kendisi tarafindan saglanir.
    if (shExpMatch(url, "*bad-site.com*")) {
        // Fiilen engellemek icin var olmayan bir proxy dondur veya ozel bir engelleme proxy'si kullan
        return "PROXY 127.0.0.1:1"; // Veya ozel bir engelleme proxy'si
    }

    // 5. Varsayilan kural: diger tum trafik failover ile birincil proxy uzerinden gider
    return PRIMARY_PROXY + "; " + SECONDARY_PROXY + "; DIRECT";
}

Dağıtım ve yayma

İstemcilerin bir PAC dosyasını kullanabilmesi için onu alacak şekilde yapılandırılmaları gerekir.

HTTP/HTTPS sunucusu üzerinden

En yaygın yöntem, PAC dosyasını standart bir web sunucusunda (Apache, Nginx, IIS) barındırmak ve istemci tarayıcılarını veya işletim sistemlerini bu URL ile yapılandırmaktır.
* Sunucu yapılandırması: sunucunun PAC dosyasını doğru MIME type ile sunduğundan emin olun: application/x-ns-proxy-autoconfig.
* İstemci yapılandırması: tarayıcı ayarlarında (veya işletim sistemi ağ ayarlarında) "Otomatik proxy yapılandırma betiği kullan" seçeneğini belirtin ve tam URL'yi girin (örneğin http://proxyconfig.example.com/proxy.pac).

Web Proxy Auto-Discovery Protocol (WPAD)

WPAD, istemcilerin PAC dosyası URL'sini manuel yapılandırma olmadan otomatik olarak keşfetmesini sağlar. Bu genellikle şunları içerir:
1. DNS: wpad.dat dosyasını barındıran web sunucusuna işaret eden bir wpad.<domain> DNS kaydı oluşturmak.
2. DHCP: PAC dosyası URL'sini sağlamak için bir DHCP seçeneği (seçenek 252) yapılandırmak.

WPAD kullanışlı olsa da güvenlik açısından riskler taşır (örneğin kötü niyetli WPAD sunucuları olasılığı) ve genellikle devre dışı bırakılır veya dikkatle kullanılır. Güvenlik ve açık kontrol açısından doğrudan URL yapılandırması genellikle tercih edilir.

Windows için Group Policy Objects (GPO)

Windows etki alanlarında PAC dosyası URL'leri, Group Policy kullanılarak istemci makinelere merkezî olarak dağıtılabilir:
* User Configuration > Policies > Windows Settings > Internet Explorer Maintenance > Connection > Proxy Settings yolunu izleyin.
* "Automatic configuration" seçeneğini etkinleştirin ve PAC dosyası URL'sini girin.

PAC dosyalarında sorun giderme

PAC dosyalarındaki sorunlar genellikle söz dizimi hatalarından, önbellekten veya ağ problemlerinden kaynaklanır.

  • Söz dizimi hataları: küçük JavaScript hataları bile PAC dosyasının çalışmasını engelleyebilir. Bir JavaScript linter'ı veya özel bir PAC dosyası doğrulayıcısı kullanın. Tarayıcılar hataları geliştirici konsoluna kaydedebilir (örneğin Chrome/Firefox'ta F12).
  • Yanlış MIME type: web sunucusu PAC dosyasını yanlış MIME type ile sunarsa istemciler dosyayı doğru işleyemeyebilir. application/x-ns-proxy-autoconfig değerini doğrulayın.
  • Önbellek sorunları: tarayıcılar PAC dosyalarını agresif şekilde önbelleğe alır. Değişiklik yaptığınızda tarayıcı önbelleğini temizleyin veya zorla yenileyin (örneğin Ctrl+F5). Bazı tarayıcılar hata ayıklama için PAC dosyası önbelleğini kapatma seçeneği sunar.
  • Ağ erişilebilirliği: istemcinin PAC dosyasını barındıran web sunucusuna ulaşabildiğinden emin olun. DNS çözümlemesini ve güvenlik duvarı kurallarını doğrulayın.
  • FindProxyForURL fonksiyonu: FindProxyForURL(url, host) fonksiyonunun doğru tanımlandığını ve geçerli proxy string'leri döndürdüğünü doğrulayın.
  • Test araçları: tarayıcı geliştirici araçları (Network sekmesi) bir istek için hangi proxy'nin kullanıldığını gösterebilir. Çevrimiçi PAC dosyası test araçları, betiğinize karşı istekleri simüle edebilir.

PAC dosyası ile diğer proxy yapılandırma yöntemlerinin karşılaştırması

Özellik PAC dosyası Doğrudan proxy ayarları WPAD
Yapılandırma yöntemi JavaScript betiği URL'si Manuel IP/port girişi DNS/DHCP ile otomatik keşif
Ayrıntılı kontrol Yüksek (mantık tabanlı) Düşük (tüm trafik tek proxy'ye ya da doğrudan gider) Yüksek (PAC dosyası kullanır)
Failover/yük dengeleme Evet (betik mantığına gömülü) Hayır (tek proxy) Evet (PAC dosyası mantığına gömülü)
Atlama kuralları Evet (betik mantığına gömülü) Manuel istisna listesi Evet (PAC dosyası mantığına gömülü)
Dağıtım karmaşıklığı Orta (dosyayı web sunucusunda barındır, URL'yi ayarla) Düşük (istemci başına manuel) Yüksek (DNS/DHCP yapılandırması, web sunucusu)
Bakım Merkezî (betiği sunucuda düzenle) Dağınık (istemci başına manuel) Merkezî (betiği sunucuda düzenle, DNS/DHCP)
Güvenlik değerlendirmeleri Betik enjeksiyonu, şifresiz dağıtım Temel DNS/DHCP spoofing (daha yüksek risk), betik enjeksiyonu

Güvenlik değerlendirmeleri

  • Bütünlük: PAC dosyaları hassas yönlendirme bilgileri içerir. PAC dosyasının güvenli ve güvenilir bir web sunucusunda barındırıldığından ve indirme sırasında değiştirilmesini ya da araya girilmesini önlemek için HTTPS üzerinden sunulduğundan emin olun.
  • Kötü niyetli betikler: ele geçirilmiş bir PAC dosyası, istemci trafiğini kötü niyetli proxy'lere yönlendirerek man-in-the-middle saldırılarını, kimlik bilgisi toplamayı veya veri sızdırmayı kolaylaştırabilir. Yalnızca güvenilir kaynaklardan gelen PAC dosyalarını kullanın.
  • Bilgi ifşası: herkese açık PAC dosyalarına hassas iç ağ ayrıntıları eklemekten kaçının. Dosyanın kendisi kod olsa da mantığı ağ topolojisini açığa çıkarabilir.
  • WPAD güvenlik açıkları: WPAD'ın otomatik keşif mekanizması, bir saldırgan DNS veya DHCP yanıtlarını kontrol edebiliyorsa istismar edilerek istemciler kötü niyetli bir WPAD sunucusuna yönlendirilebilir. WPAD'ı dikkatle ve uygun güvenlik önlemleriyle kullanın.
Güncellendi: 03.03.2026
Kategoriye dön

Bunları da okuyun

Glossary 3 dk

Mobil proxy nedir? 4G/5G proxy'ler açıklandı

Mobil proxy, trafiği gerçek bir 4G/5G cihaz üzerinden yönlendirir ve size binlerce gerçek kullanıcının paylaştığı bir operatör IP'si verir — engellenmesi en zor tür. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

ISP proxy nedir? Statik residential proxy'ler açıklandı

ISP proxy, veri merkezinde barınan ama residential bir ISP'ye kayıtlı statik bir IP'dir — residential güveni, veri merkezi hızı ve sabit IP. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

HTTP ve HTTPS Proxy: Fark Nedir?

HTTP proxy web trafiğinizi okuyabilir; HTTPS proxy onu CONNECT ile şifreli tüneller. Gerçek fark, proxy'nin ne gördüğü ve hangisini seçmeniz gerektiği.

Glossary 4 dk

Proxy nedir? Yeni başlayanlar için eksiksiz rehber

Proxy sunucusu, trafiğinizi farklı bir IP üzerinden yönlendirerek gerçek IP adresinizi gizleyen bir aracıdır. Proxy'lerin nasıl çalıştığını, temel türlerini ve doğru olanı nasıl seçeceğinizi anlatıyoruz.

Glossary 4 dk

SOCKS5 ile HTTP Proxy: Farkları, Hızı ve Hangisi Ne Zaman Kullanılır

SOCKS5 ve HTTP proxy'ler farklı sorunları çözer. HTTP proxy web trafiğini anlar, önbelleğe alabilir veya filtreleyebilir; SOCKS5 ise herhangi bir TCP/UDP bağlantısını körlemesine iletir — yalnızca gezinmeyi değil, torrentleri, oyunları, e-postayı da. İkisi de kendi başına trafiği şifrelemez. Hangisinin ne zaman kazandığını burada bulacaksınız.

Glossary 1 dk

CDN ve proxy'ler: Nasıl çalışır

CDN ve proxy'ler — birlikte nasıl çalışır — proxy ve ağ teknolojileri alanına ait bir terim.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.