Descrição
Use a API chrome.proxy para gerenciar as configurações de proxy do Chrome. Essa API depende do protótipo ChromeSetting da API type para receber e definir a configuração de proxy.
Permissões
proxyManifesto
Você precisa 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,
elas podem conter proxy.ProxyRules ou um 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 nenhum proxy envolvido. Esse modo não permite mais parâmetros no objetoProxyConfig. auto_detect- No modo
auto_detect, a configuração de proxy é determinada por um script 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 PAC recuperado do URL especificado no objetoproxy.PacScriptou extraído literalmente do elementodataespecificado 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 de proxy é codificada em um objetoproxy.ProxyRules. A estrutura dele é descrita em Regras de proxy. Além disso, o modofixed_serversnão permite mais parâmetros no objetoProxyConfig. system- No modo
system, a configuração de proxy é extraída do sistema operacional. Esse modo não permite mais parâmetros no objetoProxyConfig. Observe que o modosystemé diferente de não definir uma configuração de proxy. Nesse caso, o Chrome volta para as configurações do sistema somente se nenhuma opção de linha de comando influenciar a configuração de 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 é encaminhado por proxy pelo servidor proxy especificado. O restante do tráfego é enviado diretamente. No último caso, o comportamento é um pouco mais sutil: se um servidor proxy
for configurado para o protocolo HTTP, HTTPS ou FTP, o tráfego respectivo será encaminhado pelo
servidor especificado. Se nenhum servidor proxy 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 de servidor proxy
Um servidor proxy é configurado em um objeto proxy.ProxyServer. A conexão com o servidor proxy (definida 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 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 um"*.".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, mas com casos especiais para processar a canonização literal de IP. Por exemplo, a correspondência em "[0:0:0::1]" é a mesma que em "[::1]" porque a canonização do IPv6 é feita internamente.
Exemplos:
127.0.1,[0:0::1],[::1]:80,https://[::1]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSCorresponde a qualquer URL que contenha um literal de IP (
IP_LITERAL) no intervalo especificado. 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,exampleelocalhostsão nomes de host simples, masexample.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 as janelas anônimas herdam as configurações das janelas normais. Consulte também a documentação da API Types.
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 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 snippet a seguir consulta as configurações de proxy em vigor. As configurações de proxy efetivas podem ser determinadas por outra extensão ou por uma política. Consulte a documentação da API Types para mais detalhes.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Observe que o objeto value transmitido para set() não é idêntico ao objeto value transmitido para a função de callback de get(). O último vai conter um elemento rules.proxyForHttp.port.
Tipos
Mode
Enumeração
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Um objeto que contém informações de configuração automática de proxy. Exatamente um dos campos precisa ser preenchido.
Propriedades
-
dados
string opcional
Um script PAC.
-
obrigatório
booleano opcional
Se for "true", um script PAC inválido vai impedir que a pilha de rede volte para conexões diretas. O padrão é "falso".
-
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 essa configuração. Use isso para o modo "pac_script".
-
regras
ProxyRules opcional
As regras de proxy que descrevem essa configuração. Use isso 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 a serem conectados sem um servidor proxy.
-
fallbackProxy
ProxyServer opcional
O servidor proxy a ser usado para todo o resto ou se nenhum dos proxyFor... específicos for especificado.
-
proxyForFtp
ProxyServer opcional
O servidor proxy a ser usado para solicitações 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 precisam estar em ASCII (no formato Punycode). Ainda não há suporte para IDNA.
-
porta
número optional
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"
"socks5"
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
callbacktem esta aparência:(details: object) => void
-
detalhes
objeto
-
detalhes
string
Outros detalhes sobre o erro, como um erro de ambiente de execução do JavaScript.
-
erro
string
A descrição do erro.
-
fatal
booleano
Se for "true", o erro foi fatal e a transação de rede foi cancelada. Caso contrário, uma conexão direta será usada.
-
-