Te conectas al ordenador del trabajo, abres una web dentro del escritorio remoto y te salta un aviso. ¿La web ha detectado RDP? ¿O ha visto un navegador ejecutándose en otro ordenador y algo de ese entorno no le ha gustado?
Una web puede leer señales del navegador e inferir a partir de ellas que hay acceso remoto. Pero las API habituales de pantalla y gráficos que veremos aquí no devuelven un indicador de sesión de escritorio remoto. Describen el entorno del navegador. Los productos comerciales de detección afirman ir más allá, y el software de supervisión instalado es otro caso distinto. Un «sí» o un «no» sin matices borra justo la distinción que importa.
La web lee el navegador del ordenador remoto
Imagina que usas un MacBook para controlar un ordenador de sobremesa con Windows. Si Chrome se ejecuta en ese ordenador con Windows, la página también se ejecuta allí. Tu MacBook muestra el escritorio y envía tus acciones. La visita a la web no pasa a proceder de un Mac porque tus dedos estén sobre un teclado de Mac.
El punto de partida es el mismo con Chrome Remote Desktop, AnyDesk y TeamViewer: primero localiza el navegador que ejecuta la página. No confundas el visor remoto, aunque esté abierto en un navegador, con el navegador que hay dentro del escritorio que controlas.
- El dispositivo desde el que lo controlasMuestra el escritorio remoto y envía tus acciones.
- Conexión de escritorio remotoTransporta la imagen del escritorio y tus acciones entre los dispositivos.
- Navegador del equipo remotoEjecuta la página y responde a sus llamadas a las API del navegador.
- Sitio webRecibe las señales de la página y la conexión web del navegador.
Puede leer los valores que expone el navegador. Estas API no proporcionan un indicador de sesión RDP ni una lista de procesos.
Un agente, una extensión con los permisos adecuados o el administrador del equipo remoto pueden tener acceso adicional. Revisa sus permisos y su política por separado.
Este es el modelo habitual de control remoto, no una garantía sobre todas las funciones de redirección. Una configuración administrada puede redirigir recursos o integrar software en ambos dispositivos. Un agente instalado o una extensión con los permisos adecuados también pueden aportar información a la que una página normal no tiene acceso. Si un servicio te ha pedido instalar algo, hay que analizar sus capacidades por separado.
La conexión web también cuenta. En una configuración sencilla, las peticiones salen por la ruta de red del navegador remoto. La web ve la dirección de salida de esa conexión, no necesariamente la del portátil que muestra el escritorio. Una IP de una red de alojamiento puede levantar sospechas sin demostrar que exista control remoto. Nuestra guía de detección de VPN distingue la reputación de la red de las señales del navegador.
Prueba un cambio de entorno sin usar escritorio remoto
Empieza con una prueba de control que puedas reproducir ahora mismo. Captura una referencia inicial más abajo, estrecha la ventana del navegador y compara. En un móvil, quizá sea más fácil cambiar la orientación. Habrás cambiado lo que una web puede medir sin abrir ninguna sesión remota.
Captura una referencia inicial, cambia el tamaño de esta ventana o el zoom de la página y compara. Las lecturas solo se conservan en la memoria de este componente; al recargar se borran.
Solo se muestran las lecturas actuales. Captura una referencia inicial para empezar.
| API de origen | Referencia inicial | Actual | Comparación |
|---|---|---|---|
navigator.userAgent | Sin capturar | Esperando al navegador | Sin comparar |
screen.width / height | Sin capturar | Esperando al navegador | Sin comparar |
screen.availWidth / availHeight | Sin capturar | Esperando al navegador | Sin comparar |
screen.colorDepth / pixelDepth | Sin capturar | Esperando al navegador | Sin comparar |
window.innerWidth / innerHeight | Sin capturar | Esperando al navegador | Sin comparar |
window.devicePixelRatio | Sin capturar | Esperando al navegador | Sin comparar |
UNMASKED_VENDOR_WEBGL | Sin capturar | Esperando al navegador | Sin comparar |
UNMASKED_RENDERER_WEBGL | Sin capturar | Esperando al navegador | Sin comparar |
Acceso actual a los detalles de WebGL: Los detalles de WebGL no están disponibles o el navegador aún no se ha cargado.
La tabla lee navigator.userAgent, las dimensiones de screen, el área de pantalla disponible, la profundidad de color y de píxel, las dimensiones del área de visualización, devicePixelRatio y las cadenas opcionales de depuración de WebGL. Los nombres de las API aparecen junto a los valores. Nada de esto enumera los programas instalados ni consulta el estado de las sesiones de Windows.
El comparador no hace peticiones de red y conserva las capturas únicamente en la memoria del componente. Al recargar, se borra la referencia inicial. Esto describe esta figura; no significa que todas las demás funciones del sitio trabajen sin conexión. No sube una huella del navegador, no guarda un resultado en tu cuenta ni consulta a un proveedor antifraude.
Una fila marcada como «Sin cambios» solo significa que los dos valores que se han podido leer coinciden. «Ha cambiado» significa que los valores difieren. Si una medición no está disponible, la figura no trata dos valores ausentes como una coincidencia. Es menos espectacular que un aviso rojo de «RDP detectado». También es lo único que permite afirmar la medición.
Un tamaño de pantalla no es una firma de escritorio remoto
screen.width y screen.height devuelven las dimensiones de pantalla expuestas a la web en píxeles CSS. window.innerWidth y window.innerHeight describen el área de visualización de la página. Son mediciones distintas, y ninguna garantiza una lectura del número de píxeles del monitor físico.
El zoom de la página añade otra trampa. Como explica la documentación de devicePixelRatio, el zoom normal de la página afecta a DPR; el zoom con el gesto de pellizcar, no. Mover una ventana entre pantallas con distintas densidades de píxeles también puede cambiarlo. Que cambie esa proporción demuestra un cambio en la lectura, no que haya alguien controlando el equipo a distancia.
Una sesión remota puede presentar una configuración de pantalla distinta. Cambiar de monitor o ajustar la escala del escritorio también. Y, a la inversa, una configuración remota puede mantener los valores que el navegador ya devolvía. Las lecturas de pantalla por sí solas no permiten saber cuál es la explicación correcta.
El viejo truco de la profundidad de color no es una prueba de RDP
Algunas respuestas antiguas recomiendan comprobar si screen.colorDepth es menor de lo esperado. Eso supone que el navegador expone la diferencia de pantalla relevante y que el acceso remoto es su única explicación. Ninguna de esas suposiciones sirve como base para un detector general fiable.
El borrador del editor de CSSOM View actual describe estos campos de pantalla y permite devolver información que proteja la privacidad. Para la profundidad de color, recomienda devolver 24 cuando el navegador no conoce la profundidad o decide no exponerla por privacidad. También recoge comportamientos de compatibilidad relacionados con 24 y 32. Es un borrador de trabajo, no una especificación de RDP.
Así que «24 significa local» y «32 significa remoto» son conclusiones inventadas pegadas a números reales. Puedes anotar los números. Cambiarles la etiqueta no te da certeza sobre la sesión.
Una GPU por software es una pista, no una prueba
La extensión opcional WEBGL_debug_renderer_info expone las cadenas del proveedor y del renderizador. La especificación de Khronos las define como información del driver gráfico y explica los motivos de privacidad por los que los navegadores pueden no ofrecer ese detalle. No define ningún indicador de acceso remoto.
Un renderizador por software te habla de la ruta de renderizado que declara el navegador. No te dice quién mueve el ratón. Tampoco caigas en el error contrario: que aparezca el nombre de una GPU física no descarta una sesión remota. Microsoft documenta expresamente el renderizado acelerado por GPU en Azure Virtual Desktop a través de RDP.
Nuestro artículo sobre fingerprinting de WebGL explica qué revelan esas cadenas y por qué los avisos de los verificadores pueden equivocarse. La figura indica si se han devuelto cadenas de depuración, si la extensión de depuración no está disponible o si ha fallado la lectura. En los demás casos indica que los detalles no están disponibles, sin afirmar que falte el propio contexto de WebGL. No puede identificar la causa oculta.
Qué afirma realmente la detección comercial de acceso remoto
No conviertas la ausencia de un indicador estándar en «ninguna web puede detectar jamás el acceso remoto». PREBYTES comercializa detección de escritorio remoto con integración mediante JavaScript en la web, capas de detección activa y pasiva e informes de riesgo a través de una API. Son afirmaciones del proveedor. No hemos probado su producto ni verificado de forma independiente su precisión.
El resultado de un producto comercial no equivale a una sola propiedad de screen, y este comparador no reproduce ese producto. Tampoco prueba modelos de comportamiento. Un cursor lento no demuestra nada: el retraso tiene otras causas. La interacción humana a distancia tampoco es lo mismo que Selenium controlando un navegador; nuestro artículo sobre detección de automatización aborda esa otra cuestión.
Compara tu configuración antes de cambiarla
Si administras un escritorio remoto cuyo uso está autorizado, mantén esta página abierta en el equipo remoto. Captura una referencia inicial desde su consola física, conéctate a distancia y compara si se conserva la misma sesión de la página. Si se recarga, la referencia se pierde; anota tú las primeras lecturas antes de repetir la prueba. Registra qué cliente, navegador y ajustes de pantalla has usado. No hemos realizado este experimento con RDP, así que estos pasos son un procedimiento de prueba, no unos resultados observados.
Abrir esta página en tu portátil y después en el equipo remoto es otro experimento: estás comparando dos entornos de navegador. Es normal que haya diferencias, y no permiten aislar el acceso remoto como causa. Deja clara esa distinción en tus notas.
Para pruebas legítimas de QA con varios perfiles, un gestor de perfiles como Incogniton puede encajar en tu flujo de trabajo, pero no demuestra que el acceso remoto sea indetectable. Respeta la política de acceso remoto del servicio en vez de interpretar el resultado de un verificador de huellas como un permiso.
Si una web bloquea tu sesión de trabajo, guarda el aviso exacto y las lecturas de antes y después para su equipo de soporte. Después ejecuta el análisis desde el navegador que está dentro de esa sesión, no solo desde el portátil que la muestra.