volver al inicio Más artículos

¿Puede una web detectar Inspeccionar elemento y DevTools?

Cuestionable
Abre DevTools (F12) y mira cómo lo nota esta página

Todo se ejecuta en tu navegador y no se envía nada. Abre DevTools, edita el precio, pulsa el botón.

Últimos eventos que registró la página

  • todavía nada

Lo que esta página puede detectar

  • Panel acoplado (diferencia de tamaño de ventana) esperando
    acopla DevTools a un lado o abajo
  • Coste de la consola (tiempo) esperando
    abre DevTools (F12), cualquier panel, cualquier posición
  • Tiempo de debugger esperando
    abre DevTools y luego pulsa el botón de abajo
  • Ediciones de la página esperando
    inspecciona el precio de abajo y edita su texto
  • Atajos y clic derecho esperando
    pulsa F12 o haz clic derecho en esta página
Precio: $49.00

Haz clic derecho sobre el precio, elige Inspeccionar y edita su texto. El botón ejecuta una instrucción debugger: con DevTools abierto la página se congela hasta que pulses Reanudar (F8).

Lo que ningún evento reporta

  • Qué elemento elegiste con Inspeccionar invisible
  • Qué panel estás leyendo (Red, Fuentes, …) invisible
  • Que se abrió una pestaña de view-source invisible

Todo se cuenta en memoria y desaparece al cerrar la pestaña. El widget solo observa: nunca bloquea un atajo ni te oculta nada.

Pulsaste F12 y la página se quedó en blanco. O te mandó a la página de inicio, o se congeló tras un aviso de “Paused in debugger”, o mostró “herramientas de desarrollo detectadas” y dejó de cargar. Sea como sea, el sitio se dio cuenta, y ningún evento se lo dijo.

Los scripts de una página no reciben ninguna señal cuando abres DevTools, eliges un elemento o lees un panel. Lo que sí pueden hacer es notar lo que un DevTools abierto le hace a la página. El widget de esta página ejecuta esas comprobaciones en tu propio navegador, así que abre DevTools ahora mismo y mira cómo reacciona.

La versión corta: ningún script de la página recibe un aviso de que inspeccionaste algo. Los scripts deducen que DevTools está abierto a partir de efectos secundarios: un panel acoplado encoge la página, registrar en la consola se vuelve más lento, una instrucción debugger detiene la página mientras el reloj sigue corriendo. Para dos de esas tres hay una salida barata (desacoplar el panel, desactivar los puntos de interrupción). La medición de la consola no tiene ninguna, y salta también con Puppeteer. Nada de esto identifica a una persona, y las comprobaciones del widget se ejecutan por completo en tu navegador.

¿Puede una web ver que usas Inspeccionar elemento?

No a través de sus scripts. Los navegadores no disparan ningún evento de “DevTools abierto”, y elegir un elemento o leer un panel no le dice nada a la página. El servidor sí puede ver las peticiones normales. Ver el código fuente es una petición corriente de la página o una lectura de tu caché, y Chrome descarga los source maps de un sitio cuando se abre DevTools, así que un servidor que los publique puede registrarlo. Lo que nunca llega a saber es qué elemento elegiste ni qué panel leíste.

Editar una página con Inspeccionar elemento no cambia nada para nadie más. Cambias la copia que tiene tu pestaña, la del servidor queda intacta, y al recargar vuelve el original. La página sí puede notar que uno de sus elementos cambió, porque un MutationObserver reporta ediciones como estas como cambios normales del DOM. Lo comprobé con ediciones de texto y de atributos en Chrome, y el registro no dice nada sobre quién hizo el cambio. Pruébalo con el precio del widget: haz clic derecho sobre él, elige Inspeccionar y edita el texto. El diagrama muestra dónde cae el cambio.

¿De quién es la copia que editaste?
El servidor del sitio
$49.00
lo que cobrará la tienda
Tu navegador, esta pestaña
$49.00
una copia de la página, guardada en memoria
El MutationObserver de la propia página todavía no ha cambiado nada
Una simulación de lo que hace una edición en el panel Elementos (Elements). Cambia la copia de tu pestaña. La página puede notar que sus propios elementos cambiaron, pero no que lo hizo DevTools, y el servidor sigue cobrando $49.00. Al recargar, la edición se descarta.

Cómo puede una página saber que DevTools está abierto

Tres de los trucos funcionan igual. La página no puede preguntar “¿está abierto DevTools?”, así que monta una medición y espera un efecto secundario. Es la misma idea que la detección de bloqueadores de anuncios: la página no ve la herramienta, así que mide lo que la herramienta cambia.

La diferencia de tamaño de ventana. Acoplar DevTools a un lado o abajo le quita espacio a la página, así que window.outerWidth - window.innerWidth (o su equivalente en altura) se dispara. Los scripts marcan una diferencia de más o menos 160 a 170 píxeles. En mi equipo con Windows 11, acoplar DevTools a la derecha movió la diferencia de ancho de 14 a 569 píxeles, y al desacoplarlo volvió a 14. Se activa por error cuando haces zoom en la página o abres una barra lateral. La librería más conocida para esto, devtools-detect, se archivó en mayo de 2026, y su README admite que el método da muchos falsos positivos.

El coste de la consola. El truco clásico registra un objeto con un getter y espera a ver si la consola lo lee. Muchas respuestas antiguas lo siguen describiendo, y en el Chrome actual ya no funciona: en mi prueba con Chrome 155 para Windows, un getter sobre Error.stack y otro sobre el id de un elemento se quedaron en silencio con DevTools abierto. Otras variantes, como un toString personalizado, se disparan con DevTools abierto o sin él, así que no te dicen nada.

Lo que sí se nota es el tiempo. Registrar en la consola casi no cuesta nada hasta que se conecta un cliente de consola, y entonces Chrome tiene que construir una vista previa de cada objeto. Cuarenta llamadas a console.debug con un objeto de 40 claves tardaron menos de un milisegundo con DevTools cerrado y unos pocos milisegundos con DevTools abierto, un salto de unas diez veces en mi equipo. Dio igual que el panel estuviera acoplado o en su propia ventana. El mismo salto apareció con una simple sesión de Chrome DevTools Protocol, que es lo que Puppeteer y Playwright abren por defecto. Una página que cronometra su propio registro contra una referencia puede notarlo. Eso sí, no distingue a un desarrollador de un script, y por eso la detección de bots lo aprovecha. No probé Firefox ni Safari.

La instrucción debugger. Sin DevTools no hace nada. Con DevTools abierto y los puntos de interrupción activados, detiene la página hasta que pulsas Reanudar. Un script lee el reloj antes y después, y una diferencia de más de 100 ms se interpreta como una pausa. Los scripts lo toman como señal de que alguien estaba mirando, aunque una pestaña ralentizada o un equipo lento pueden falsearla. Es también el aviso de “Paused in debugger”. El botón del widget la ejecuta una vez para que lo notes.

El vigilante de ediciones. La cuarta señal no es, en realidad, una comprobación de DevTools. Es el MutationObserver de la sección anterior, apuntando a lo que un script quiera proteger, como un precio o un elemento de un muro de pago. Reporta el cambio, no DevTools.

Tres comprobaciones, dos salidas baratas
  • Diferencia de tamaño de ventana
    Ventana exterior menos área de página
    detectado
  • Coste de la consola
    Cronometrar 40 llamadas a la consola contra una referencia
    detectado
  • Tiempo de debugger
    Una instrucción debugger y un cronómetro
    detectado
Comprobaciones que notan DevTools: 3 / 3
Ninguna comprobación cubre todas las formas de abrir DevTools. Dos tienen una salida barata (desacoplar el panel, desactivar los puntos de interrupción), y por eso los scripts de detección combinan varias, y por eso la medición de la consola es la más difícil de evitar.

Por qué un sitio se congela, redirige o dice “herramientas de desarrollo detectadas”

Los sitios que reaccionan no usan un solo truco. Christian Heilmann desmontó uno en Cracking a “Developer Tools Killer” script. Bloquea el clic derecho y los atajos F12, Ctrl+Shift+I y Ctrl+U, y luego ejecuta un bucle de debugger cada 100 ms y redirige la página si una pausa dura más de 200 ms. Su función de comprobación no está envuelta en un closure, así que él simplemente la sobrescribió.

El motivo suele ser hacer más molesto copiar y hacer scraping. No protege nada, porque todo lo que envía el servidor ya está en tu navegador. Copiar, pegar, los cambios de pestaña y las capturas de pantalla son otro conjunto de señales, que tratamos en ¿puede una web saber si cambias de pestaña, copias o capturas?

¿Puede una web bloquear Inspeccionar elemento o F12?

Una página puede cancelar los eventos de teclado de F12 y Ctrl+Shift+I y el menú del clic derecho, y la mayoría de los scripts de “bloqueo” hacen exactamente eso. Es cosmético. El menú del navegador (Más herramientas, Herramientas para desarrolladores) funciona fuera de la página y no se puede detener. La última fila del widget registra cuáles de estos eventos llegan a la página en tu navegador. Solo observa, nunca los cancela.

Cómo saltarse la detección de DevTools y evitar la congelación

DevTools es una función estándar del navegador, así que si una comprobación salta por usarlo, el problema es del sitio. Ajusta la solución a la comprobación:

  1. Desactiva los puntos de interrupción en el panel Fuentes (Sources) (Ctrl+F8, o Cmd+F8 en Mac). Cada instrucción debugger pasa a ser un no-op y la comprobación de pausa no ve ninguna diferencia.
  2. Desacopla el panel a su propia ventana, lo que anula la diferencia de tamaño.
  3. Ocúpate del propio script cuando lo que salta es la medición de la consola. No hay ningún ajuste que oculte la consola a una página. Puedes sobrescribir o bloquear el script de detección, como hace el análisis de Heilmann al sobrescribir su función de comprobación, o inspeccionar una copia guardada de la página que no ejecute scripts.

No recurras a una extensión que falsifique window.outerWidth o parchee console. Una función integrada sustituida deja de reportar [native code], y eso es en sí mismo una señal delatora, igual que los parches de funciones nativas en la detección de bots.

¿Es ilegal usar Inspeccionar elemento?

No. Todos los navegadores principales lo incluyen y lo documentan, y solo edita tu copia local. El problema empieza con lo que hagas después: una captura manipulada que se hace pasar por un recibo, una factura o un extracto bancario real puede constituir falsificación o fraude, según dónde vivas y con qué intención, sea cual sea la herramienta que la hizo.

Si manejas navegadores a escala

Para un desarrollador, saltar la alarma significa una página rota hasta que desactive los puntos de interrupción. Para quien maneja navegadores a escala, significa un flag en cada sitio que cronometra su consola, porque el coste cambia cuando se conecta un canal de automatización, no solo cuando una persona abre DevTools. Si manejas perfiles con Puppeteer o Playwright, prueba cada configuración con el widget de arriba, sin ninguna ventana de DevTools abierta, antes de fiarte de ella.

Los perfiles de Incogniton son compilaciones reales de Chromium, así que las comprobaciones de arriba se les aplican igual que a Chrome. Que la medición de la consola siga en silencio depende de cómo manejes el perfil, así que prueba esa parte tú mismo. Que un sitio permita la automatización lo deciden sus propias normas, así que léelas antes.

Pruébalo ahora: abre DevTools con el widget observando, luego desacopla el panel y desactiva los puntos de interrupción. Dos filas se quedan en silencio. La de la consola no. El escaneo completo del navegador cubre el resto de lo que una página puede leer, desde la red hasta el fingerprint.

Logotipo de Incogniton

Mejora tu privacidad

Flecha