refresh date: 2026-09-25 robots: noindex
Descripción
Usa la API de chrome.proxy para administrar la configuración de proxy de Chrome. Esta API se basa en el prototipo ChromeSetting de la API de tipo para obtener y establecer la configuración del proxy.
Permisos
proxyManifiesto
Debes declarar el permiso "proxy" en el manifiesto de la extensión para usar la API de configuración del proxy. 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 la configuración contenga proxy.ProxyRules o un 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 tomar 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 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 PAC que se recupera de la URL especificada en el objetoproxy.PacScripto se toma literalmente del elementodataespecificado en el objetoproxy.PacScript. Además, 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. Su estructura se describe en Reglas de proxy. Además de esto, el modofixed_serversno 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 modosystemes 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 a través del servidor proxy especificado. El resto del tráfico se envía directamente. En el último caso, el comportamiento es un poco más sutil: si se configura un servidor proxy para el protocolo HTTP, HTTPS o FTP, el tráfico respectivo se envía a través del servidor especificado. Si no se especifica un servidor proxy de este tipo o el tráfico usa un protocolo diferente de HTTP, HTTPS o FTP, se usa fallbackProxy. Si no se especifica ningún fallbackProxy, el tráfico se envía directamente sin un servidor proxy.
Objetos del servidor proxy
Se configura un servidor proxy en un objeto proxy.ProxyServer. La conexión al servidor proxy (definida por el atributo host) usa el protocolo definido en el atributo scheme. Si no se especifica ningún scheme, la conexión del 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
Los servidores individuales se pueden excluir del proxy con bypassList. Esta lista puede contener las siguientes entradas:
[SCHEME://]HOST_PATTERN[:PORT]Coincide con todos los nombres de host que coinciden 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 Combinaciones 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]Coincide con las URLs que son literales de direcciones IP. Conceptualmente, es similar al primer caso, pero con casos especiales para controlar la canonización literal de IP. Por ejemplo, la coincidencia con "[0:0:0::1]" es la misma que la coincidencia con "[::1]" porque la canonización de IPv6 se realiza de forma interna.
Ejemplos:
127.0.1,[0:0::1],[::1]:80,https://[::1]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSCoincide con cualquier URL que contenga un literal de IP (
IP_LITERAL) dentro del rango determinado. 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 determinado. 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,exampleylocalhostson nombres de host simples, mientras queexample.com,example.y[::1]no lo son.Ejemplo:
"<local>"
Ejemplos
El siguiente código establece un proxy SOCKS 5 para las conexiones HTTP a todos los servidores, excepto 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 las ventanas de incógnito heredan la configuración de las ventanas normales. También consulta 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 establece una secuencia de comandos 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() {}
);
El siguiente fragmento consulta la configuración de proxy vigente. Otra extensión o una política pueden determinar la configuración de proxy efectiva. Consulta la documentación de la API de Types para obtener más detalles.
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 la función de devolución de llamada de get(). Este último contendrá un elemento rules.proxyForHttp.port.
Tipos
Mode
Enum
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Es un objeto que contiene información de configuración automática del proxy. Exactamente uno de los campos debe estar completo.
Propiedades
-
datos
cadena opcional
Una secuencia de comandos PAC
-
obligatorio
booleano opcional
Si es verdadero, un script de PAC no válido impedirá que la pila de red recurra a conexiones directas. La configuración predeterminada es "false".
-
url
cadena opcional
Es la URL del archivo PAC que se usará.
ProxyConfig
Objeto que encapsula una configuración de proxy completa.
Propiedades
-
Standard
"direct" = Nunca usar un proxy "auto_detect" = Detectar automáticamente la configuración del proxy "pac_script" = Usar el script PAC especificado "fixed_servers" = Especificar manualmente los servidores proxy "system" = Usar la configuración del proxy del sistema
-
pacScript
PacScript opcional
Es la secuencia de comandos de configuración automática del proxy (PAC) para esta configuración. Se usa para el modo "pac_script".
-
reglas
ProxyRules opcional
Son las reglas de proxy que describen esta configuración. Se usa para el modo “fixed_servers”.
ProxyRules
Es 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
cadena[] opcional
Lista de servidores a los que se puede conectar sin un servidor proxy.
-
fallbackProxy
ProxyServer opcional
Es el servidor proxy que se usará para todo lo demás o si no se especifica ninguno de los proxyFor… específicos.
-
proxyForFtp
ProxyServer opcional
Es el servidor proxy que se usará para las solicitudes de FTP.
-
proxyForHttp
ProxyServer opcional
Es el servidor proxy que se usará para las solicitudes HTTP.
-
proxyForHttps
ProxyServer opcional
Es el servidor proxy que se usará para las solicitudes HTTPS.
-
singleProxy
ProxyServer opcional
Es el servidor proxy que se usará para todas las solicitudes por URL (es decir, http, https y ftp).
ProxyServer
Es un objeto que encapsula la especificación de un solo servidor proxy.
Propiedades
-
host
string
Nombre de host o 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
Es 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. El valor predeterminado es “http”.
Scheme
Enum
"http"
"https"
"quic"
"socks4"
"socks5"
Propiedades
settings
Es la configuración de proxy que se usará. El valor de este parámetro de configuración es un objeto ProxyConfig.
Eventos
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Notifica sobre errores del proxy.
Parámetros
-
callback
función
El parámetro
callbackse ve de la siguiente manera:(details: object) => void
-
detalles
objeto
-
detalles
string
Son detalles adicionales sobre el error, como un error de tiempo de ejecución de JavaScript.
-
error
string
Es la descripción del error.
-
fatal
booleano
Si es verdadero, el error fue fatal y se anuló la transacción de red. De lo contrario, se usará una conexión directa.
-
-