chrome.proxy

Descrizione

Utilizza l'API chrome.proxy per gestire le impostazioni del proxy di Chrome. Questa API si basa sul prototipo ChromeSetting dell'API types per recuperare e impostare la configurazione del proxy.

Autorizzazioni

proxy

Manifest

Per utilizzare l'API delle impostazioni del proxy , devi dichiarare l'autorizzazione "proxy" nel manifest dell'estensione. Ad esempio:

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

Oggetti e proprietà

Le impostazioni del proxy sono definite in un proxy.ProxyConfig oggetto. A seconda delle impostazioni del proxy di Chrome, le impostazioni possono contenere proxy.ProxyRules o proxy.PacScript.

Modalità proxy

L'attributo mode di un oggetto ProxyConfig determina il comportamento generale di Chrome in relazione all'utilizzo del proxy. Può assumere i seguenti valori:

direct
In modalità direct, tutte le connessioni vengono create direttamente, senza coinvolgere alcun proxy. Questa modalità non consente ulteriori parametri nell'oggetto ProxyConfig.
auto_detect
In modalità auto_detect la configurazione del proxy è determinata da uno script PAC che può essere scaricato all'indirizzo http://wpad/wpad.dat. Questa modalità non consente ulteriori parametri nell'oggetto ProxyConfig.
pac_script
In pac_script mode, la configurazione del proxy è determinata da uno script PAC recuperato dall'URL specificato nell'oggetto proxy.PacScript o preso letteralmente dall'elemento data specificato nell'oggetto proxy.PacScript. Oltre a questo, questa modalità non consente ulteriori parametri nell'oggetto ProxyConfig.
fixed_servers
In modalità fixed_servers, la configurazione del proxy è codificata in un oggetto proxy.ProxyRules. La sua struttura è descritta in Regole del proxy. Oltre a questo, la modalità fixed_servers non consente ulteriori parametri nell'oggetto ProxyConfig.
system
In modalità system, la configurazione del proxy viene presa dal sistema operativo. Questa modalità non consente ulteriori parametri nell'oggetto ProxyConfig. Tieni presente che la modalità system è diversa dall'impostazione di nessuna configurazione del proxy. In quest'ultimo caso, Chrome torna alle impostazioni di sistema solo se nessuna opzione della riga di comando influenza la configurazione del proxy.

Regole del proxy

L'proxy.ProxyRules oggetto può contenere un attributo singleProxy o un sottoinsieme di proxyForHttp, proxyForHttps, proxyForFtp e fallbackProxy.

Nel primo caso, il traffico HTTP, HTTPS e FTP viene inviato tramite proxy attraverso il server proxy specificato. L'altro traffico viene inviato direttamente. Nel secondo caso, il comportamento è leggermente più sottile: se è configurato un server proxy per il protocollo HTTP, HTTPS o FTP, il traffico corrispondente viene inviato tramite proxy attraverso il server specificato. Se non viene specificato alcun server proxy di questo tipo o se il traffico utilizza un protocollo diverso da HTTP, HTTPS o FTP, viene utilizzato fallbackProxy. Se non viene specificato alcun fallbackProxy, il traffico viene inviato direttamente senza un server proxy.

Oggetti del server proxy

Un server proxy è configurato in un proxy.ProxyServer oggetto. La connessione al server proxy (definita dall'attributo host) utilizza il protocollo definito nell'attributo scheme. Se non viene specificato alcun scheme, la connessione proxy utilizza per impostazione predefinita http.

Se non viene definita alcuna port in un oggetto proxy.ProxyServer, la porta viene derivata dallo schema. Le porte predefinite sono:

SchemePorta
http80
https443
socks41080
socks51080

Elenco di esclusione

I singoli server possono essere esclusi dall'invio tramite proxy con bypassList. Questo elenco può contenere le seguenti voci:

[SCHEME://]HOST_PATTERN[:PORT]

Corrisponde a tutti i nomi host che corrispondono al pattern HOST_PATTERN. Un "." iniziale viene interpretato come "*.".

Esempi: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".

PatternCorrisponde aNon corrisponde a
".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]

Corrisponde agli URL che sono valori letterali di indirizzi IP. Concettualmente è simile al primo caso, ma con casi speciali per gestire la canonizzazione dei valori letterali IP. Ad esempio, la corrispondenza con "[0:0:0::1]" è la stessa di "[::1]" perché la canonizzazione IPv6 viene eseguita internamente.

Esempi: 127.0.1, [0:0::1], [::1]:80, https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

Corrisponde a qualsiasi URL contenente un valore letterale IP (IP_LITERAL) nell'intervallo specificato. L'intervallo IP (PREFIX_LENGTH_IN_BITS) viene specificato utilizzando la notazione CIDR.

Corrisponde a qualsiasi URL contenente un valore letterale IP nell'intervallo specificato. L'intervallo IP viene specificato utilizzando la notazione CIDR. Esempi: "192.168.1.1/16", "fefe:13::abc/33"

<local>

La stringa letterale <local> corrisponde ai nomi host semplici. Un nome host semplice è un nome host che non contiene punti e non è un valore letterale IP. Ad esempio, example e localhost sono nomi host semplici, mentre example.com, example., e [::1] non lo sono.

Esempio: "<local>"

Esempi

Il seguente codice imposta un proxy SOCKS 5 per le connessioni HTTP a tutti i server tranne foobar.com e utilizza connessioni dirette per tutti gli altri protocolli. Le impostazioni si applicano alle finestre normali e di navigazione in incognito, poiché le finestre di navigazione in incognito ereditano le impostazioni dalle finestre normali. Consulta anche la documentazione dell'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() {}
);

Il seguente codice imposta uno script PAC personalizzato.

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() {}
);

Il seguente snippet esegue una query sulle impostazioni del proxy attualmente in vigore. Le impostazioni del proxy effettive possono essere determinate da un'altra estensione o da un criterio. Per maggiori dettagli, consulta la documentazione dell'API Types.

chrome.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);

Tieni presente che l'oggetto value passato a set() non è identico all'oggetto value passato alla funzione di callback di get(). Quest'ultimo conterrà un elemento rules.proxyForHttp.port.

Tipi

Mode

Chrome 54+

Enum

"direct"

"auto_detect"

"pac_script"

"fixed_servers"

"system"

PacScript

Un oggetto che contiene informazioni sulla configurazione automatica del proxy. Esattamente uno dei campi deve essere non vuoto.

Proprietà

  • dati

    stringa facoltativa

    Uno script PAC.

  • obbligatorio

    booleano facoltativo

    Se è true, uno script PAC non valido impedisce allo stack di rete di tornare alle connessioni dirette. Il valore predefinito è false.

  • url

    stringa facoltativa

    URL del file PAC da utilizzare.

ProxyConfig

Un oggetto che incapsula una configurazione del proxy completa.

Proprietà

  • modalità

    'direct' = Non utilizzare mai un proxy 'auto_detect' = Rileva automaticamente le impostazioni del proxy 'pac_script' = Utilizza lo script PAC specificato 'fixed_servers' = Specifica manualmente i server proxy 'system' = Utilizza le impostazioni del proxy di sistema

  • pacScript

    PacScript facoltativo

    Lo script di configurazione automatica del proxy (PAC) per questa configurazione. Utilizza questa opzione per la modalità "pac_script".

  • regole

    ProxyRules facoltativo

    Le regole del proxy che descrivono questa configurazione. Utilizza questa opzione per la modalità "fixed_servers".

ProxyRules

Un oggetto che incapsula l'insieme di regole del proxy per tutti i protocolli. Utilizza "singleProxy" o (un sottoinsieme di) "proxyForHttp", "proxyForHttps", "proxyForFtp" e "fallbackProxy".

Proprietà

  • bypassList

    stringa[] facoltativa

    Elenco dei server a cui connettersi senza un server proxy.

  • fallbackProxy

    ProxyServer facoltativo

    Il server proxy da utilizzare per tutto il resto o se non viene specificato nessuno dei proxyFor... specifici.

  • proxyForFtp

    ProxyServer facoltativo

    Il server proxy da utilizzare per le richieste FTP.

  • proxyForHttp

    ProxyServer facoltativo

    Il server proxy da utilizzare per le richieste HTTP.

  • proxyForHttps

    ProxyServer facoltativo

    Il server proxy da utilizzare per le richieste HTTPS.

  • singleProxy

    ProxyServer facoltativo

    Il server proxy da utilizzare per tutte le richieste per URL (ovvero http, https e ftp).

ProxyServer

Un oggetto che incapsula la specifica di un singolo server proxy.

Proprietà

  • host

    stringa

    Il nome host o l'indirizzo IP del server proxy. I nomi host devono essere in formato ASCII (in formato Punycode). IDNA non è ancora supportato.

  • porta

    numero facoltativo

    La porta del server proxy. Il valore predefinito è una porta che dipende dallo schema.

  • schema

    Schema facoltativo

    Lo schema (protocollo) del server proxy stesso. Il valore predefinito è "http".

Scheme

Chrome 54+

Enum

"http"

"https"

"quic"

"socks4"

"socks5"

Proprietà

settings

Impostazioni del proxy da utilizzare. Il valore di questa impostazione è un oggetto ProxyConfig.

Eventi

onProxyError

chrome.proxy.onProxyError.addListener(
  callback: function,
)

Notifica gli errori del proxy.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (details: object) => void

    • dettagli

      oggetto

      • dettagli

        stringa

        Dettagli aggiuntivi sull'errore, ad esempio un errore di runtime JavaScript.

      • errore

        stringa

        La descrizione dell'errore.

      • fatal

        booleano

        Se è true, l'errore è stato irreversibile e la transazione di rete è stata interrotta. In caso contrario, viene utilizzata una connessione diretta.