chrome.proxy

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

É 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"
  ],
  ...
}

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 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 objeto ProxyConfig.
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 objeto ProxyConfig.
pac_script
No modo pac_script, a configuração do proxy é determinada por um script PAC que é recuperado do URL especificado no objeto proxy.PacScript ou usado literalmente no elemento data especificado no objeto proxy.PacScript. Além disso, esse modo não permite mais parâmetros no objeto ProxyConfig.
fixed_servers
No modo fixed_servers, a configuração do proxy é codificada em um objeto proxy.ProxyRules. A estrutura dele é descrita em Regras de proxy. Além disso, o modo fixed_servers não permite mais parâmetros no objeto ProxyConfig.
system
No modo system, a configuração do proxy é recebida do sistema operacional. Esse modo não permite mais parâmetros no objeto ProxyConfig. Observe que o modo system é 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:

EsquemaPorta
http80
https443
socks41080
socks51080

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ãoCorrespondênciasSem 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 e localhost são nomes de host simples, enquanto example.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 efetivas atuais. 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

Chrome 54 ou mais recente

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

Chrome 54 ou mais recente

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.