chrome.proxy

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

proxy

Manifesto

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

EsquemaPorta
http80
https443
socks41080
socks51080

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ãoCorrespondênciasNã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]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

Corresponde 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, example e localhost são nomes de host simples, mas 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 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

Chrome 54 ou mais recente

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

Chrome 54 ou mais recente

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 callback tem 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.