여러 광고 계정을 운영하거나 마켓플레이스를 크롤링하거나 해외 플랫폼에서 작업하는 경우 — 아마도 모든 트래픽이 프록시를 통해 전달되는 상황에 직면했을 것입니다. 하지만 이는 몇 개의 사이트에만 필요합니다. 결과적으로: 속도가 떨어지고, 트래픽 소비가 증가하며, 프록시가 더 빨리 소모됩니다. 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 파일의 함수를 호출하고 두 개의 매개변수: URL과 호스트(도메인)를 전달합니다. 함수는 이 데이터를 분석하고 세 가지 값 중 하나를 반환합니다:
DIRECT— 직접 연결, 프록시 없이.PROXY host:port— 지정된 주소와 포트를 가진 HTTP 프록시 사용.SOCKS5 host:port— SOCKS5 프록시 사용.
함수는 즉시 실행됩니다 — 연결이 설정되기 전에. 사용자는 지연을 느끼지 못합니다. 논리는 매우 복잡할 수 있습니다: Facebook으로의 트래픽은 하나의 프록시를 통해, 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 함수가 포함되어 있습니다. 브라우저는 매 요청 시 이 함수를 호출합니다.
기본 구조는 다음과 같습니다:
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 파일 예제
아래는 특정 작업을 위한 네 가지 실용적인 템플릿입니다. 필요한 것을 복사하고 프록시의 주소와 포트를 자신의 데이터로 교체하면 파일이 준비됩니다.
템플릿 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 파일을 연결하는 방법은 두 가지가 있습니다: 컴퓨터의 로컬 파일을 통해 또는 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 - 확인 → 적용를 클릭합니다.
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 - 확인을 클릭합니다.
안티디텍트 브라우저에서의 PAC 파일: Dolphin, AdsPower, GoLogin
안티디텍트 브라우저를 사용하는 아비트라지 전문가와 SMM 전문가에게 PAC 파일은 추가적인 가능성을 열어줍니다. 전체 프로필에 하나의 프록시를 지정하는 대신, 브라우저 프로필 내에서 유연한 라우팅을 설정할 수 있습니다.
Dolphin Anty
Dolphin Anty에서는 PAC 파일이 프로필 수준에서 연결됩니다. 프로필을 생성하거나 편집할 때 프록시 섹션에서 PAC-script 유형을 선택하고 URL 또는 파일 경로를 지정합니다. 이를 통해 하나의 프로필이 서로 다른 사이트에 대해 다른 프록시를 사용할 수 있습니다 — 예를 들어, Facebook은 모바일 프록시를 통해, 나머지는 직접 연결됩니다.
실제 시나리오: Facebook 광고 계정이 10개 있습니다. Dolphin의 각 프로필에 대해 Facebook 및 Instagram 도메인만 프록시를 통해 전달하는 PAC 파일을 연결합니다. 나머지 트래픽(확장 프로그램 다운로드, 업데이트)은 직접 연결됩니다 — 이는 프록시의 트래픽을 최대 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)에 배치하세요 — 그러면 로컬 서버가 필요 없고, 파일은 모든 프로필과 모든 장치에서 접근할 수 있습니다. 또한 한 곳에서 규칙을 업데이트할 수 있어 모든 프로필에 즉시 적용됩니다.
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:/경로/파일.pac(file: 뒤에 슬래시 세 개) - 브라우저가 이전 설정을 캐시했습니다. 브라우저를 완전히 종료하고 다시 열어보세요.
- 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 File Debugger에서 파일을 확인하세요 (Google에서 검색) 또는 브라우저 콘솔(F12 → Console)에 코드를 붙여넣어 보세요 — JavaScript 오류가 즉시 표시됩니다. 가장 흔한 문제는 괄호나 세미콜론이 누락된 것입니다.
오류 5: PAC 파일이 HTTPS 사이트에서 작동하지 않음
증상: HTTP 사이트는 프록시를 통해 열리지만, HTTPS는 열리지 않습니다.
원인: HTTPS의 경우 브라우저가 CONNECT 방법을 통해 터널을 설정합니다. 일부 HTTP 프록시는 CONNECT를 지원하지 않습니다.
해결 방법: HTTP 대신 SOCKS5 프록시를 사용하세요 — 이는 두 가지 유형의 연결을 모두 지원합니다. PAC 파일에서 PROXY를 SOCKS5로 변경하세요.
PAC 파일 확인을 위한 체크리스트
- ✅ 함수 이름이 정확히
FindProxyForURL(대소문자 구분) - ✅ 함수가 두 개의 매개변수를 받습니다:
url및host - ✅ 모든 중괄호가 닫혀 있습니다.
- ✅ 함수 마지막에
return "DIRECT";가 있습니다. - ✅ 프록시 주소가
IP:PORT형식으로 공백 없이 되어 있습니다. - ✅ 파일이 UTF-8 인코딩으로 저장되었습니다.
- ✅ 설정의 파일 경로가
file:///로 시작합니다. - ✅ 변경 후 브라우저가 재시작되었습니다.
결론 및 권장 사항
PAC 파일은 프록시를 전문적으로 사용하는 사람들에게 가장 과소평가된 도구 중 하나입니다. 이는 여러 문제를 동시에 해결합니다: 프록시 트래픽을 절약하고 나머지 인터넷의 속도를 유지하며, 수동으로 설정을 전환하지 않고도 유연한 라우팅을 관리할 수 있습니다.
아비트라지 전문가에게 PAC 파일은 안티디텍트 브라우저(Dolphin Anty, AdsPower, GoLogin)와 함께 사용하여 Facebook Ads 또는 TikTok Ads의 트래픽만 프록시를 통해 전달되도록 설정할 수 있게 해줍니다 — 그리고 추가적인 데이터는 없습니다. SMM 전문가에게는 Instagram, TikTok 및 VK에 대해 서로 다른 프록시를 하나의 시스템 내에서 사용할 수 있습니다. 마켓플레이스 판매자에게는 Wildberries 및 Ozon을 점검하는 데 필요한 정확한 크롤링을 제공하며 불필요한 부하를 줄입니다.
가장 중요한 것은 기억해야 할 점: PAC 파일은 몇 줄의 코드로 구성된 단순한 텍스트 파일입니다. 두려워할 필요가 없습니다. 이 기사에서 제공하는 준비된 템플릿 중 하나를 가져와 자신의 프록시 데이터를 입력하면 — 10분 안에 유연한 트래픽 라우팅이 설정됩니다.
Facebook Ads, Instagram 또는 TikTok과 함께 PAC 구성을 사용할 계획이라면, 주거지 프록시를 사용하는 것을 권장합니다 — 이는 플랫폼의 신뢰를 가장 높게 유지하고 PAC 파일을 통한 라우팅 설정이 올바르게 이루어질 경우 차단 위험을 최소화합니다.