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 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 objeto ProxyConfig.
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 objeto ProxyConfig.
pac_script
No modo pac_script, a configuração de proxy é determinada por um script de PAC que é recuperado do URL especificado no objeto proxy.PacScript ou tirado 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 do proxy é codificada em um objeto proxy.ProxyRules. Seu é descrita em Regras de proxy. Além disso, o modo fixed_servers não permite parâmetros no objeto ProxyConfig.
system
No modo system, a configuração do proxy é extraída do sistema operacional. Esse modo não permite mais parâmetros no objeto ProxyConfig. O modo system é 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:

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 uma "*.".

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, 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 e https://[::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 e localhost são nomes de host simples, enquanto example.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

Chrome 54 ou superior

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

Chrome 54 ou superior

Enumeração

"http"

"https"

"quic"

"socks4"

"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

        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.