Descrição
Use a API chrome.proxy
para gerenciar as configurações de proxy do Chrome. Essa API usa o protótipo ChromeSetting da API de tipo para receber e definir a configuração do proxy.
Permissões
proxy
Manifesto
É necessário declarar a permissão "proxy" no manifesto da extensão para usar a API de configurações de proxy. Exemplo:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Objetos e propriedades
As configurações de proxy são definidas em um objeto proxy.ProxyConfig
. Dependendo das configurações de proxy do Chrome,
as configurações podem conter proxy.ProxyRules
ou proxy.PacScript
.
Modos de proxy
O atributo mode
de um objeto ProxyConfig determina o comportamento geral do Chrome em relação ao
uso de proxy. Pode ter os seguintes valores:
direct
- No modo
direct
, todas as conexões são criadas diretamente, sem a necessidade de qualquer proxy. Esse modo não permite mais parâmetros no objetoProxyConfig
. auto_detect
- No modo
auto_detect
, a configuração do proxy é determinada por um script PAC, que pode ser transferido por download em http://wpad/wpad.dat. Esse modo não permite mais parâmetros no objetoProxyConfig
. pac_script
- No modo
pac_script
, a configuração do proxy é determinada por um script PAC que é recuperado do URL especificado no objetoproxy.PacScript
ou usado literalmente no elementodata
especificado no objetoproxy.PacScript
. Além disso, esse modo não permite mais parâmetros no objetoProxyConfig
. fixed_servers
- No modo
fixed_servers
, a configuração do proxy é codificada em um objetoproxy.ProxyRules
. A estrutura dele é descrita em Regras de proxy. Além disso, o modofixed_servers
não permite mais parâmetros no objetoProxyConfig
. system
- No modo
system
, a configuração do proxy é recebida do sistema operacional. Esse modo não permite mais parâmetros no objetoProxyConfig
. Observe que o modosystem
é diferente de não definir nenhuma configuração de proxy. No último caso, o Chrome retorna às configurações do sistema somente se nenhuma opção de linha de comando influenciar a configuração do proxy.
Regras de proxy
O objeto proxy.ProxyRules
pode conter um atributo singleProxy
ou um subconjunto de
proxyForHttp
, proxyForHttps
, proxyForFtp
e fallbackProxy
.
No primeiro caso, o tráfego HTTP, HTTPS e FTP é enviado por proxy pelo servidor proxy especificado. Outro tráfego é enviado diretamente. No último caso, o comportamento é um pouco mais sutil: se um servidor proxy
estiver configurado para o protocolo HTTP, HTTPS ou FTP, o respectivo tráfego será enviado por proxy pelo
servidor especificado. Se nenhum servidor proxy desse tipo for especificado ou se o tráfego usar um protocolo diferente de HTTP, HTTPS ou FTP, o fallbackProxy
será usado. Se nenhum fallbackProxy
for especificado, o tráfego será enviado
diretamente sem um servidor proxy.
Objetos do servidor proxy
Um servidor proxy é configurado em um objeto proxy.ProxyServer
. A conexão com o servidor proxy
(definido pelo atributo host
) usa o protocolo definido no atributo scheme
. Se nenhum
scheme
for especificado, a conexão de proxy será http
por padrão.
Se nenhum port
for definido em um objeto proxy.ProxyServer
, a porta será derivada do esquema.
As portas padrão são:
Esquema | Porta |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
Lista de exceções
Servidores individuais podem ser excluídos do proxy com bypassList
. Essa lista pode conter
as seguintes entradas:
[SCHEME://]HOST_PATTERN[:PORT]
Corresponde a todos os nomes de host que correspondem ao padrão
HOST_PATTERN
. Um"."
inicial é interpretado como um"*."
.Exemplos:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.Padrão Correspondências Sem correspondência ".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]
Corresponde a URLs que são literais de endereço IP. Conceitualmente, esse é semelhante ao primeiro caso, mas com casos especiais para lidar com a canonização literal de IP. Por exemplo, corresponder "[0:0:0::1]" é o mesmo que "[::1]", porque a canonização do IPv6 é feita internamente.
Exemplos:
127.0.1
,[0:0::1]
,[::1]:80
,https://[::1]:443
IP_LITERAL/PREFIX_LENGTH_IN_BITS
Corresponde a qualquer URL que contenha um literal de IP (
IP_LITERAL
) no intervalo determinado. O intervalo de IP (PREFIX_LENGTH_IN_BITS
) é especificado usando a notação CIDR.Corresponde a qualquer URL que contenha um literal de IP no intervalo especificado. O intervalo de IP é especificado usando a notação CIDR. Exemplos:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
A string literal
<local>
corresponde a nomes de host simples. Um nome de host simples é aquele que não contém pontos e não é um literal de IP. Por exemplo,example
elocalhost
são nomes de host simples, enquantoexample.com
,example.
e[::1]
não são.Exemplo:
"<local>"
Exemplos
O código a seguir define um proxy SOCKS 5 para conexões HTTP com todos os servidores, exceto foobar.com, e usa conexões diretas para todos os outros protocolos. As configurações se aplicam a janelas normais e anônimas, já que janelas anônimas herdam configurações das janelas normais. Consulte também a documentação da API de tipos.
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() {}
);
O código a seguir define um script de PAC personalizado.
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() {}
);
O próximo snippet consulta as configurações de proxy em vigor no momento. As configurações efetivas de proxy podem ser determinadas por outra extensão ou por uma política. Consulte a documentação da API de tipos para mais detalhes.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
O objeto value
transmitido para set()
não é idêntico ao objeto value
transmitido para a função de callback de get()
. O segundo contém um elemento rules.proxyForHttp.port
.
Tipos
Mode
Tipo enumerado
"auto_detect"
"pac_script"
PacScript
Um objeto que contém informações de configuração automática do proxy. Exatamente um dos campos não deve estar vazio.
Propriedades
-
dados
string opcional
Um script de PAC.
-
obrigatório
booleano opcional
Se verdadeiro, um script de PAC inválido impedirá que a pilha de rede volte para conexões diretas. O padrão é "false".
-
url
string opcional
URL do arquivo PAC a ser usado.
ProxyConfig
Um objeto que encapsula uma configuração de proxy completa.
Propriedades
-
modo
'direct' = Nunca usar um proxy 'auto_detect' = Detectar automaticamente as configurações de proxy 'pac_script' = Usar o script PAC especificado 'Fixed_servers' = Especificar manualmente os servidores proxy 'system' = Usar as configurações de proxy do sistema
-
pacScript
PacScript opcional
O script de configuração automática de proxy (PAC) para esta configuração. Use isso para o modo "pac_script".
-
regras
ProxyRules opcional
As regras de proxy que descrevem essa configuração. Use para o modo "Fixed_servers".
ProxyRules
Um objeto que encapsula o conjunto de regras de proxy para todos os protocolos. Use "singleProxy" ou (um subconjunto de) "proxyForHttp", "proxyForHttps", "proxyForFtp" e "fallbackProxy".
Propriedades
-
bypassList
string[] opcional
Lista de servidores para conexão sem um servidor proxy.
-
fallbackProxy
ProxyServer opcional
O servidor proxy a ser usado para tudo ou se um proxyFor... não for especificado.
-
proxyForFtp
ProxyServer opcional
O servidor proxy a ser usado para solicitações de FTP.
-
proxyForHttp
ProxyServer opcional
O servidor proxy a ser usado para solicitações HTTP.
-
proxyForHttps
ProxyServer opcional
O servidor proxy a ser usado para solicitações HTTPS.
-
singleProxy
ProxyServer opcional
O servidor proxy a ser usado para todas as solicitações por URL (que é http, https e ftp).
ProxyServer
Um objeto que encapsula a especificação de um único servidor proxy.
Propriedades
-
anfitrião
string
O nome do host ou o endereço IP do servidor proxy. Os nomes do host precisam estar em ASCII (no formato Punycode). IDNA ainda não é compatível.
-
porta
número opcional
A porta do servidor proxy. O padrão é uma porta que depende do esquema.
-
planejar
Esquema opcional
O esquema (protocolo) do próprio servidor proxy. O padrão é "http".
Scheme
Tipo enumerado
"http"
"https"
"quic"
"meias4"
"meias5"
Propriedades
settings
Configurações de proxy a serem usadas. O valor dessa configuração é um objeto ProxyConfig.
Eventos
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Notifica sobre erros de proxy.
Parâmetros
-
callback
função
O parâmetro
callback
tem esta aparência:(details: object) => void
-
detalhes
objeto
-
detalhes
string
Detalhes adicionais sobre o erro, como um erro de tempo de execução do JavaScript.
-
error
string
A descrição do erro.
-
fatal
boolean
Se verdadeiro, o erro foi fatal e a transação de rede foi cancelada. Caso contrário, uma conexão direta será usada.
-
-