chrome.proxy

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 tipos para obtener y establecer la configuración del proxy.

Permisos

proxy

Manifiesto

Debes declarar el permiso "proxy" en el manifiesto de la extensión para usar la API de configuración de proxy. Por ejemplo:

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

Objetos y propiedades

La configuración de proxy se define en un objeto proxy.ProxyConfig. Según la configuración de proxy de Chrome, esta puede contener 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 de proxies. 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 objeto ProxyConfig.
auto_detect
En el modo auto_detect, la configuración del proxy se determina con 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 objeto ProxyConfig.
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 objeto proxy.PacScript o se toma literalmente del elemento data especificado en el objeto proxy.PacScript. Además, este modo no permite más parámetros en el objeto ProxyConfig.
fixed_servers
En el modo fixed_servers, la configuración del proxy se codifica en un objeto proxy.ProxyRules. Su estructura se describe en Reglas de proxy. Además, el modo fixed_servers no permite más parámetros en el objeto ProxyConfig.
system
En el modo system, la configuración del proxy se toma del sistema operativo. Este modo no permite parámetros adicionales en el objeto ProxyConfig. Ten en cuenta que el modo system es diferente de no establecer ninguna configuración de proxy. En este último caso, Chrome recurre a la configuración del sistema solo si ninguna opción de 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 de servidor proxy

Un servidor proxy se configura 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 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:

EsquemaPuerto
http80
https443
socks41080
socks51080

Lista de excepciones

Se pueden excluir servidores individuales para que no se use un 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ónCombinacionesNo 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, esto es similar al primer caso, pero con casos especiales para controlar la canonicalización literal de IP. Por ejemplo, la coincidencia con "[0:0:0::1]" es la misma que con "[::1]" porque la canonicalización de IPv6 se realiza de forma interna.

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 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, example y localhost son nombres de host simples, mientras que example.com, example. y [::1] no lo son.

Ejemplo: "<local>"

Ejemplos

En el siguiente código, se establece un proxy SOCKS 5 para las conexiones HTTP a todos los servidores, excepto foobar.com, y se usan conexiones directas para todos los demás protocolos. La configuración se aplica a las ventanas normales y de incógnito, ya que estas últimas heredan la configuración de las primeras. 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 establece 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 vigente. La configuración de proxy efectiva se puede determinar con otra extensión o con una política. 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

Chrome 54 y versiones posteriores

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 no debe estar vacío.

Propiedades

  • datos

    string opcional

    Una secuencia de comandos de PAC

  • obligatorio

    booleano opcional

    Si se establece como verdadero, una secuencia de comandos de PAC no válida impedirá que la pila de red recurra a conexiones directas. La configuración predeterminada es "false".

  • url

    string opcional

    Es la URL del archivo PAC que se usará.

ProxyConfig

Es un objeto que encapsula una configuración de proxy completa.

Propiedades

  • Standard

    "direct" = No usar nunca un proxy "auto_detect" = Detectar automáticamente la configuración del proxy "pac_script" = Usar la secuencia de comandos de PAC especificada "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 de proxy (PAC) para este parámetro de configuración. Usa esta opción para el modo "pac_script".

  • reglas

    ProxyRules opcional

    Son las reglas de proxy que describen esta configuración. Usa esta opción 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

    string[] opcional

    Es la lista de servidores a los que se debe 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

    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

    number opcional

    Es el puerto del servidor proxy. La configuración predeterminada es un puerto que depende del esquema.

  • esquema

    Esquema opcional

    Es el esquema (protocolo) del servidor proxy. La configuración predeterminada es "http".

Scheme

Chrome 54 y versiones posteriores

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 callback se 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 usa una conexión directa.