Descrizione
Utilizza l'API chrome.proxy
per gestire le impostazioni del proxy di Chrome. Questa API si basa sul prototipo di API ChromeSetting per recuperare e impostare la configurazione del proxy.
Autorizzazioni
proxy
Manifest
Per utilizzare l'API delle impostazioni proxy, devi dichiarare l'autorizzazione "proxy" nel manifest delle estensioni. Ad esempio:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Oggetti e proprietà
Le impostazioni del proxy sono definite in un oggetto proxy.ProxyConfig
. A seconda delle impostazioni del proxy di Chrome,
le impostazioni potrebbero contenere proxy.ProxyRules
o proxy.PacScript
.
Modalità proxy
L'attributo mode
di un oggetto ProxyConfig determina il comportamento generale di Chrome in merito all'utilizzo del proxy. Può assumere i seguenti valori:
direct
- In modalità
direct
, tutte le connessioni vengono create direttamente, senza l'utilizzo di alcun proxy. Questa modalità non consente ulteriori 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
. La sua struttura è descritta in Regole proxy. Inoltre, la modalitàfixed_servers
non consente ulteriori parametri nell'oggettoProxyConfig
. system
- In modalità
system
, la configurazione del proxy viene recuperata dal sistema operativo. Questa modalità non consente altri parametri nell'oggettoProxyConfig
. Tieni presente che la modalitàsystem
è diversa dall'impostazione della nessuna configurazione del proxy. In quest'ultimo caso, Chrome torna alle impostazioni di sistema solo se nessuna opzione della riga di comando influisce sulla configurazione del proxy.
Regole del 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 al server proxy specificato. Gli altri
traffico vengono inviati 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 trasmesso tramite proxy attraverso il server specificato. Se questo server proxy non viene specificato o se il traffico utilizza un protocollo diverso da HTTP, HTTPS o FTP, viene utilizzato fallbackProxy
. Se fallbackProxy
non viene specificato, il traffico viene inviato direttamente senza un server proxy.
Oggetti del server proxy
Un server proxy è configurato in un oggetto proxy.ProxyServer
. Per la connessione al server proxy (definito dall'attributo host
) viene utilizzato il protocollo definito nell'attributo scheme
. Se scheme
non viene specificato, per impostazione predefinita la connessione proxy sarà http
.
Se non viene definito alcun 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 potrebbero essere esclusi dal proxy con bypassList
. Questo elenco può contenere le seguenti voci:
[SCHEME://]HOST_PATTERN[:PORT]
Trova la corrispondenza di tutti i nomi host che corrispondono al pattern
HOST_PATTERN
. Un elemento"."
iniziale viene interpretato come"*."
.Esempi:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.Sequenza 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]
Associa gli URL che sono valori letterali di indirizzi IP. Concettualmente, è simile al primo caso, ma con casi speciali per gestire la canonicalizzazione letterale IP. Ad esempio, la corrispondenza su "[0:0:0::1]" è uguale a quella su "[::1]" perché 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
) nell'intervallo specificato. L'intervallo IP (PREFIX_LENGTH_IN_BITS
) viene specificato utilizzando la notazione CIDR.Trova qualsiasi URL contenente un valore letterale IP all'interno dell'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 a nomi host semplici. Un nome host semplice non contiene punti e non è un valore letterale IP. Ad esempioexample
elocalhost
sono nomi host semplici, mentreexample.com
,example.
e[::1]
non lo sono.Esempio:
"<local>"
Esempi
Il codice seguente 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 vengono applicate alle finestre di navigazione in incognito e normali, poiché le finestre di navigazione in incognito ereditano le impostazioni dalle finestre normali. Consulta anche la documentazione dell'API Tipi.
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 codice seguente 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 una query sulle impostazioni proxy attualmente in vigore. Le impostazioni proxy effettive possono essere determinate da un'altra estensione o da un criterio. Per ulteriori 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 alla
funzione di callback di get()
. Quest'ultimo conterrà un elemento rules.proxyForHttp.port
.
Tipi
Mode
Enum
"pac_script"
PacScript
Un oggetto che contiene informazioni di configurazione automatica del proxy. Uno dei campi esatti non deve essere vuoto.
Proprietà
-
dati
stringa facoltativo
Uno script PAC.
-
obbligatorio
booleano facoltativo
Se il valore è true, uno script PAC non valido impedirà allo stack di rete di utilizzare le 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à
'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 proxy di sistema
-
pacScript
PacScript facoltativo
Lo script di configurazione automatica del proxy (PAC) per questa configurazione. Usalo per la modalità 'pac_script'.
-
regole
ProxyRules facoltativo
Le regole del proxy che descrivono questa configurazione. Utilizzalo per la modalità "fixed_servers".
ProxyRules
Un oggetto che incapsula l'insieme di regole proxy per tutti i protocolli. Utilizza "singleProxy" o (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... specifico 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 le specifiche di un singolo server proxy.
Proprietà
-
organizzatore
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. 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.
Eventi
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Informa gli 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
boolean
Se il valore è true, l'errore è stato irreversibile e la transazione di rete è stata interrotta. In caso contrario, viene utilizzata una connessione diretta.
-
-