Description
Utilisez l'API chrome.proxy
pour gérer les paramètres proxy de Chrome. Cette API s'appuie sur le prototype ChromeSetting du type d'API pour obtenir et définir la configuration du proxy.
Autorisations
proxy
Manifest
Pour utiliser l'API des paramètres de proxy, vous devez déclarer l'autorisation "proxy" dans le fichier manifeste de l'extension. Exemple :
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Objets et propriétés
Les paramètres de proxy sont définis dans un objet proxy.ProxyConfig
. Selon les paramètres proxy de Chrome, il est possible que les paramètres contiennent une proxy.ProxyRules
ou un proxy.PacScript
.
Modes proxy
L'attribut mode
d'un objet ProxyConfig détermine le comportement général de Chrome concernant l'utilisation du proxy. Les valeurs possibles sont les suivantes:
direct
- En mode
direct
, toutes les connexions sont créées directement, sans proxy impliqué. Ce mode n'autorise aucun autre paramètre dans l'objetProxyConfig
. auto_detect
- En mode
auto_detect
, la configuration du proxy est déterminée par un script PAC que vous pouvez télécharger à l'adresse http://wpad/wpad.dat. Ce mode n'autorise aucun autre paramètre dans l'objetProxyConfig
. pac_script
- En mode
pac_script
, la configuration du proxy est déterminée par un script PAC récupéré à partir de l'URL spécifiée dans l'objetproxy.PacScript
ou extrait littéralement de l'élémentdata
spécifié dans l'objetproxy.PacScript
. En outre, ce mode n'autorise aucun autre paramètre dans l'objetProxyConfig
. fixed_servers
- En mode
fixed_servers
, la configuration du proxy est codifiée dans un objetproxy.ProxyRules
. Sa structure est décrite dans la section Règles de proxy. En outre, le modefixed_servers
n'autorise aucun autre paramètre dans l'objetProxyConfig
. system
- En mode
system
, la configuration du proxy est issue du système d'exploitation. Ce mode n'autorise aucun autre paramètre dans l'objetProxyConfig
. Notez que le modesystem
est différent de l'absence de configuration de proxy. Dans ce dernier cas, Chrome ne revient aux paramètres système que si aucune option de ligne de commande n'influence la configuration du proxy.
Règles de proxy
L'objet proxy.ProxyRules
peut contenir un attribut singleProxy
ou un sous-ensemble de proxyForHttp
, proxyForHttps
, proxyForFtp
et fallbackProxy
.
Dans le premier cas, le trafic HTTP, HTTPS et FTP est transmis par proxy via le serveur proxy spécifié. Le reste du trafic est envoyé directement. Dans le dernier cas, le comportement est légèrement plus subtil: si un serveur proxy est configuré pour le protocole HTTP, HTTPS ou FTP, le trafic correspondant est transmis par proxy via le serveur spécifié. Si aucun serveur proxy de ce type n'est spécifié ou si le trafic utilise un protocole différent de HTTP, HTTPS ou FTP, le champ fallbackProxy
est utilisé. Si aucune valeur fallbackProxy
n'est spécifiée, le trafic est envoyé directement sans serveur proxy.
Objets de serveur proxy
Un serveur proxy est configuré dans un objet proxy.ProxyServer
. La connexion au serveur proxy (définie par l'attribut host
) utilise le protocole défini dans l'attribut scheme
. Si aucun élément scheme
n'est spécifié, la connexion proxy est définie par défaut sur http
.
Si aucun port
n'est défini dans un objet proxy.ProxyServer
, le port est dérivé du schéma.
Les ports par défaut sont les suivants:
Scheme | Port |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
Liste de contournements
Vous pouvez exclure des serveurs individuels de l'envoi par proxy avec bypassList
. Cette liste peut contenir les entrées suivantes:
[SCHEME://]HOST_PATTERN[:PORT]
Correspond à tous les noms d'hôte correspondant au modèle
HOST_PATTERN
. Un"."
de début est interprété comme un"*."
.Exemples:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.Schéma Correspond à Ne correspond pas ".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"
et"foofoobar.com"
[SCHEME://]IP_LITERAL[:PORT]
Faire correspondre les URL qui sont des littéraux d'adresse IP. D'un point de vue conceptuel, il s'agit du même cas que le premier, mais avec des cas particuliers pour gérer la mise en forme canonique des littéraux IP. Par exemple, la correspondance sur "[0:0:0::1]" est identique à la correspondance sur "[::1]", car la mise en forme canonique IPv6 est effectuée en interne.
Exemples:
127.0.1
,[0:0::1]
,[::1]:80
,https://[::1]:443
IP_LITERAL/PREFIX_LENGTH_IN_BITS
Rechercher une correspondance avec n'importe quelle URL contenant un littéral d'adresse IP (
IP_LITERAL
) dans la plage donnée. La plage d'adresses IP (PREFIX_LENGTH_IN_BITS
) est spécifiée à l'aide de la notation CIDR.Rechercher une correspondance avec n'importe quelle URL contenant un littéral d'adresse IP compris dans la plage donnée. La plage d'adresses IP est spécifiée au format CIDR. Exemples :
"192.168.1.1/16", "fefe:13::abc/33"
<local>
La chaîne littérale
<local>
correspond à des noms d'hôte simples. Un nom d'hôte simple est un nom qui ne contient aucun point et n'est pas un littéral IP. Par exemple,example
etlocalhost
sont des noms d'hôte simples, contrairement àexample.com
,example.
et[::1]
.Exemple :
"<local>"
Exemples
Le code suivant définit un proxy SOCKS 5 pour les connexions HTTP à tous les serveurs, à l'exception de foobar.com, et utilise des connexions directes pour tous les autres protocoles. Ces paramètres s'appliquent aux fenêtres standards et aux fenêtres de navigation privée, car celles-ci héritent de ceux des fenêtres standards. Veuillez également consulter la documentation de l'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() {}
);
Le code suivant définit un script PAC personnalisé.
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() {}
);
L'extrait de code suivant interroge les paramètres de proxy actuellement en vigueur. Les paramètres de proxy effectifs peuvent être déterminés par une autre extension ou par une règle. Pour en savoir plus, consultez la documentation sur l'API Types.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Notez que l'objet value
transmis à set()
n'est pas identique à l'objet value
transmis à la fonction de rappel de get()
. Ce dernier contiendra un élément rules.proxyForHttp.port
.
Types
Mode
Enum
"direct"
"auto_detect"
"pac_script"
"system"
PacScript
Objet contenant les informations de configuration automatique du proxy. Un seul des champs ne doit pas être vide.
Propriétés
-
data
string facultatif
Un script PAC.
-
obligatoire
Booléen facultatif
Si la valeur est "true", un script PAC non valide empêchera la pile réseau de revenir aux connexions directes. Valeur par défaut : "false".
-
url
string facultatif
URL du fichier PAC à utiliser.
ProxyConfig
Objet encapsulant une configuration de proxy complète.
Propriétés
-
Standard
'direct' = Ne jamais utiliser de proxy 'auto_detect' = Détecter automatiquement les paramètres de proxy 'pac_script' = Utiliser le script PAC spécifié 'Fixed_servers = Définir manuellement les serveurs proxy 'system' = Utiliser les paramètres de proxy du système
-
pacScript
PacScript facultatif
Script de configuration automatique du proxy (PAC) pour cette configuration. Utilisez-le pour le mode "pac_script".
-
règles
ProxyRules facultatif
Règles de proxy décrivant cette configuration. Utilisez-la pour le mode "Fixed_servers".
ProxyRules
Objet encapsulant l'ensemble de règles de proxy pour tous les protocoles. Utilisez "singleProxy" ou (un sous-ensemble de) "proxyForHttp", "proxyForHttps", "proxyForFtp" et "fallbackProxy".
Propriétés
-
bypassList
string[] facultatif
Liste des serveurs auxquels se connecter sans serveur proxy.
-
fallbackProxy
ProxyServer facultatif
Serveur proxy à utiliser pour toute autre action ou si aucun des champs proxyFor... spécifique n'est spécifié.
-
proxyForFtp
ProxyServer facultatif
Serveur proxy à utiliser pour les requêtes FTP.
-
proxyForHttp
ProxyServer facultatif
Serveur proxy à utiliser pour les requêtes HTTP.
-
proxyForHttps
ProxyServer facultatif
Serveur proxy à utiliser pour les requêtes HTTPS.
-
singleProxy
ProxyServer facultatif
Serveur proxy à utiliser pour toutes les requêtes par URL (HTTP, HTTPS et FTP).
ProxyServer
Objet encapsulant les spécifications d'un seul serveur proxy.
Propriétés
-
hôte
chaîne
Nom d'hôte ou adresse IP du serveur proxy. Les noms d'hôte doivent être en ASCII (au format Punycode). IDNA n'est pas encore accepté.
-
port
numéro facultatif
Port du serveur proxy. La valeur par défaut est un port qui dépend du schéma.
-
schéma
Schéma facultatif
Schéma (protocole) du serveur proxy lui-même. La valeur par défaut est "http".
Scheme
Enum
"http"
"https"
"quic"
"socks4"
"socks5"
Propriétés
settings
Paramètres de proxy à utiliser. La valeur de ce paramètre est un objet ProxyConfig.
Événements
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Notifie les erreurs de proxy.
Paramètres
-
rappel
function
Le paramètre
callback
se présente comme suit :(details: object) => void
-
détails
objet
-
détails
chaîne
Informations supplémentaires sur l'erreur, comme une erreur d'exécution JavaScript.
-
error
chaîne
Description de l'erreur.
-
fatal
boolean
Si la valeur est "true", l'erreur était fatale et la transaction réseau a été annulée. Sinon, une connexion directe est utilisée.
-
-