Descrizione
Utilizza l'API chrome.proxy
per gestire le impostazioni del proxy di Chrome. Questa API si basa sul prototipo ChromeSetting dell'API di tipo per recuperare e impostare la configurazione del proxy.
Autorizzazioni
proxy
Devi dichiarare il "proxy" autorizzazione nel manifest dell'estensione per utilizzare le impostazioni del proxy tramite Google Cloud CLI o tramite l'API Compute Engine. Ad esempio:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Concetti e utilizzo
Le impostazioni del proxy sono definite in un oggetto proxy.ProxyConfig
. 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 complessivo di Chrome in relazione a
l'utilizzo del proxy. Può assumere i seguenti valori:
direct
- In modalità
direct
tutte le connessioni vengono create direttamente, senza utilizzare alcun proxy. Questa modalità ti consente Non ci sono altri parametri nell'oggettoProxyConfig
. 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'oggettoProxyConfig
. pac_script
- In modalità
pac_script
, la configurazione del proxy viene determinata da uno script PAC recuperato dall'URL specificato nell'oggettoproxy.PacScript
o preso letteralmente dall'elementodata
specificato nell'oggettoproxy.PacScript
. Inoltre, questa modalità non consente ulteriori parametri nell'oggettoProxyConfig
. fixed_servers
- In modalità
fixed_servers
la configurazione del proxy viene codificata in un oggettoproxy.ProxyRules
. È è descritta in Regole proxy. Inoltre, la modalitàfixed_servers
non consente nell'oggettoProxyConfig
. system
- In modalità
system
, la configurazione del proxy viene acquisita dal sistema operativo. Questa modalità non consente e altri parametri nell'oggettoProxyConfig
. Tieni presente che la modalitàsystem
è diversa da impostare nessuna configurazione proxy. Nel secondo caso, Chrome torna alle impostazioni di sistema solo se nessuna opzione a riga di comando influisce sulla configurazione del proxy.
Regole proxy
L'oggetto proxy.ProxyRules
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. Altro
viene inviato direttamente. Nel secondo caso il comportamento è leggermente più discreto: se un server proxy
configurato per il protocollo HTTP, HTTPS o FTP, il rispettivo traffico viene inviato tramite proxy attraverso
server specificato. Se il server proxy non è specificato o il traffico utilizza un protocollo diverso da
HTTP, HTTPS o FTP, viene utilizzato fallbackProxy
. Se non viene specificato alcun valore fallbackProxy
, il traffico viene inviato
senza un server proxy.
Oggetti server proxy
Un server proxy è configurato in un oggetto proxy.ProxyServer
. La connessione al server proxy
(definito dall'attributo host
) utilizza il protocollo definito nell'attributo scheme
. In caso contrario
scheme
è specificato, il valore predefinito della connessione proxy è http
.
Se non viene definito port
in un oggetto proxy.ProxyServer
, la porta deriva dallo schema.
Le porte predefinite sono:
Scheme | Porta |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
Elenco di esclusione
I singoli server potrebbero essere esclusi dall'invio tramite proxy con bypassList
. Questo elenco può contenere
le seguenti voci:
[SCHEME://]HOST_PATTERN[:PORT]
Trova tutti i nomi host che corrispondono al pattern
HOST_PATTERN
. Un"."
iniziale viene interpretato come un"*."
.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"
e"foofoobar.com"
[SCHEME://]IP_LITERAL[:PORT]
Crea corrispondenze per gli URL che corrispondono a valori letterali di indirizzi IP. Concettualmente questo è simile al primo caso, ma con casi speciali per gestire la canonicalizzazione letterale IP. Ad esempio, la corrispondenza con "[0:0:0::1]" è uguale alla corrispondenza su "[::1]" poiché la canonicalizzazione IPv6 viene eseguita internamente.
Esempi:
127.0.1
,[0:0::1]
,[::1]:80
,https://[::1]:443
IP_LITERAL/PREFIX_LENGTH_IN_BITS
Trova qualsiasi URL contenente un valore letterale IP (
IP_LITERAL
) all'interno della stringa specificata intervallo. L'intervallo IP (PREFIX_LENGTH_IN_BITS
) è specificato utilizzando CIDR non standard.Trova qualsiasi URL contenente un valore letterale IP all'interno dell'intervallo specificato. L'intervallo IP viene specificato utilizzando CIDR la notazione. Esempi:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
La stringa letterale
<local>
corrisponde a nomi host semplici. Un nome host semplice è un nome che non contiene e non è un valore letterale IP. Ad esempio,example
elocalhost
sono 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, ad eccezione di foobar.com e utilizza e connessioni dirette per tutti gli altri protocolli. Le impostazioni vengono applicate alle finestre normali e di navigazione in incognito, le finestre di navigazione in incognito ereditano le impostazioni dalle finestre normali. Vedi anche l'API Type documentazione.
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() {}
);
Lo snippet successivo esegue query sulle impostazioni proxy correnti effettive. Le impostazioni effettive del proxy possono essere determinato da un'altra estensione o da un criterio. Per maggiori dettagli, consulta la documentazione dell'API Tipi.
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 a
di callback di get()
. Quest'ultimo conterrà un elemento rules.proxyForHttp.port
.
Tipi
Mode
Enum
"diretto"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Un oggetto che contiene le informazioni di configurazione automatica del proxy. Uno dei campi non deve essere vuoto.
Proprietà
-
dati
stringa facoltativo
Uno script PAC.
-
obbligatorio
booleano facoltativo
Se impostato su true, uno script PAC non valido impedirà allo stack di rete di tornare alle connessioni dirette. Il valore predefinito è false.
-
url
stringa facoltativo
URL del file PAC da utilizzare.
ProxyConfig
Un oggetto che incapsula una configurazione proxy completa.
Proprietà
-
modalità
'diretto' = Non utilizzare mai un proxy 'auto_detect' = Rileva automaticamente impostazioni proxy "pac_script" = Utilizza lo script PAC specificato "fixed_servers" = Specifica manualmente i server proxy 'system' [sistema] = Utilizza le impostazioni del proxy di sistema
-
pacScript
PacScript facoltativo
Lo script di configurazione automatica del proxy (PAC) per questa configurazione. Utilizza questo campo per "pac_script" .
-
regole
ProxyRules, facoltativo
Le regole del proxy che descrivono questa configurazione. Utilizza questo campo per "fixed_servers" .
ProxyRules
Un oggetto che incapsula l'insieme di regole del proxy per tutti i protocolli. Utilizza "SingleProxy" oppure (un sottoinsieme di) "proxyForHttp", "proxyForHttps", "proxyForFtp" e "fallbackProxy".
Proprietà
-
bypassList
string[] facoltativo
Elenco di server a cui connettersi senza un server proxy.
-
fallbackProxy
ProxyServer facoltativo
Il server proxy da utilizzare per qualsiasi altra attività o se uno qualsiasi dei proxyFor... specifici non è specificato.
-
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 (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 (nel 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"
"calze4"
"calze5"
Proprietà
settings
Impostazioni del proxy da utilizzare. Il valore di questa impostazione è un oggetto ProxyConfig.
Tipo
types.ChromeSetting<ProxyConfig>
Eventi
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Notifiche agli errori del proxy.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(details: object) => void
-
dettagli
oggetto
-
dettagli
stringa
Ulteriori dettagli 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.
-
-