Descripción
Usa la API de chrome.proxy
para administrar la configuración de proxy de Chrome. Esta API se basa en el prototipo de configuración de Chrome de la API de tipo para obtener y establecer la configuración del proxy.
Permisos
proxy
Manifest
Para usar la API de configuración de proxy, debes declarar el permiso de "proxy" en el manifiesto de extensión. Por ejemplo:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Objetos y propiedades
La configuración del proxy se define en un objeto proxy.ProxyConfig
. Según la configuración de proxy de Chrome, es posible que contenga proxy.ProxyRules
o proxy.PacScript
.
Modos de proxy
El atributo mode
de un objeto ProxyConfig determina el comportamiento general de Chrome con respecto al uso del proxy. Puede tener los siguientes valores:
direct
- En el modo
direct
, todas las conexiones se crean directamente, sin ningún proxy involucrado. Este modo no permite más parámetros en el objetoProxyConfig
. auto_detect
- En el modo
auto_detect
, la configuración del proxy se determina mediante una secuencia de comandos de PAC que se puede descargar en http://wpad/wpad.dat. Este modo no permite más parámetros en el objetoProxyConfig
. pac_script
- En el modo
pac_script
, la configuración del proxy se determina mediante una secuencia de comandos de PAC que se recupera de la URL especificada en el objetoproxy.PacScript
o se toma literalmente del elementodata
especificado en el objetoproxy.PacScript
. Además de esto, este modo no permite más parámetros en el objetoProxyConfig
. fixed_servers
- En el modo
fixed_servers
, la configuración del proxy se codifica en un objetoproxy.ProxyRules
. Su estructura se describe en Reglas de proxy. Además de esto, el modofixed_servers
no permite más parámetros en el objetoProxyConfig
. system
- En el modo
system
, la configuración del proxy se toma del sistema operativo. Este modo no permite más parámetros en el objetoProxyConfig
. Ten en cuenta que el modosystem
es diferente de no establecer ninguna configuración de proxy. En el último caso, Chrome recurre a la configuración del sistema solo si ninguna opción de la línea de comandos influye en la configuración del proxy.
Reglas de proxy
El objeto proxy.ProxyRules
puede contener un atributo singleProxy
o un subconjunto de proxyForHttp
, proxyForHttps
, proxyForFtp
y fallbackProxy
.
En el primer caso, el tráfico HTTP, HTTPS y FTP se envía mediante proxy a través del servidor proxy especificado. El resto del tráfico se envía directamente. En el último caso, el comportamiento es ligeramente más sutil: si se configura un servidor proxy para el protocolo HTTP, HTTPS o FTP, el tráfico respectivo se envía mediante proxy a través del servidor especificado. Si no se especifica tal servidor proxy o el tráfico usa un protocolo diferente a HTTP, HTTPS o FTP, se usará fallbackProxy
. Si no se especifica un fallbackProxy
, el tráfico se envía directamente sin un servidor proxy.
Objetos de servidor proxy
Se configura un servidor proxy en un objeto proxy.ProxyServer
. La conexión al servidor proxy (definido por el atributo host
) usa el protocolo definido en el atributo scheme
. Si no se especifica scheme
, la conexión de proxy se establece de forma predeterminada en http
.
Si no se define ningún port
en un objeto proxy.ProxyServer
, el puerto se deriva del esquema.
Los puertos predeterminados son los siguientes:
Esquema | Puerto |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
Lista de excepciones
Es posible que los servidores individuales no se envíen mediante proxy con el bypassList
. Esta lista puede contener las siguientes entradas:
[SCHEME://]HOST_PATTERN[:PORT]
Haz coincidir todos los nombres de host que coincidan con el patrón
HOST_PATTERN
. Un"."
inicial se interpreta como una"*."
.Ejemplos:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.Patrón Mostrar coincidencias No coincide ".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"
y"foofoobar.com"
[SCHEME://]IP_LITERAL[:PORT]
Haz coincidir las URLs que son literales de direcciones IP. En teoría, es similar al primer caso, pero con casos especiales para controlar la canonicalización literal de IP. Por ejemplo, la coincidencia en "[0:0:0::1]" es igual que en "[::1]" porque la canonicalización de IPv6 se realiza internamente.
Ejemplos:
127.0.1
,[0:0::1]
,[::1]:80
,https://[::1]:443
IP_LITERAL/PREFIX_LENGTH_IN_BITS
Haz coincidir cualquier URL que contenga un literal de IP (
IP_LITERAL
) dentro del rango dado. El rango de IP (PREFIX_LENGTH_IN_BITS
) se especifica con la notación CIDR.Coincide con cualquier URL que contenga un literal de IP dentro del rango dado. El rango de IP se especifica con la notación CIDR. Ejemplos:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
La cadena literal
<local>
coincide con nombres de host simples. Un nombre de host simple es aquel que no contiene puntos y no es un literal de IP. Por ejemplo,example
ylocalhost
son nombres de host simples, mientras queexample.com
,example.
y[::1]
no lo son.Ejemplo:
"<local>"
Ejemplos
El siguiente código configura un proxy SOCKS 5 para las conexiones HTTP a todos los servidores, excepto a foobar.com, y usa conexiones directas para todos los demás protocolos. La configuración se aplica a las ventanas normales y de incógnito, ya que estas heredan la configuración de las ventanas normales. Consulta también la documentación de la API de 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() {}
);
El siguiente código configura una secuencia de comandos de PAC personalizada.
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() {}
);
Con el siguiente fragmento, se consulta la configuración de proxy vigente en la actualidad. La configuración de proxy efectiva se puede determinar por otra extensión o por una política. Consulta la documentación de la API de Types para obtener más información.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Ten en cuenta que el objeto value
que se pasa a set()
no es idéntico al objeto value
que se pasó a la función de devolución de llamada de get()
. Este último contendrá un elemento rules.proxyForHttp.port
.
Tipos
Mode
Enum
"auto_detect"
"pac_script"
"system"
PacScript
Un objeto que contiene información de configuración automática del proxy. Exactamente uno de los campos no debe estar vacío.
Propiedades
-
datos
cadena opcional
Un guion de PAC
-
obligatorio
booleano opcional
Si es verdadero, una secuencia de comandos de PAC no válida evitará que la pila de red recurra a conexiones directas. La configuración predeterminada es "false".
-
url
cadena opcional
La URL del archivo PAC que se usará.
ProxyConfig
Un objeto que encapsula una configuración completa del proxy.
Propiedades
-
Standard
"direct" = Nunca usar un proxy 'auto_detect' = Detección automática de la configuración de proxy 'pac_script' = Usar la secuencia de comandos de PAC especificada ' fixed_servers' = Especificar manualmente los servidores proxy 'system' = Usar la configuración de proxy del sistema
-
pacScript
PacScript opcional
La secuencia de comandos de configuración automática de proxy (PAC) para esta configuración. Úsalo para el modo “pac_script”.
-
reglas
ProxyRules opcional
Las reglas de proxy que describen esta configuración. Úsalo para el modo 'Fix_servers'.
ProxyRules
Un objeto que encapsula el conjunto de reglas de proxy para todos los protocolos. Usa 'singleProxy' o (un subconjunto de) 'proxyForHttp', 'proxyForHttps', 'proxyForFtp' y 'fallbackProxy'.
Propiedades
-
bypassList
string[] opcional
Lista de servidores a los que conectarse sin un servidor proxy.
-
fallbackProxy
ProxyServer opcional
El servidor proxy que se utilizará para cualquier otra cosa o si no se especifica alguno de los proxies específicos.
-
proxyForFtp
ProxyServer opcional
El servidor proxy que se utilizará para las solicitudes de FTP.
-
proxyForHttp
ProxyServer opcional
El servidor proxy que se usará para las solicitudes HTTP.
-
proxyForHttps
ProxyServer opcional
El servidor proxy que se utilizará para las solicitudes HTTPS.
-
singleProxy
ProxyServer opcional
El servidor proxy que se utilizará para todas las solicitudes por URL (es decir, http, https y ftp).
ProxyServer
Un objeto que encapsula la especificación de un solo servidor proxy.
Propiedades
-
host
cadena
El nombre de host o la dirección IP del servidor proxy. Los nombres de host deben estar en ASCII (en formato Punycode). Aún no se admite IDNA.
-
puerto
número opcional
El puerto del servidor proxy. El valor predeterminado es un puerto que depende del esquema.
-
esquema
Esquema opcional
Es el esquema (protocolo) del servidor proxy. La configuración predeterminada es "http".
Scheme
Enum
"socks4"
"socks5"
Propiedades
settings
Configuración de proxy que se utilizará. El valor de esta configuración es un objeto ProxyConfig.
Eventos
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Notificaciones sobre errores de proxy.
Parámetros
-
callback
la función
El parámetro
callback
se ve de la siguiente manera:(details: object) => void
-
detalles
objeto
-
detalles
cadena
Detalles adicionales sobre el error, como un error del entorno de ejecución de JavaScript.
-
error
cadena
La descripción del error.
-
fatal
boolean
Si es verdadero, el error fue irrecuperable y se anuló la transacción de red. De lo contrario, se utiliza una conexión directa.
-
-