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 ChromeSetting del tipo de API para obtener y establecer la configuración del proxy.
Permisos
proxy
Debes declarar el "proxy" permiso en el manifiesto de extensión para usar la configuración de proxy en la API de Cloud. Por ejemplo:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Conceptos y uso
Los parámetros de configuración de proxy se definen en un objeto proxy.ProxyConfig
. Según la configuración de proxy de Chrome,
la configuración puede contener proxy.ProxyRules
o proxy.PacScript
.
Modos de proxy
El atributo mode
de un objeto ProxyConfig determina el comportamiento general de Chrome con respecto a lo siguiente:
el uso de proxy. Puede tener los siguientes valores:
direct
- En el modo
direct
, todas las conexiones se crean directamente, sin ningún proxy involucrado. Este modo permite No hay 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 tomada literalmente del elementodata
especificadas en el objetoproxy.PacScript
. Además de esto, este modo no permite otros parámetros en el objetoProxyConfig
. fixed_servers
- En el modo
fixed_servers
, la configuración del proxy se codifica en un objetoproxy.ProxyRules
. Es se describe en Reglas del proxy. Además de esto, el modofixed_servers
no permite parámetros del objetoProxyConfig
. system
- En el modo
system
, la configuración del proxy se toma del sistema operativo. Este modo no permite parámetros adicionales en el objetoProxyConfig
Ten en cuenta que el modosystem
es diferente del no establece ninguna configuración de proxy. En este ú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 dirige a través del servidor proxy especificado. Otra opción
el tráfico se envía directamente. En este último caso, el comportamiento es un poco más sutil: si un servidor proxy
para el protocolo HTTP, HTTPS o FTP, el tráfico respectivo se envía a través del proxy
servidor especificado. Si no se especifica tal servidor proxy o si el tráfico usa un protocolo diferente al
HTTP, HTTPS o FTP, se usa el fallbackProxy
. Si no se especifica un fallbackProxy
, se envía el tráfico
directamente sin un servidor proxy.
Objetos del servidor proxy
Se configura un servidor proxy en un objeto proxy.ProxyServer
. La conexión con el servidor proxy
(definida por el atributo host
) usa el protocolo definido en el atributo scheme
. Si la respuesta es no
Si se especifica scheme
, la conexión con el proxy se establece de forma predeterminada en http
.
Si no se define un 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
Los servidores individuales pueden excluirse del 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 un"*."
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"
,"foofoobar.com"
[SCHEME://]IP_LITERAL[:PORT]
Hacer coincidir las URLs que son literales de dirección IP Conceptualmente, esto es similar al primer caso, pero con casos especiales para manejar la canonicalización literal de IP. Por ejemplo, si se busca coincidencia con “[0:0:0::1]”. es lo mismo que la coincidencia con "[::1]" porque la canonicalización de IPv6 se hace internamente.
Ejemplos:
127.0.1
,[0:0::1]
,[::1]:80
,https://[::1]:443
IP_LITERAL/PREFIX_LENGTH_IN_BITS
Hacer coincidir cualquier URL que contenga un literal de IP (
IP_LITERAL
) dentro del valor especificado del rango de destino de la ruta. El rango de IP (PREFIX_LENGTH_IN_BITS
) se especifica mediante CIDR Notación de imagen.Haz coincidir cualquier URL que contenga un literal de IP dentro del rango especificado. El rango de IP se especifica mediante CIDR la notación global. Ejemplos:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
La string 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 utiliza conexiones directas para todos los demás protocolos. La configuración se aplica a las ventanas regulares y de incógnito, las ventanas de incógnito heredan la configuración de las ventanas normales. Consulta también la API de Types en la documentación de Google Cloud.
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() {}
);
En el siguiente fragmento, se consulta la configuración de proxy efectiva actual. La configuración efectiva del proxy puede ser determinados 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 pasa a
función de devolución de llamada de get()
. Este último contendrá un elemento rules.proxyForHttp.port
.
Tipos
Mode
Enum
“directo”
"auto_detect"
"pac_script"
"fixed_servers"
“sistema”
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
string opcional
Una secuencia de comandos 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
string opcional
La URL del archivo PAC que se usará.
ProxyConfig
Un objeto que encapsula una configuración completa del proxy.
Propiedades
-
Standard
'directo' = Nunca usar un proxy "auto_detect" = Configuración de proxy de detección automática "pac_script" = Usar la secuencia de comandos PAC especificada “fixed_servers” = Especifica manualmente los servidores proxy 'sistema' [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. Use esto para "pac_script" .
-
reglas
ProxyRules opcional
Las reglas del proxy que describen esta configuración. Usar para "fixed_servers" .
ProxyRules
Un objeto que encapsula el conjunto de reglas de proxy para todos los protocolos. Usar "singleProxy" o (un subconjunto de) "proxyForHttp", "proxyForHttps", "proxyForFtp" y "fallbackProxy".
Propiedades
-
bypassList
string[] opcional
Lista de servidores para conectarse sin un servidor proxy.
-
fallbackProxy
ProxyServer opcional
Es el servidor proxy que se usará para todo lo demás o si no se especifica alguno de los proxies proxyFor... específicos.
-
proxyForFtp
ProxyServer opcional
El servidor proxy que se utiliza para las solicitudes FTP.
-
proxyForHttp
ProxyServer opcional
El servidor proxy que se utiliza para las solicitudes HTTP.
-
proxyForHttps
ProxyServer opcional
El servidor proxy que se utiliza para las solicitudes HTTPS.
-
singleProxy
ProxyServer opcional
El servidor proxy que se utiliza para todas las solicitudes por URL (es decir, http, https y ftp).
ProxyServer
Un objeto que encapsula la especificación de un único servidor proxy.
Propiedades
-
host
string
El nombre de host o la dirección IP del servidor proxy. Los nombres de host deben estar en ASCII (en formato Punycode). IDNA aún no es compatible.
-
puerto
número opcional
El puerto del servidor proxy. La configuración predeterminada es un puerto que depende del esquema.
-
esquema
Esquema opcional
El esquema (protocolo) del servidor proxy. La configuración predeterminada es “http”.
Scheme
Enum
“http”
“https”
“quic”
“calcetines4”
“calcetines”
Propiedades
settings
La configuración de proxy que se usará. El valor de esta configuración es un objeto ProxyConfig.
Tipo
types.ChromeSetting<ProxyConfig>
Eventos
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Notifica sobre errores de proxy.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(details: object) => void
-
detalles
objeto
-
detalles
string
Detalles adicionales sobre el error, como un error de tiempo de ejecución de JavaScript.
-
error
string
La descripción del error.
-
fatal
boolean
Si es verdadero, el error fue grave y se anuló la transacción de red. De lo contrario, se utiliza una conexión directa.
-
-