Tours

La extensión de navegador: el recorrido

11 min de lecturaView as markdown ↗

La extensión es URnetwork dentro del navegador, y la app web de ur.io es su plano de control: un producto, dos mitades. Esta página es la inmersión a fondo: la maquinaria de proxy en cada navegador, los controles con sus valores de fábrica, qué promete y qué no promete el kill switch (interruptor de corte), y qué comprobar cuando algo se rompe. Para la red que hay detrás, quiénes son los proveedores y qué puede ver cada parte, lee la visión general. Para los enlaces de las tiendas, el inicio de sesión y la primera conexión, empieza por los primeros pasos en el navegador.

El encuadre que hay que conservar, siempre: esto es un proxy de navegador, no una VPN. Un proxy es un intermediario que busca los sitios por el navegador, de modo que los sitios ven su dirección en lugar de la tuya. La extensión configura los ajustes de proxy propios del navegador, así que gobierna exactamente lo que ese navegador envía, nada más. Cubierto: cada pestaña y ventana de ese navegador, incógnito incluido, en Chromium siempre y en Firefox una vez que lo permitas en las ventanas privadas. No cubierto: otros navegadores, tu app de correo, las actualizaciones del sistema, todo lo demás, tanto lo desprotegido como lo intacto. Instálala por navegador; la cobertura de todo el dispositivo es trabajo de las apps de URnetwork (Android, iOS, macOS, Windows, Linux): la misma cuenta, el mismo kill switch, una capa más abajo.

El popup de la extensión

Los ajustes de un vistazo

La extensión mantiene su superficie pequeña a propósito. Dos controles, ambos en el popup:

AjusteValor por defectoEfectoCoste principal
Kill switchActivadobloquea el tráfico del navegador cuando el proxy se cae, en lugar de recurrir a tu conexión directalas pestañas dan error durante una caída
Ajuste manual de geolocalización (Geolocation override)Desactivadola API de geolocalización del navegador informa de tu ciudad de salida en lugar de tu posición reallos sitios para los que quieres tu ubicación real lo necesitan apagado; mantenerse al día necesita una pestaña de ur.io abierta

Salvedades que acompañan a la tabla:

  • Dos conmutadores de las apps no tienen equivalente en el navegador, por diseño. Aquí no hay Cifrado poscuántico (Post Quantum Encryption), porque la extensión no tiene sesión cliente-proveedor que sellar; la excepción completa está bajo Recopilación de datos, abajo. Y no hay conmutador de Anonimización fuerte (Strong Anonymization), porque el modo directo está forzado a desactivado en el dispositivo proxy alojado en el que corre la extensión: a ningún proveedor se le puede entregar jamás tu dirección real.
  • El kill switch persiste a través de los reinicios del navegador, así que una caída te deja bloqueado, no expuesto, hasta que te desconectes o la ruta se recupere.

Cómo funciona

La extensión es Manifest V3 en todos los navegadores, pero la fontanería del proxy difiere, porque las APIs de los navegadores lo hacen:

  • Chrome y Edge (y los navegadores de la familia Chromium en general) usan la API de ajustes de proxy. La extensión instala un script PAC generado, un pequeño archivo de reglas que el navegador consulta para decidir adónde va cada petición, que envía el tráfico del navegador a tus endpoints proxy de URnetwork aprovisionados. Establecerlo reclama la configuración de proxy del navegador, que es también la razón de que dos extensiones de proxy no puedan coexistir (ver resolución de problemas). Nunca toca los ajustes del sistema operativo y se deshace limpiamente: desconectar revierte a directo, desinstalar retira la reclamación.
  • Firefox no tiene una entrega de ajustes equivalente, así que usa proxy.onRequest: la extensión es consultada por petición y responde con la lista completa de proxies aprovisionados, de modo que un proxy inalcanzable no deja tirada la petición. direct se añade al final de esa lista solo si has desactivado el kill switch; armado, la lista termina en el último proxy y una caída total falla.

No hay versión para Safari, porque Safari carece de estas APIs. En los dispositivos Apple la app lo cubre todo, Safari incluido.

La navegación sale por una pequeña ventana de proveedores a la vez: dispositivos de miembros cuyos dueños dieron su consentimiento y participan en el protocolo UR. "Tu IP de salida" es plural, y la afinidad por sitio mantiene cada sitio en una salida, así que tu banco ve una dirección consistente.

El SDK de URnetwork viaja como WebAssembly dentro del paquete de la extensión. El aprovisionamiento, el listado de ubicaciones y las llamadas a la API corren todos en local. Nada ejecutable se descarga en tiempo de ejecución; lo que la tienda revisó es lo que corre.

La app web es el plano de control de la extensión; son un solo producto. Inicia sesión una vez en ur.io y la página y la extensión hablan por un puente documentado: un protocolo corto de verbos (SETUP, CONNECT, DISCONNECT, SET_LOCATION, kill switch, sincronización de geolocalización) transportado por window.postMessage, el único canal que funciona igual en Chrome, Edge, Brave y Firefox. SETUP entrega la sesión iniciada directamente, y por eso configurar desde la app nunca te pide un código de autorización. La división del trabajo es real: la extensión acuña la sesión de proxy e instala el proxy del navegador, mientras la app sostiene el dispositivo vivo. Cambiar la ubicación en la app lo reencamina sin reconexión del navegador, y cada superficie muestra lo que hiciste en la otra.

El puente es estrecho a propósito. Corre solo en las páginas de ur.io y app.ur.network; ningún otro sitio puede hablar con la extensión. Otro script sí se carga en todas las páginas, el del ajuste de geolocalización, y se queda inerte, con los nativos intactos, salvo que lo actives (abajo).

Iniciar sesión requiere una cuenta, porque el uso se mide por cuenta: un código por correo o teléfono, una de las opciones de SSO de ur.io, una firma de cartera o un código de autorización generado en un dispositivo donde ya tienes sesión. Las vías sin correo aquí son la cartera y el código de autorización; la Cuenta instantánea sin correo de un toque se crea en las apps de teléfono y escritorio, y la extensión recoge esa cuenta como cualquier otra. El plan gratuito es una cuota de datos diaria; Pro, una mensual grande (5 $/mes o 40 $/año; números vigentes en ur.io/products).

Semántica del kill switch

Lo que hace: si la conexión del proxy se cae con el kill switch activado, la extensión bloquea el tráfico del navegador en lugar de dejar que el navegador recurra en silencio a tu conexión directa y exponga tu dirección real a mitad de sesión.

  • Está activado por defecto, la única superficie de URnetwork que sale armada de fábrica.
  • La aplicación es la propia regla de proxy del navegador: armado, no tiene escotilla de "si no, ve directo", así que las peticiones fallan en lugar de recurrir. Persiste a través de los reinicios del navegador. Vuelves bloqueado, no expuesto.
  • Si se dispara, solo se detiene este navegador (las pestañas dan error; el popup muestra por qué). El resto de tu ordenador nunca pasó por él.
  • Desactivarlo significa fallar en abierto: una conexión caída te revierte a la navegación directa, visible en el popup pero silenciosa en tus pestañas. Aceptable solo donde una fuga es una molestia, no un daño.
  • Límite de alcance: bloquea el tráfico del navegador, que es todo lo que una extensión puede gobernar; no es un cortafuegos del sistema. Las direcciones locales (localhost, impresoras) lo esquivan a propósito, y WebRTC (voz/vídeo dentro del navegador) puede abrir conexiones que ignoran los ajustes de proxy, un hueco de toda extensión de proxy; los navegadores pueden restringirlo.

Ajuste manual de geolocalización

Dos señales: tu dirección IP ahora dice Ámsterdam, pero la API de geolocalización del navegador, respondida con señales del sistema como las Wi-Fi cercanas, sigue informando de dónde está tu cuerpo. Los sitios que comparan las dos ven la contradicción. El ajuste arregla la segunda señal para que ambas historias concuerden:

  • Desactivado por defecto. Nada cambia hasta que lo actives en el popup.
  • Activado, responde en document_start en todos los frames, de modo que la API de geolocalización da tu ubicación de salida antes de que ningún script de página pueda preguntar, incluso en iframes que intenten ganarle la carrera. Las coordenadas son la ciudad de tu proveedor conectado más antiguo, y llegan a la extensión por el puente de la app: la extensión no sostiene ningún dispositivo propio, así que una pestaña de ur.io abierta es lo que mantiene la posición al día.
  • Desactivado, no dice nada en absoluto: la página conserva su geolocalización nativa y a ningún sitio se le entrega una señal nueva de que usas una extensión. Apágalo cuando quieras que los sitios vean tu ubicación real (mapas, repartos).

Pings de salud y el estado degradado

Conectada, la extensión descarga un endpoint ligero (my-ip-info en la API de URnetwork) a través del proxy cada cinco minutos, insignificante incluso frente a la cuota gratuita. Eso demuestra que la ruta funciona de extremo a extremo, no solo que los ajustes se aplicaron:

  • Dos fallos consecutivos: el estado pasa a degradado. Sigues configurado, pero no está confirmado que el tráfico fluya. El popup muestra un indicador de inestabilidad.
  • Tres fallos consecutivos: reconexión automática, con espera creciente (2 s doblando hasta 30 s, cinco intentos), reaprovisionando proxies según haga falta.
  • Un éxito en cualquier punto devuelve el estado de golpe a conectado. Un periodo de gracia tras conectar evita el vaivén mientras la primera conexión se asienta.

Degradado no es una fuga. Sigues apuntado al proxy, y armado, una ruta muerta bloquea en lugar de exponer. No es un error que arreglar; es la extensión avisándote pronto, normalmente de una red inestable entre tú y el proxy.

Recopilación de datos: ninguna

  • La ficha de Firefox lo declara en el manifiesto, legible por máquina: data_collection_permissions es none. Es una declaración que la tienda hace cumplir, no una promesa de página de privacidad.
  • La extensión habla solo con la API de URnetwork para aprovisionar tus proxies, las mismas llamadas que hace cualquier cliente. Sin analítica, sin telemetría, sin recopilación de historial de navegación en ninguna parte.
  • Los permisos de host difieren por navegador, por una razón. En Chrome la extensión pide acceso solo a los hosts de la API de URnetwork (api.bringyour.com, api-v4.bringyour.com); la API de proxy basada en PAC no necesita ver tus peticiones. En Firefox la extensión necesita : proxy.onRequest consulta a la extensión por cada petición que podría enrutar, y Firefox exige acceso de host para que eso funcione. El permiso más amplio allí es el coste de la API de proxy de Firefox, no un acaparamiento de datos.
  • Ningún tercero ha evaluado la extensión. La app de Android de URnetwork superó una evaluación MASA AL2 de Leviathan Security Group en mayo de 2025, la lista de comprobación de seguridad fija de Google para apps móviles, y una firma independiente hizo una prueba de penetración de la aplicación web y la API ese abril; ninguna cubre la extensión, y ninguna auditoría independiente cubre el protocolo ni el código de servidor del operador. Lo que esta página ofrece en su lugar es falsable: esos permisos son legibles en tu propia copia instalada, nada se descarga en tiempo de ejecución y el código es público. Afirmaciones que puedes comprobar, no un certificado.

Lo que el servicio conserva: tu cuenta y un registro de recuentos de bytes por dispositivo (eso son las cuotas y la medición de proveedores), nunca destinos ni URLs; una dirección de cliente guardada como hash unidireccional con clave de tu bloque de IP y no la dirección en sí; y una ciudad aproximada de una consulta geográfica. Los proveedores sacan el tráfico sin conocer tu dirección real, viendo solo metadatos de grado ISP (nombres de sitios, nunca páginas ni contraseñas, que siguen selladas con HTTPS); los sitios web ven solo la salida.

Sé exacto con el medio, eso sí. La red tiene tres modos, y el navegador solo ocupa siempre uno de ellos:

ModoEl operador veEl proveedor veDisponible aquí
Retransmitido estándartu cuenta y conexión de origen, en qué proveedores estás, y los destinos y bytes de paquete del interiorlos destinos que saca a internet y un id de dispositivo/contrato, no tu IP realsí: el único modo del navegador
Retransmitido selladolo mismo, pero texto cifrado con su tiempo y volumen en lugar de destinoscomo arribano: la sesión cifrada-hasta-el-proveedor de las apps, activada allí por defecto, no tiene equivalente en el navegador
Directomenos intervención en la retransmisióntu IP real y los destinos que saca a internetno: forzado a desactivado en el dispositivo proxy alojado en el que corre la extensión

Esa primera fila es la posición del navegador, y el contraste con las apps es nítido y no suave: ellas sellan la sesión cliente↔proveedor por defecto, y el navegador no tiene allí sesión que sellar. No puede tenerla. Un navegador habla su propio protocolo de proxy y no puede ejecutar el motor de la red, así que tu dispositivo cliente corre en remoto dentro del operador, que traduce entre los dos protocolos — un sellado iniciado desde ese dispositivo empezaría en el operador, la parte a la que un sellado existe para cegar. La implementación cambió el sellado por llegar siquiera al navegador. La garantía aquí es de almacenamiento y no de cifrado. Cualquier proxy de navegador entrega cada destino al endpoint que marca, así que el operador maneja los tuyos en tránsito; lo que respalda eso es una ruta de datos del proxy que no escribe ningún log, fijada por un test de regresión en el código abierto, y un registro sin ningún sitio donde poner un destino. El conmutador Anonimización fuerte de las apps está igualmente ausente e igualmente no hace falta: con el modo directo forzado a desactivado, a ningún proveedor se le puede entregar jamás tu dirección real.

Para lo que la propia red puede ver y no ver una vez que tu tráfico fluye, lee la visión general. El modelo de amenazas va más lejos y nombra el sellado ausente de la ruta del navegador como uno de sus propios fallos.

Resolución de problemas

"No se pudo aprovisionar ninguna conexión proxy. Revisa tu cuenta." (Failed to provision any proxy connections. Check your account.)

La extensión pidió a la API credenciales de proxy y no se concedió ninguna. Casi siempre una condición de la cuenta:

  1. Confirma que puedes iniciar sesión en ur.io y revisa tu plan. Una cuota diaria gratuita agotada es la causa habitual (se renueva a diario).
  2. Comprueba si el límite de clientes simultáneos de tu plan está agotado por otros dispositivos; desconecta uno.
  3. Cierra sesión en la extensión y vuelve a entrar para refrescar las credenciales.

"Conexión perdida. Reconéctate." (Connection lost. Please reconnect.)

Las comprobaciones de salud fallaron repetidamente y la reconexión automática agotó los intentos. Tu red subyacente probablemente cambió (cambio de red, portátil dormido, Wi-Fi hostil). Reconéctate desde el popup; si se repite en una red concreta, esa red puede estar bloqueando los puertos del proxy.

Otra extensión pelea por el proxy

Solo una extensión puede controlar los ajustes de proxy del navegador a la vez (en Chrome, gana la instalada más recientemente). Ejecuta otra extensión de VPN o proxy y se intercambian el ajuste una y otra vez, pareciendo rotas las dos. El popup lo dice cuando pierde el control, y chrome://settings nombra al titular actual; desactiva la otra. En Firefox, busca otros complementos instalados con permiso de proxy.

Portales cautivos

La Wi-Fi de hoteles y aeropuertos necesita que inicies sesión en una página portal antes de que internet funcione, y con el proxy arriba (especialmente armado), el portal no puede cargar. No puedes quedarte atascado: desconectar es local y no necesita red. Desconecta la extensión, completa el inicio de sesión del portal y reconecta. Inherente a todo proxy y VPN, no un fallo de la extensión.

Leer el estado

El indicador de estado del popup es el diagnóstico más rápido:

  • Inactivo (Idle): sesión iniciada, sin conectar. La navegación es directa.
  • Conectando (Connecting) (indicador giratorio): aprovisionando proxies y aplicando ajustes.
  • Conectado (Connected): configurado y con comprobación de salud reciente.
  • Degradado (Degraded) (icono de inestabilidad): configurado, pero los pings de salud están fallando; espera una reconexión si persiste.
  • Reconectando (Reconnecting): recuperación automática en curso; déjalo estar.
  • Error: uno de los mensajes de arriba, con el arreglo listado aquí.

Adónde ir ahora