설명
chrome.proxy
API를 사용하여 Chrome의 프록시 설정을 관리하세요. 이 API는 프록시 구성을 가져오고 설정하기 위해 API 유형의 ChromeSetting 프로토타입을 사용합니다.
권한
proxy
'proxy'를 선언해야 합니다. 프록시 설정을 사용하기 위한 확장 프로그램 매니페스트의 권한 API에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
개념 및 사용법
프록시 설정은 proxy.ProxyConfig
객체에 정의됩니다. Chrome의 프록시 설정에 따라
설정에는 proxy.ProxyRules
또는 proxy.PacScript
가 포함될 수 있습니다.
프록시 모드
ProxyConfig 객체의 mode
속성은
프록시 사용량입니다. 다음 값을 사용할 수 있습니다.
direct
direct
모드에서는 모든 연결이 프록시 없이 직접 생성됩니다. 이 모드를 사용하면ProxyConfig
객체에 추가 매개변수가 없습니다.auto_detect
auto_detect
모드에서는 다운로드할 수 있는 PAC 스크립트에 의해 프록시 구성이 결정됩니다. (http://wpad/wpad.dat) 이 모드는ProxyConfig
객체에서 추가 매개변수를 허용하지 않습니다.pac_script
pac_script
모드에서는 프록시 구성은 가져오는 PAC 스크립트에 의해 결정됩니다.proxy.PacScript
객체에 지정된 URL 또는data
요소에서 문자 그대로 가져옴proxy.PacScript
객체에 지정됩니다. 이 외에 이 모드에서는ProxyConfig
객체에서 찾을 수 있습니다.fixed_servers
fixed_servers
모드에서는 프록시 구성이proxy.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
가 없으면 포트는 스키마에서 파생됩니다.
기본 포트는 다음과 같습니다.
스킴 | 포트 |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
우회 목록
개별 서버는 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_LITERAL
범위입니다. IP 범위 (PREFIX_LENGTH_IN_BITS
)는 CIDR을 사용하여 지정됩니다. 표기법을 사용합니다.지정된 범위 내에서 IP 리터럴이 포함된 URL과 일치합니다. IP 범위는 CIDR을 사용하여 지정됩니다. 있습니다. 예:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
리터럴 문자열
<local>
는 단순한 호스트 이름과 일치합니다. 간단한 호스트 이름은 마침표이며 IP 리터럴이 아닙니다. 예를 들어example
및localhost
는 단순한 호스트 이름입니다. 반면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
객체는value
get()
의 콜백 함수 후자는 rules.proxyForHttp.port
요소를 포함합니다.
유형
Mode
열거형
'direct'
"auto_detect"
"pac_script"
"fixed_servers"
"시스템"
PacScript
프록시 자동 구성 정보를 보유하는 객체입니다. 필드 중 하나만 비어 있으면 안 됩니다.
속성
-
데이터
문자열(선택사항)
PAC 스크립트.
-
필수
불리언 선택사항
true인 경우 잘못된 PAC 스크립트는 네트워크 스택이 직접 연결로 되돌아가지 못하게 합니다. 기본값은 false입니다.
-
URL
문자열(선택사항)
사용할 PAC 파일의 URL입니다.
ProxyConfig
전체 프록시 구성을 캡슐화하는 객체입니다.
속성
-
모드
'직접' = 프록시 사용 안함 'auto_detect' = 프록시 설정 자동 감지 'pac_script' = 지정된 PAC 스크립트 사용 'fixed_servers' = 수동으로 프록시 서버 지정 '시스템' = 시스템 프록시 설정 사용
-
pacScript
PacScript 선택사항
이 구성에 대한 프록시 자동 구성 (PAC) 스크립트입니다. 'pac_script'에 사용 있습니다.
-
규칙
ProxyRules 선택사항
이 구성을 설명하는 프록시 규칙입니다. 'fixed_servers'에 사용합니다. 있습니다.
ProxyRules
모든 프로토콜에 대한 프록시 규칙 집합을 캡슐화하는 객체입니다. 'singleProxy' 또는 'singleProxy'를 사용하세요. 또는 'proxyForHttp', 'proxyForHttps', 'proxyForFtp'의 하위 집합 'fallbackProxy'가 있습니다.
속성
-
bypassList
string[] 선택사항
프록시 서버 없이 연결할 서버 목록입니다.
-
fallbackProxy
ProxyServer 선택사항
다른 항목에 사용하거나 특정 proxyFor... 중 하나가 지정되지 않은 경우 사용할 프록시 서버입니다.
-
proxyForFtp
ProxyServer 선택사항
FTP 요청에 사용할 프록시 서버입니다.
-
proxyForHttp
ProxyServer 선택사항
HTTP 요청에 사용될 프록시 서버입니다.
-
proxyForHttps
ProxyServer 선택사항
HTTPS 요청에 사용될 프록시 서버입니다.
-
singleProxy
ProxyServer 선택사항
모든 URL별 요청 (http, https, ftp)에 사용되는 프록시 서버입니다.
ProxyServer
단일 프록시 서버의 사양을 캡슐화하는 객체입니다.
속성
-
호스트
문자열
프록시 서버의 호스트 이름 또는 IP 주소입니다. 호스트 이름은 ASCII (퓨니코드 형식)여야 합니다. IDNA는 아직 지원되지 않습니다.
-
포트
숫자 선택사항
프록시 서버의 포트입니다. 기본값은 스키마에 따라 달라지는 포트입니다.
-
스키마
스키마 선택사항
프록시 서버 자체의 스키마 (프로토콜)입니다. 기본값은 'http'입니다.
Scheme
열거형
'http'
'https'
"quic"
"socks4"
"socks5"
속성
settings
사용할 프록시 설정입니다. 이 설정의 값은 ProxyConfig 객체입니다.
유형
types.ChromeSetting<ProxyConfig>
이벤트
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
프록시 오류를 알립니다.
매개변수
-
콜백
함수
callback
매개변수는 다음과 같습니다.(details: object) => void
-
세부정보
객체
-
세부정보
문자열
JavaScript 런타임 오류와 같은 오류에 대한 추가 세부정보입니다.
-
오류
문자열
오류 설명입니다.
-
fatal
부울
true인 경우 오류가 치명적이며 네트워크 트랜잭션이 중단된 것입니다. 그렇지 않으면 직접 연결이 대신 사용됩니다.
-
-