chrome.proxy

설명

chrome.proxy API를 사용하여 Chrome의 프록시 설정을 관리합니다. 이 API는 프록시 구성을 가져오고 설정하기 위해 type API의 ChromeSetting 프로토타입을 사용합니다.

권한

proxy

매니페스트

프록시 설정 API를 사용하려면 확장 프로그램 매니페스트에서 "proxy" 권한을 선언해야 합니다. 예를 들면 다음과 같습니다.

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

객체 및 속성

프록시 설정은 proxy.ProxyConfig 객체에 정의됩니다. Chrome의 프록시 설정에 따라, 설정에 proxy.ProxyRules 또는 proxy.PacScript가 포함될 수 있습니다.

프록시 모드

ProxyConfig 객체의 mode 속성은 프록시 사용과 관련하여 Chrome의 전반적인 동작을 결정합니다. 다음 값을 사용할 수 있습니다.

direct
direct 모드에서는 프록시 없이 모든 연결이 직접 생성됩니다. 이 모드에서는 ProxyConfig 객체에 추가 매개변수를 사용할 수 없습니다.
auto_detect
auto_detect 모드에서는 http://wpad/wpad.dat에서 다운로드할 수 있는 PAC 스크립트에 의해 프록시 구성이 결정됩니다. 이 모드에서는 ProxyConfig 객체에 추가 매개변수를 사용할 수 없습니다.
pac_script
pac_script 모드에서는 proxy.PacScript 객체에 지정된 URL에서 가져오거나 proxy.PacScript 객체에 지정된 data 요소에서 리터럴로 가져온 PAC 스크립트에 의해 프록시 구성이 결정됩니다. 이 모드에서는 ProxyConfig 객체에 추가 매개변수를 사용할 수 없습니다.
fixed_servers
모드에서는 프록시 구성이 객체에 코딩됩니다.fixed_serversproxy.ProxyRules 구조는 프록시 규칙에 설명되어 있습니다. 이 fixed_servers 모드에서는 ProxyConfig 객체에 추가 매개변수를 사용할 수 없습니다.
system
system 모드에서는 프록시 구성이 운영체제에서 가져옵니다. 이 모드에서는 ProxyConfig 객체에 추가 매개변수를 사용할 수 없습니다. system 모드는 프록시 구성을 설정하지 않는 것과 다릅니다. 후자의 경우 Chrome은 명령줄 옵션이 프록시 구성에 영향을 미치지 않는 경우에만 시스템 설정으로 대체됩니다.

프록시 규칙

proxy.ProxyRules 객체는 singleProxy 속성 또는 proxyForHttp, proxyForHttps, proxyForFtp, fallbackProxy의 하위 집합을 포함할 수 있습니다.

첫 번째 경우 HTTP, HTTPS, FTP 트래픽은 지정된 프록시 서버를 통해 프록시됩니다. 다른 트래픽은 직접 전송됩니다. 후자의 경우 동작이 약간 더 미묘합니다. HTTP, HTTPS 또는 FTP 프로토콜에 프록시 서버가 구성된 경우 해당 트래픽은 지정된 서버를 통해 프록시됩니다. 이러한 프록시 서버가 지정되지 않았거나 트래픽이 HTTP, HTTPS 또는 FTP와 다른 프로토콜을 사용하는 경우 fallbackProxy가 사용됩니다. fallbackProxy가 지정되지 않은 경우 트래픽은 프록시 서버 없이 직접 전송됩니다.

프록시 서버 객체

프록시 서버는 proxy.ProxyServer 객체에 구성됩니다. 프록시 서버에 대한 연결(host 속성으로 정의됨)은 scheme 속성에 정의된 프로토콜을 사용합니다. scheme이 지정되지 않은 경우 프록시 연결은 기본적으로 http로 설정됩니다.

proxy.ProxyServer 객체에 port가 정의되지 않은 경우 포트는 스키마에서 파생됩니다. 기본 포트는 다음과 같습니다.

스키마포트
http80
https443
socks41080
socks51080

예외 목록

개별 서버는 bypassList를 사용하여 프록시에서 제외될 수 있습니다. 이 목록에는 다음 항목이 포함될 수 있습니다.

[SCHEME://]HOST_PATTERN[:PORT]

HOST_PATTERN 패턴과 일치하는 모든 호스트 이름을 일치시킵니다. 선행 ".""*."으로 해석됩니다.

예: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".

패턴일치일치하지 않음
".foobar.com""www.foobar.com""foobar.com"
"*.foobar.com""www.foobar.com""foobar.com"
"foobar.com""foobar.com""www.foobar.com"
"*foobar.com""foobar.com", "www.foobar.com", "foofoobar.com"
[SCHEME://]IP_LITERAL[:PORT]

IP 주소 리터럴인 URL을 일치시킵니다. 개념적으로는 첫 번째 경우와 비슷하지만 IP 리터럴 정규화를 처리하는 특수한 경우가 있습니다. 예를 들어 '[0:0:0::1]'과 일치하는 것은 '[::1]'과 일치하는 것과 같습니다. IPv6 표준화가 내부적으로 이루어지기 때문입니다.

예: 127.0.1, [0:0::1], [::1]:80, https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

지정된 범위 내에 IP 리터럴 (IP_LITERAL)이 포함된 URL을 일치시킵니다. IP 범위 (PREFIX_LENGTH_IN_BITS)는 CIDR 표기법을 사용하여 지정됩니다.

지정된 범위 내에 IP 리터럴이 포함된 URL을 일치시킵니다. IP 범위는 CIDR 표기법을 사용하여 지정됩니다. 예: "192.168.1.1/16", "fefe:13::abc/33"

<local>

리터럴 문자열 <local>은 단순 호스트 이름과 일치합니다. 단순 호스트 이름은 점을 포함하지 않고 IP 리터럴이 아닌 호스트 이름입니다. 예를 들어 examplelocalhost는 단순 호스트 이름이지만 example.com, example., [::1]은 단순 호스트 이름이 아닙니다.

예: "<local>"

다음 코드는 foobar.com을 제외한 모든 서버에 대한 HTTP 연결에 SOCKS 5 프록시를 설정하고 다른 모든 프로토콜에 직접 연결을 사용합니다. 시크릿 창은 일반 창에서 설정을 상속하므로 설정은 일반 창과 시크릿 창에 모두 적용됩니다. Types API 문서도 참고하세요.

var config = {
  mode: "fixed_servers",
  rules: {
    proxyForHttp: {
      scheme: "socks5",
      host: "1.2.3.4"
    },
    bypassList: ["foobar.com"]
  }
};
chrome.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

다음 코드는 커스텀 PAC 스크립트를 설정합니다.

var config = {
  mode: "pac_script",
  pacScript: {
    data: "function FindProxyForURL(url, host) {\n" +
          "  if (host == 'foobar.com')\n" +
          "    return 'PROXY blackhole:80';\n" +
          "  return 'DIRECT';\n" +
          "}"
  }
};
chrome.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

다음 스니펫은 현재 유효한 프록시 설정을 쿼리합니다. 유효한 프록시 설정은 다른 확장 프로그램 또는 정책에 의해 결정될 수 있습니다. 자세한 내용은 Types API 문서를 참고하세요.

chrome.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);

set()에 전달된 value 객체는 get()의 콜백 함수에 전달된 value 객체와 동일하지 않습니다. 후자에는 rules.proxyForHttp.port 요소가 포함됩니다.

유형

Mode

Chrome 54 이상

열거형

'direct'

'auto_detect'

'pac_script'

'fixed_servers'

'system'

PacScript

프록시 자동 구성 정보를 보유하는 객체입니다. 필드 중 하나만 비어 있지 않아야 합니다.

속성

  • 데이터

    문자열 선택사항

    PAC 스크립트입니다.

  • 필수

    부울 선택사항

    true인 경우 잘못된 PAC 스크립트는 네트워크 스택이 직접 연결로 대체되는 것을 방지합니다. 기본값은 거짓입니다.

  • URL

    문자열 선택사항

    사용할 PAC 파일의 URL입니다.

ProxyConfig

완전한 프록시 구성을 캡슐화하는 객체입니다.

속성

  • 모드

    'direct' = 프록시를 사용하지 않음 'auto_detect' = 프록시 설정 자동 감지 'pac_script' = 지정된 PAC 스크립트 사용 'fixed_servers' = 프록시 서버 수동 지정 'system' = 시스템 프록시 설정 사용

  • pacScript

    PacScript 선택사항

    이 구성의 프록시 자동 구성 (PAC) 스크립트입니다. 'pac_script' 모드에 사용합니다.

  • 규칙

    ProxyRules 선택사항

    이 구성을 설명하는 프록시 규칙입니다. 'fixed_servers' 모드에 사용합니다.

ProxyRules

모든 프로토콜의 프록시 규칙 집합을 캡슐화하는 객체입니다. 'singleProxy' 또는 'proxyForHttp', 'proxyForHttps', 'proxyForFtp', 'fallbackProxy'(하위 집합) 중 하나를 사용합니다.

속성

  • bypassList

    문자열[] 선택사항

    프록시 서버 없이 연결할 서버 목록입니다.

  • fallbackProxy

    ProxyServer 선택사항

    다른 모든 항목에 사용하거나 특정 proxyFor... 가 지정되지 않은 경우 사용할 프록시 서버입니다.

  • proxyForFtp

    ProxyServer 선택사항

    FTP 요청에 사용할 프록시 서버입니다.

  • proxyForHttp

    ProxyServer 선택사항

    HTTP 요청에 사용할 프록시 서버입니다.

  • proxyForHttps

    ProxyServer 선택사항

    HTTPS 요청에 사용할 프록시 서버입니다.

  • singleProxy

    ProxyServer 선택사항

    모든 URL별 요청 (즉, http, https, ftp)에 사용할 프록시 서버입니다.

ProxyServer

단일 프록시 서버의 사양을 캡슐화하는 객체입니다.

속성

  • 호스트

    문자열

    프록시 서버의 호스트 이름 또는 IP 주소입니다. 호스트 이름은 ASCII (퓨니코드 형식)여야 합니다. IDNA는 아직 지원되지 않습니다.

  • 포트

    숫자 선택사항

    프록시 서버의 포트입니다. 기본값은 스키마에 따라 달라지는 포트입니다.

  • 스키마

    스키마 선택사항

    프록시 서버 자체의 스키마 (프로토콜)입니다. 기본값은 'http'입니다.

Scheme

Chrome 54 이상

열거형

'http'

'https'

'quic'

'socks4'

'socks5'

속성

settings

사용할 프록시 설정입니다. 이 설정의 값은 ProxyConfig 객체입니다.

이벤트

onProxyError

chrome.proxy.onProxyError.addListener(
  callback: function,
)

프록시 오류에 대해 알립니다.

매개변수

  • callback

    함수

    callback 매개변수는 다음과 같습니다.

    (details: object) => void

    • 세부정보

      객체

      • 세부정보

        문자열

        JavaScript 런타임 오류와 같은 오류에 대한 추가 세부정보입니다.

      • 오류

        문자열

        오류 설명입니다.

      • fatal

        부울

        true인 경우 오류가 심각하고 네트워크 트랜잭션이 중단되었습니다. 그렇지 않으면 직접 연결이 대신 사용됩니다.