Descrição
Use a API chrome.proxy
para gerenciar as configurações de proxy do Chrome. Essa API depende do protótipo ChromeSetting do tipo API para receber e definir a configuração do proxy.
Permissões
proxy
É preciso declarar o "proxy" permissão no manifesto de extensões para usar as configurações de proxy API. Exemplo:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Conceitos e uso
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 aos
uso de proxy. Ele pode assumir os seguintes valores:
direct
- No modo
direct
, todas as conexões são criadas diretamente, sem nenhum proxy envolvido. Esse modo permite sem mais parâmetros no objetoProxyConfig
. auto_detect
- No modo
auto_detect
, a configuração de proxy é determinada por um script de PAC que pode ser baixado em http://wpad/wpad.dat. Esse modo não permite mais parâmetros no objetoProxyConfig
. pac_script
- No modo
pac_script
, a configuração de proxy é determinada por um script de PAC que é recuperado do URL especificado no objetoproxy.PacScript
ou tirado literalmente do elementodata
especificado no objetoproxy.PacScript
. Além disso, esse modo não permite outros parâmetros no objetoProxyConfig
. fixed_servers
- No modo
fixed_servers
, a configuração do proxy é codificada em um objetoproxy.ProxyRules
. Seu é descrita em Regras de proxy. Além disso, o modofixed_servers
não permite parâmetros no objetoProxyConfig
. system
- No modo
system
, a configuração do proxy é extraída do sistema operacional. Esse modo não permite mais parâmetros no objetoProxyConfig
. O modosystem
é diferente definir nenhuma configuração de proxy. No último caso, o Chrome volta para as configurações do sistema apenas se nenhuma opção de linha de comando influencia 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 é intermediado pelo servidor proxy especificado. Outra opção
o 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á intermediado por
servidor especificado. Se nenhum servidor proxy for especificado ou o tráfego usar um protocolo diferente do
HTTP, HTTPS ou FTP, a fallbackProxy
será usada. 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
. Em caso negativo
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 o 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 uma"*."
.Exemplos:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.Padrão Correspondências Não corresponde ".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, isso é semelhante ao primeiro caso, com casos especiais para lidar com a canonização literal de IP. Por exemplo, correspondência com "[0:0:0::1]" é igual à correspondência em "[::1]" porque a canonização do IPv6 é feita internamente.
Exemplos:
127.0.1
,[0:0::1]
,[::1]:80
ehttps://[::1]:443
.IP_LITERAL/PREFIX_LENGTH_IN_BITS
Corresponde a qualquer URL que contenha um literal de IP (
IP_LITERAL
) no do intervalo 10.240.0.0/16. O intervalo de IP (PREFIX_LENGTH_IN_BITS
) é especificado com CIDR notável.Corresponde a qualquer URL que contenha um literal de IP dentro do intervalo especificado. O intervalo de IP é especificado usando CIDR notável. 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 estão.Exemplo:
"<local>"
Exemplos
O código a seguir define um proxy SOCKS 5 para conexões HTTP a 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, mas As janelas anônimas herdam as configurações das janelas normais. Consulte também a APITypes na documentação do Google Cloud.
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 atuais de proxy efetivas. As configurações efetivas de proxy podem ser determinada por outra extensão ou por uma política. Consulte a documentação da APITypes para ver 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 o
função de callback de get()
. O último conterá um elemento rules.proxyForHttp.port
.
Tipos
Mode
Enumeração
"direto"
"auto_detect"
"pac_script"
"fix_servers"
"sistema"
PacScript
Um objeto que contém informações de configuração automática do proxy. Exatamente um dos campos não deve estar em branco.
Propriedades
-
dados
string opcional
Um script de PAC.
-
obrigatório
booleano opcional
Se for verdadeiro, um script de PAC inválido impedirá que a pilha de rede use 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 completa de proxy.
Propriedades
-
modo
"direto" = Nunca usar um proxy "auto_detect" = Detectar automaticamente configurações de proxy "pac_script" = Usar script de PAC especificado "fix_servers" = Especificar manualmente os servidores proxy "sistema" = Usar configurações do proxy do sistema
-
pacScript
PacScript opcional
O script de configuração automática de proxy (PAC, na sigla em inglês) para esta configuração. Usar para "pac_script" modo
-
regras
ProxyRules opcional
As regras de proxy que descrevem esta configuração. Use para "Fixed_servers" modo
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 aos quais se conectar sem um servidor proxy.
-
fallbackProxy
ProxyServer opcional
O servidor proxy a ser usado para qualquer outra coisa ou se qualquer um dos proxiesFor... não estiver 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 (ou seja, http, https e ftp).
ProxyServer
Um objeto que encapsula a especificação de um único servidor proxy.
Propriedades
-
host
string
O nome do host ou o endereço IP do servidor proxy. Os nomes de host devem estar em ASCII (em formato Punycode). O 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
Enumeração
"http"
"https"
"quic"
"socks4"
"meias5"
Propriedades
settings
Configurações de proxy a serem usadas. O valor dessa configuração é um objeto ProxyConfig.
Tipo
types.ChromeSetting<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
Mais detalhes sobre o erro, como um erro de tempo de execução do JavaScript.
-
erro
string
A descrição do erro.
-
fatal
booleano
Se for verdadeiro, o erro foi fatal e a transação de rede foi cancelada. Caso contrário, uma conexão direta é usada.
-
-