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
proxyManifest
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'oggettoProxyConfig. auto_detect- In modalità
auto_detectla 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'oggettoProxyConfig. pac_script- In
pac_scriptmode, la configurazione del proxy è determinata da uno script PAC recuperato dall'URL specificato nell'oggettoproxy.PacScripto preso letteralmente dall'elementodataspecificato nell'oggettoproxy.PacScript. Oltre a questo, questa modalità non consente ulteriori parametri nell'oggettoProxyConfig. fixed_servers- In modalità
fixed_servers, la configurazione del proxy è codificata in un oggettoproxy.ProxyRules. La sua struttura è descritta in Regole del proxy. Oltre a questo, la modalitàfixed_serversnon consente ulteriori parametri nell'oggettoProxyConfig. system- In modalità
system, la configurazione del proxy viene presa dal sistema operativo. Questa modalità non consente ulteriori parametri nell'oggettoProxyConfig. 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:
| Scheme | Porta |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
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".Pattern Corrisponde a Non 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]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSCorrisponde 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,exampleelocalhostsono nomi host semplici, mentreexample.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
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
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
callbackha 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.
-
-