Cada nombre en negrita está escrito exactamente como aparece en la extensión, así que puedes buscarlo con Ctrl+F aquí y encontrarlo igual en la interfaz.
Todo esto es una regla. El tipo se elige en el desplegable Tipo de regla al crearla.
| Quiero… | Usa esto |
|---|---|
| Que un endpoint devuelva un 500, un 404, un 401 — un error difícil de provocar de verdad | Tipo Mockear la respuesta (API) (la petición no llega a salir), y ajusta el Código de estado. Ver Tu primera regla. |
| Devolver datos de prueba de un endpoint que todavía no existe | Tipo Mockear la respuesta (API), escribe el JSON en Body de respuesta. Ver Tu primera regla. |
| Partir de lo que devolvió el servidor de verdad, en vez de escribir un fixture | El botón Mockear del panel de DevTools — ver Crear reglas a partir de tráfico real. |
| Cambiar un solo campo de una respuesta real de la API y dejar el resto igual |
Tipo Modificar el body de la respuesta real, Modo =
Sobrescribir un campo JSON, p. ej. Ruta del campo
user.status.
|
| Sustituir un texto dentro de una respuesta real | Tipo Modificar el body de la respuesta real, Modo = Buscar y reemplazar. |
| Añadir, sobrescribir o quitar una cabecera | Tipo Modificar headers — ver la sintaxis y los Presets de ahí abajo. |
| Mandar una cabecera Authorization que la app no envía |
Tipo Modificar headers, preset Cabeceras de auth. Escribe
Authorization: Bearer {{token}}, así que define una variable
token para acompañarlo.
|
| Que el navegador deje de servir de caché y mi regla tenga ocasión de aplicarse | Puntual: ↻ Recargar sin caché en el popup. Para todas las recargas: tipo Modificar headers, preset Bypass de caché. |
| Sortear una queja de CORS mientras desarrollo | Tipo Modificar headers, preset CORS de desarrollo — pero lee antes Cosas que parecen fallos y no lo son: no levanta un bloqueo real del navegador. |
| Apuntar una llamada a localhost o a otro entorno | Tipo Redirigir petición, rellena Redirigir a. |
Cambiar staging por local en todas las URL, conservando el resto |
Tipo Reemplazar texto en la URL (Buscar / Reemplazar por). |
| Forzar un parámetro de query que la interfaz no expone (un flag de debug, un tamaño de página) | Tipo Parámetro de query. |
| Que una llamada falle, para ver qué hace mi manejo de errores | Tipo Cancelar petición. |
| Probar con red lenta, spinners y estados de carga | Pon Latencia (ms) en el bloque Simulación de red de la regla. Funciona con cualquier tipo — incluida una regla que no haga nada más. |
| Ver qué hace mi interfaz si este endpoint devuelve un 500, pero con el payload real y sin escribir un mock | Pon Sobrescribir el estado real en el bloque Simulación de red de la regla. La petición sigue saliendo, el body real sigue volviendo y solo cambia el código de estado. Ver Sobrescribir el estado de una respuesta real. |
| Enviar al backend un payload que la interfaz nunca mandaría | Tipo Modificar body de la petición. |
| Mockear un endpoint y que además tarde — o redirigir una llamada y añadirle una cabecera | Dos reglas que coincidan con la misma URL, una para cada mitad: se aplican todas. Ver Cuando varias reglas coinciden con la misma petición. |
| Afectar a una sola operación GraphQL, no a todo el endpoint |
Cualquier tipo de regla, más una Condición de body como
"operationName":"GetUser". El panel de DevTools te la rellena.
|
| Limitar una regla a una pestaña para que no afecte a todo lo que tengo abierto | El botón 📌 junto a la regla en el popup — ver condiciones extra. |
| Quiero… | Usa esto |
|---|---|
| Averiguar por qué mi regla no hace nada | Por qué una regla puede no estar aplicándose — la lista completa, en orden. |
| Comprobar que mi patrón coincide con una URL antes de guardar la regla | URL de prueba (opcional), justo debajo del patrón en el formulario. Ver matching. |
| Saber cuál de mis reglas gana cuando dos coinciden con la misma URL | Cuando varias reglas coinciden con la misma petición — respuesta corta: se aplican todas, y donde chocan gana la que esté más abajo en la lista. |
| Ver qué peticiones ha atrapado una regla de verdad | Grabar esta pestaña en el popup y luego 📡 Capturas en la página de opciones. Ver Ver qué ha pasado de verdad. |
| Cambiar un host entre Local, Staging y Prod sin editar todas las reglas | Variables más Entornos. |
| Activar o desactivar varias reglas a la vez | Métetelas en un Grupo (panel Grupos, arriba de la página de opciones) y activa o desactiva el grupo. O selecciona varias reglas del listado y usa la barra que aparece. |
| Encontrar una regla entre muchas | El buscador y el filtro de tipo que tiene al lado. La caja dice "nombre, URL o grupo", pero en realidad mira también dentro de la Descripción y de las Etiquetas. |
| Compartir mi configuración con alguien, o llevármela a otra máquina | Exportar / Importar en la página de opciones. Lee qué cubre "sanitizar al exportar" antes de mandar el fichero. |
| Darle a alguien una traza de lo que hizo la página | Exportar HAR en el panel de DevTools — ver Crear reglas a partir de tráfico real. |
| Copiar una petición a una terminal o a la consola | Copiar como… en el panel de DevTools (cURL o fetch()). |
| Reutilizar mis reglas en mis tests de Playwright o Cypress | Copiar como… en la fila de la regla (una sola), o Exportar → los botones de mocks del diálogo (todas, o las seleccionadas). Lee los comentarios del fragmento antes de commitearlo: dicen qué se ha tapado y qué no se ha podido traducir. |
| Llamar al endpoint que una regla intercepta, para comparar con lo real | El mismo Copiar como… de la fila, opciones cURL y fetch(). |
| Que una regla gane a otra que también coincide | Súbela o bájala con ↑ y ↓: gana la que está más abajo. Ver Cuando varias reglas coinciden. |
| Que la extensión no toque más que mis sitios | Alcance en la página de opciones: en todas partes, solo localhost, o solo los dominios que escribas. |
| Apagar todo un momento sin borrar nada | El interruptor maestro: Activa en el popup, Extensión activa en la página de opciones. |
Pulsa + Nueva regla (en el popup o en la página de opciones). El formulario se abre en Mockear la respuesta (API), que es el caso más común: contestar una petición desde el navegador en vez de dejar que llegue al servidor. Lo que el formulario enseña de entrada es poco —el resto va plegado en cuatro bloques, que se explican justo debajo— y casi todo es opcional. Esto es lo que necesita de verdad un mock JSON:
/api/users basta para atrapar todas las
URL que lleven ese fragmento. Ver Elegir con qué peticiones coincide una regla.
200. Es una caja numérica normal con una
lista de sugerencias asociada (200, 201, 204, 301, 400, 401, 403, 404, 429, 500, 502, 503…): pincha para
elegir una, o escribe directamente el código que quieras.
Content-Type: application/json
ya escrito en la caja, como valor de verdad: puedes editarlo o borrarlo, y lo que se ve es lo que se
guarda. Si lo borras, el mock vuelve como texto plano —algo perfectamente legítimo, para reproducir un
servidor que no manda el tipo—, y al guardar nadie te repone la cabecera. Abrir una regla que ya existe
no le añade nada, ni aunque tenga los headers vacíos.
Todo lo demás sirve para afinar la regla o para encontrarla después, y vive en cuatro bloques plegables: Organización (descripción, etiquetas, grupo), Coincidencia avanzada (origen, tipo de match, método), Condiciones adicionales (opcional) (condiciones de header, body e iniciador) y Simulación de red (latencia y código de estado, que se aplican a cualquier tipo de regla). En una regla nueva los cuatro empiezan cerrados; al editar una que ya existe se abre cada bloque que esa regla use, así que un bloque plegado nunca esconde algo que hayas puesto. Dos cosas que conviene hacer antes de cerrar:
Cada regla tiene exactamente un tipo, que decide qué ocurre cuando coincide con una petición. El nombre en negrita es el del desplegable Tipo de regla, donde los nueve van agrupados por lo que le hacen a la petición —Mock, Passthrough modificado, Redirect y Block, la división que explica Mock vs. passthrough modificado—; el nombre corto entre corchetes es como aparece ese mismo tipo en el listado de reglas, en el filtro de tipo y en la lista de capturas. Una regla hace una sola de estas cosas — pero una petición puede estar gobernada por varias reglas a la vez, así que combinar dos tipos es cuestión de escribir dos reglas. Ver Cuando varias reglas coinciden con la misma petición.
| Tipo | Qué hace | Cuándo usarlo |
|---|---|---|
| Mockear la respuesta (API) [Respuesta] |
La petición no llega a la red. Tú defines el status, los headers y el body. | El endpoint todavía no existe, o necesitas un caso concreto (500, lista vacía, datos malformados) difícil de provocar de verdad. |
| Modificar body de la petición [Body petición] |
La petición sale de verdad, pero con un body distinto al que envió la página. | Probar cómo reacciona el backend a un payload que la interfaz normalmente no enviaría. |
| Modificar headers [Headers] |
Añade, sobrescribe o quita headers de petición y/o respuesta. La petición sale de verdad. Uno por
línea: Clave: Valor sobrescribe o añade, +Clave: Valor añade sin quitar lo
que ya hubiera, -Clave elimina. El desplegable Presets te rellena las
cajas con tres conjuntos habituales —Bypass de caché, CORS de
desarrollo y Cabeceras de auth—, sumándose a lo que ya hubieras escrito y
sustituyendo solo las líneas de la misma cabecera.
|
Forzar un header de feature flag, probar un header CORS que falta o sobra, simular un header de auth en local. |
| Redirigir petición [Redirección] |
Envía la petición a otra URL completamente distinta. | Apuntar una llamada a un servidor local o a otro entorno sin tocar la configuración de la app. |
| Cancelar petición [Cancelar] |
La petición falla directamente — fetch se rechaza, XHR dispara un evento de error. |
Probar qué hace tu interfaz cuando una llamada falla o un script no carga. |
| Parámetro de query [Query param] |
Añade o quita parámetros de la query string. La petición sale de verdad. Uno por línea:
+clave=valor añade o sobrescribe, -clave elimina. |
Forzar un parámetro que la interfaz no expone (un flag de debug, un tamaño de página). |
| Reemplazar texto en la URL [Reemplazo] |
Sustituye todas las apariciones de un texto dentro de la URL, manteniendo el resto igual. La
petición sale de verdad. El texto que escribes en Buscar se busca literalmente,
carácter a carácter — no es una expresión regular, así que un . solo
coincide con un punto de verdad.
|
Cambiar staging por production en una URL sin montar una redirección completa. |
| Sin cambios (solo retrasar) [Sin cambios] |
No le hace nada a la petición por sí misma: sale exactamente como la construyó la página. Existe para que una regla pueda llevar solo un modificador —hoy, una latencia— sin tener que cambiar además otra cosa. | Hacer lento un endpoint sin alterarlo de ninguna otra forma. |
| Modificar el body de la respuesta real [Body respuesta] |
La petición sale completamente igual; solo se transforma el body que vuelve, antes de que tu código lo
vea. Dos modos: Buscar y reemplazar (texto literal, todas las apariciones) o
Sobrescribir un campo JSON (una ruta con puntos como user.status, dejando
el resto del JSON tal cual). Tiene límites propios — ver
Cosas que parecen fallos y no lo son.
|
Cambiar un campo de una respuesta real de la API (p. ej. un status) sin escribir un mock completo a mano. |
Retrasar una petición era un tipo aparte y ha dejado de serlo. Latencia (ms) vive en el
bloque Simulación de red del formulario y se aplica a todos los tipos: un mock
llega tarde, una redirección sale tarde, una petición cancelada falla tarde. Si dejas el campo vacío la
regla no añade ninguna latencia; 0 no es lo mismo que vacío — es una espera real, aunque sea
mínima.
Si lo único que quieres es hacer lento un endpoint, usa el tipo Sin cambios (solo retrasar) y ponle una latencia. Las reglas que eran del antiguo tipo Retraso se convirtieron exactamente en eso, conservando sus milisegundos, la primera vez que abriste esta versión.
Hay dos campos en el formulario que son un código de estado HTTP, y no son lo mismo. Es la confusión más fácil de tener aquí, así que va primero:
| Campo | Qué es | Dónde está |
|---|---|---|
| Código de estado | El estado de una respuesta que fabrica la extensión. La petición no llega a salir, así que no hay ninguna respuesta real por ninguna parte. | Solo con el tipo Mockear la respuesta (API), junto al body y las cabeceras del mock. |
| Sobrescribir el estado real | Sustituye el estado de la respuesta que sí ha vuelto del servidor. El body real, las cabeceras reales y todo lo demás llegan intactos. | En el bloque Simulación de red, con cualquier tipo de regla. |
El caso para el que existe: quieres ver qué hace tu manejo de errores ante un 500 de ese
endpoint, pero con los datos de verdad. Con un mock tendrías que escribir el body entero a mano — y
entonces ya no estarías probando contra la respuesta real, que era justo lo que querías conservar.
200 a 599. Fuera de ese rango el navegador no puede construir la
respuesta, así que un valor de fuera no se aplica en vez de romper la petición.
500 arrastrando el OK de
la respuesta original se contradice a sí mismo en cuanto lo escribes en un log; y un texto vacío es lo que
ya entrega el navegador con HTTP/2 y HTTP/3, que no llevan frase de estado.
204, 205 o 304 el body se cae, porque esos
estados no pueden llevar ninguno. Es exactamente lo que hace el navegador con una respuesta real de ese
tipo.
Y como cualquier modificador, se combina: una misma regla puede sobrescribir el estado y transformar el body de la respuesta, y cambiarle una cabecera, y llegar tarde.
Es la confusión más habitual, así que merece explicarse aparte:
Response
falso (o simula las propiedades del XHR) y lo devuelve directamente. El servidor real nunca llega a verla.
Una forma práctica de distinguirlos mientras depuras: abre la pestaña Network de DevTools. Una petición mockeada nunca aparece ahí (no llegó a la red); una modificada-y-dejada-pasar sí, con la URL/body/headers ya reescritos. La lista de capturas dice lo mismo con palabras, petición a petición: "llegó a la red" o "no llegó a la red".
Es una propiedad de la petición, no de cada regla por separado: en cuanto una de las reglas que coinciden la mockea, la petición ya no sale del navegador, hagan lo que hagan las demás. Un mock con latencia es una respuesta que llega tarde y que sigue sin llegar al servidor — ver Cuando varias reglas coinciden con la misma petición.
Sea del tipo que sea, toda regla parte de un patrón: el desplegable Origen decide si ese patrón se compara con la URL completa o solo con el Host, y el desplegable Tipo de match decide cómo. Los dos están dentro del bloque Coincidencia avanzada del formulario, plegado hasta que lo abras:
| Tipo de match | Cómo se lee el patrón |
|---|---|
| Contiene (el de por defecto) | Coincide si el patrón aparece en cualquier parte de la URL/host. /api/users atrapa todas las URL que lleven ese fragmento. |
| Es igual a | Coincide solo si la URL/host es exactamente el patrón, carácter a carácter. |
| Regex | El patrón es una expresión regular de JavaScript que se prueba contra la URL/host. No tiene que coincidir con todo salvo que la ancles con ^/$. |
| Wildcard (* ?) |
Un punto intermedio entre "Contiene" y "Regex": * representa cualquier secuencia de
caracteres (incluida ninguna) y ? exactamente un carácter. Todo lo demás es literal, así
que no hay que escapar nada — un . es un punto de verdad, no "cualquier carácter". Como
Regex, tampoco va anclado: basta con que el patrón aparezca en algún sitio de la URL/host.
|
https://*.example.com/api/v?/users en modo Wildcard coincide con
https://api.example.com/api/v2/users y con https://staging.example.com/api/v3/users,
pero no con https://example.com/api/v10/users — ? es exactamente un carácter.
En vez de adivinar, pega una URL real en URL de prueba (opcional), la caja que hay justo debajo del patrón. Responde ✓ Coincide o ✗ No coincide mientras escribes, te dice contra qué ha comparado (la URL entera o solo el host) y te avisa si un patrón Regex no compila. No guarda nada ni lanza ninguna petición. Solo comprueba el patrón, el tipo de match, el origen y las exclusiones — no el método ni las condiciones de header/body/iniciador de más abajo.
/api/ menos el health checkUn patrón lo bastante amplio como para ser útil suele serlo también para atrapar algo que no querías: el health check que tu panel pide cada cinco segundos, la llamada de login, la única petición que ya lleva un token de verdad. Para eso está Excepto URLs que contengan (una por línea), justo debajo de los tres desplegables de Coincidencia avanzada. Un patrón por línea; si alguno aparece en la URL de la petición, la regla la deja en paz.
/api/ con /api/health y /api/auth/ como exclusiones: se mockean
todas las llamadas a la API menos el health check y todo lo que cuelgue de auth.
Dos cosas de esta caja son deliberadas, y conviene saberlas antes de pelearse con ella:
/api/health no aparece en ninguno. De
paso, aquí se puede excluir un subdominio entero (static.example.com) igual de fácil que una
ruta.
. es un punto y un * es un asterisco. Las mayúsculas cuentan, como
en todo lo demás. Si de verdad necesitas una expresión regular para describir lo que quieres dejar fuera,
la salida de siempre sigue estando ahí — un lookahead negativo en el propio patrón,
^(?!.*health).*api.* en modo Regex.
La caja de URL de prueba tiene en cuenta las exclusiones: una URL excluida responde ✗ La excluye «…» y dice qué línea es la responsable, en vez de prometer una coincidencia que no va a ocurrir.
Además del patrón, una regla puede llevar condiciones extra, en Condiciones adicionales (opcional) del formulario —salvo el Método, que está con los otros dos desplegables en Coincidencia avanzada—. Todas son opcionales, y todas tienen que cumplirse a la vez (AND, nunca OR):
Nada impide que dos reglas coincidan con la misma petición, y cuando pasa se aplican todas, no solo la primera. Eso es lo que permite redirigir una llamada y añadirle una cabecera, sin tener que meter las dos cosas en una sola regla.
Se aplican en el orden de la lista, de arriba abajo, y cada regla solo opina sobre la parte de la petición de la que va su tipo: una de headers aporta cambios de cabecera, un mock aporta la respuesta, y cualquiera de ellas puede aportar además una latencia. Cuando dos reglas hablan de lo mismo, gana la que está más abajo en la lista. O sea que el orden de la lista de reglas es la prioridad — con los botones ↑ y ↓ de cada regla la mueves por encima o por debajo de otra, y eso cambia de verdad lo que acaba haciendo tu petición.
| Dos reglas que coinciden y las dos… | Qué acaba haciendo la petición |
|---|---|
| …mockean la respuesta | Contesta la de más abajo: su status, sus headers, su body. La de arriba se sustituye entera, no se mezcla con ella. |
| …reescriben la URL (redirección, parámetro de query, reemplazo de texto) |
Las dos, encadenadas: cada una reescribe la URL que dejó la anterior. "Redirigir a localhost" más
"añadir ?debug=1" te da una URL de localhost con el parámetro puesto, no una cosa o la otra.
|
| …modifican headers | Los dos conjuntos de líneas, ejecutados uno detrás de otro en el orden de la lista — así que para una misma cabecera gana la línea posterior, igual que si fueran dos líneas dentro de una sola regla. |
| …modifican el body de la respuesta real | Las dos, en orden: la regla de más abajo transforma lo que dejó la de más arriba. |
| …ponen una latencia, o modifican el body de la petición | El valor de la de más abajo. Una latencia de 0 ms y un body vacío son respuestas reales, no un "no opino". |
/api/users con un 500 y lleva 2000 ms de latencia te da un
500 que tarda dos segundos en llegar. Dos reglas separadas —una que mockea y otra que solo pone la
latencia— dan exactamente lo mismo, que es cómodo cuando quieres poder apagar la lentitud por su cuenta.
Hay dos combinaciones que no las decide el orden de la lista, sino una regla propia:
Para ver qué reglas gobernaron una petición concreta en vez de deducirlo, graba la pestaña y abre la lista de capturas: una petición que coincidió con tres reglas sale con una línea ⚡ por cada una, y la chapa del icono cuenta reglas aplicadas, no peticiones.
Define un par nombre/valor una vez (botón "{{ }} Variables" en la página de opciones) y reutilízalo como
{{nombre}} en cualquier sitio donde repetirías la misma cadena: el body de una regla, el
valor de un header, una URL de redirección, el valor de un query param, el texto de reemplazo de una
regla "Reemplazar texto en la URL", y tanto el texto de reemplazo como el valor nuevo del campo JSON de
una regla "Modificar el body de la respuesta real".
apiHost = api.staging.example.com y úsalo como https://{{apiHost}}/v2/users
en una redirección. Cambias el entorno una vez, en un sitio, en vez de buscar cada regla que tenía el
host viejo escrito a mano.
Un nombre que no coincide con ninguna variable definida se deja tal cual está escrito —
{{typo}} aparece literalmente en la petición o respuesta, en vez de desaparecer en silencio,
así que un error es evidente en vez de un misterio. Las variables no se sustituyen en
los campos de matching de una regla (el patrón de URL, o una condición de header/body/iniciador) — esos
comparan contra la petición real, así que una variable ahí no significaría nada.
Un entorno (botón "🌐 Entornos", junto a Variables) es un conjunto con nombre de sobrescrituras sobre tus variables — Local, Staging, Prod, lo que necesites. Solo hace falta que sobrescriba lo que realmente cambia entre entornos; lo que no menciona conserva el valor propio de la variable.
apiHost = local.test como valor base, un entorno "Prod" puede sobrescribir solo
apiHost = api.example.com y dejar el resto de variables tal cual.
Elige el entorno activo con el botón de estrella junto a él en la página de opciones, o desde el desplegable Entorno del popup (solo aparece cuando existe al menos un entorno). Sin entorno activo, cada variable usa simplemente su propio valor base — igual que antes de que existieran los entornos.
Primero, una comprobación rápida que ahorra mucho tiempo: el icono de la extensión en la barra lleva una chapa con el número de reglas aplicadas en la pestaña actual. Si está vacía después de recargar, no ha coincidido nada y la lista de abajo es donde mirar. Si está contando, la regla sí se aplica y la sorpresa está en lo que hace, no en si se ejecuta.
Revisa esto en orden — cubre todos los motivos por los que una regla puede fallar en silencio:
* o ? en un patrón que sigue en "Contiene" o "Es igual a", donde son
caracteres literales — solo significan algo en modo Wildcard.
send(body) — esto solo funciona para los tipos
"mock", "cancelar", "sin cambios", "modificar body de la petición" y "modificar headers" en XHR (en
fetch funciona para todos los tipos). Una condición de body además solo compara contenido
de texto (JSON, form-encoded, texto plano) — los bodies FormData/Blob/binarios nunca se leen para esto.
fetch ni XMLHttpRequest. Net Tinker solo puede interceptar
esas dos — no puede afectar a <img>, <script src>, CSS, fuentes ni
ningún otro tipo de recurso a la hora de aplicar una regla (el panel de captura de DevTools sí
puede verlos todos, simplemente no puede actuar sobre ellos).
Adivinar si una regla se ha aplicado es la vía lenta. Hay tres sitios que te lo dicen, y cada uno responde a una pregunta distinta:
La lista de capturas está apagada hasta que la pides. Abre el popup en la pestaña que quieras observar y activa Grabar esta pestaña — solo se capturan las peticiones de esa pestaña. Después abre la lista con 📡 Capturas en la página de opciones (o Ver capturas desde el popup), que muestra el panel Peticiones capturadas.
Cada fila te dice, en este orden: la página, el status, la hora, y luego qué hizo Net Tinker con ella.
A diferencia del panel de DevTools, estas capturas sí se guardan, así que siguen ahí después de cerrar la pestaña o el navegador. La lista conserva las 200 más recientes y Vaciar la limpia. La grabación se detiene sola si cierras la pestaña que estabas grabando.
Net Tinker funciona parcheando fetch/XMLHttpRequest dentro del propio JavaScript
de la página. Ese enfoque trae algunos efectos secundarios inevitables:
interceptor.js en todas las
peticiones mientras haya alguna regla activa en la página, porque todas las peticiones pasan por el
fetch/XMLHttpRequest parcheado de Net Tinker antes de llegar (o no) a la red.
No afecta al funcionamiento, solo a la atribución. Si te molesta, añade interceptor.js a la
Ignore List de DevTools (Settings → Ignore List) — así DevTools ignora esos frames al calcular el
iniciador.
responseType binario. El body solo se puede transformar si responseType
es "", "text" o "json"; con "blob",
"arraybuffer" o "document" no hay forma de leerlo como texto, así que esa
petición concreta vuelve intacta. La regla no está mal — simplemente ahí no puede actuar.
user.status cuando user
es un texto). El body se devuelve exactamente como llegó, en vez de quedar reescrito a medias o
sustituido por una suposición. Para bodies que no son JSON, usa el modo "Buscar y reemplazar".
text/event-stream (server-sent events),
multipart/x-mixed-replace— no termina nunca. Esas respuestas se devuelven intactas, con su
stream vivo, y la regla simplemente no se aplica a esa petición; la lista de
capturas lo deja anotado como "coincide pero no se aplicó — respuesta en streaming", para que no sea
un no-hacer-nada silencioso. El criterio es el tipo de medio, no el tamaño: una respuesta grande normal
sí termina, así que se transforma con normalidad — solo que llega de golpe en vez de progresivamente.
Las reglas de cualquier otro tipo no tocan el body de la respuesta y no tienen ninguno de los dos
efectos.
Abre DevTools en cualquier página y busca la pestaña "Net Tinker" (junto a Elements, Console, Network, etc.). Lista todas las peticiones que hace la página mientras el panel está abierto — no solo fetch/XHR, todos los tipos de recurso — para que encuentres exactamente la llamada que te interesa. La cabecera muestra Capturando, y al pulsarla pasa a Pausado si prefieres congelar la lista; marca Conservar registro para que no se vacíe al navegar, y Vaciar la limpia.
cURL o como fragmento fetch(), listo para pegar en una terminal o en la
consola.
.har estándar las peticiones que se ven
ahora mismo en la lista, para dárselas a otra persona o cargarlas en otra herramienta. El diálogo
enumera los valores sensibles que ha encontrado y ofrece Sanear credenciales (siempre
marcado al abrirse) e Incluir cuerpos de respuesta (siempre desmarcado, recortados a
1 MB cada uno, porque son lo que engorda el fichero). Las dos casillas se rearman cada vez que se abre,
así que la opción segura nunca queda apagada de una exportación anterior. Un HAR lleva las cabeceras
reales de la petición, Authorization incluida, además de las cookies — trata el fichero
como una credencial.
Las capturas de este panel viven solo en memoria mientras DevTools está abierto — al cerrar DevTools se vacían, y no se guarda nada hasta que conviertes explícitamente una petición capturada en una regla o exportas un HAR. Esa es la diferencia con la lista de capturas de la página de opciones, que sí se guarda a propósito.
Exportar escribe tus reglas y grupos en un fichero JSON, junto con tus variables y entornos. Exportarlo todo incluye todas las variables que tengas; exportar una selección de reglas incluye solo las variables que esas reglas referencian por nombre, y poda cada entorno a ese mismo conjunto. Cuál es el entorno activo es una preferencia local tuya y nunca va en el fichero.
Como ese fichero acaba compartiéndose, la exportación pasa antes por un diálogo. Ahí se enumera lo que ha
encontrado con pinta de credencial, y se marca por ti Sustituir credenciales por
__REDACTED__ cuando hay algo que ocultar. Sanear busca nombres que sugieran
una credencial — cualquiera que contenga auth, token, secret,
password, passwd, apikey, api_key,
api-key, credential, signature, cookie o
session — y sustituye el valor correspondiente por __REDACTED__. Revisa:
?
la corrompería.
{{token}}, {{apiKey}} y compañía son el secreto
más probable de todo el fichero. Las sobrescrituras de un entorno se juzgan por el nombre de la variable
a la que apuntan, así que un token sobrescrito en "Prod" se redacta igual que la variable
base.
Deliberadamente no toca:
value o data no se detectaría, porque la comprobación se basa en el
nombre, no en el contenido.
"true"/"false", aunque estén bajo un nombre que
parezca sensible. Un flag no es un secreto, y redactarlo solo produciría una regla rota.
access-control-allow-credentials (un flag CORS fijo) y www-authenticate (el
desafío que hace creíble un 401 mockeado).
Trata "sanitizar al exportar" como una red de seguridad contra la fuga accidental más común, no como una garantía de que el fichero exportado no contiene ningún secreto — revisa lo que vas a compartir antes de enviarlo.
A la vuelta, Importar te deja elegir qué traer y avisa cuando una regla ya existe (mismo tipo, método y patrón), ofreciéndote importarla como copia, omitirla o sobrescribir la existente — con la misma elección, por separado, para las variables cuyo valor difiera del tuyo.