Ir al contenido

Enmascaramiento de secretos

Las grabaciones se hacen commit a git, así que los secretos se eliminan antes de escribir nada en disco. El enmascaramiento está activado por defecto; el proxy reemplaza los valores de estas cabeceras de petición/respuesta con [REDACTED]:

  • Authorization
  • Cookie
  • Set-Cookie

Esto es seguro: el emparejamiento de reproducción ignora estas cabeceras, así que el enmascaramiento nunca rompe la reproducción. Se aplica a las grabaciones .mock.json, a las grabaciones de WebSocket y a los archivos .har. Para desactivar el enmascaramiento, pasa --no-redact en la CLI o establece redaction: false en la configuración.

Cuando solo algunas cookies son sensibles, permite las inofensivas por nombre (por ejemplo una cookie de theme o de test A/B). Las cookies permitidas conservan sus valores dentro de Cookie/Set-Cookie; cualquier otra cookie sigue enmascarándose.

Para mantener el flujo de login y las credenciales totalmente fuera de las grabaciones, ejecuta la autenticación en un setup project de Playwright con el proxy en modo transparent, persiste el storageState en un auth-state.json gitignorado y reúsalo en tus pruebas. Las peticiones grabadas entonces solo llevan las cabeceras de sesión (enmascaradas), nunca el login.

Mira el ejemplo de app autenticada para una configuración funcional contra un proveedor de auth real.

Las cabeceras por defecto siempre se aplican (mientras el enmascaramiento está activado); puedes añadir a ellas.

  • --no-redact — desactiva el enmascaramiento de secretos (activado por defecto).
  • --redact — activa el enmascaramiento de secretos; solo se necesita para reactivarlo cuando la configuración pone redaction: false.
  • --redact-headers <names> — nombres de cabeceras extra a enmascarar, separados por comas (fusionados con los valores por defecto).
  • --redact-body <patterns> — patrones regex separados por comas a enmascarar de los cuerpos de petición/respuesta.
  • --allow-headers <names> — nombres de cabeceras separados por comas a eximir del enmascaramiento (por ejemplo set-cookie).
  • --allow-cookies <names> — nombres de cookies separados por comas a mantener sin enmascarar dentro de Cookie/Set-Cookie.
Ventana de terminal
# Redaction is already on; also redact an API-key header and "sk_live_..." tokens, keep the theme cookie
test-proxy-recorder http://localhost:8000 \
--redact-headers x-api-key \
--redact-body "sk_live_[a-zA-Z0-9]+" \
--allow-cookies theme,locale

Al construir ProxyServer directamente:

import { ProxyServer } from 'test-proxy-recorder';
// Passing this object enables redaction; pass `false` (or nothing) to keep it off.
const proxy = new ProxyServer('http://localhost:3000', './recordings', undefined, {
headers: ['x-api-key', 'x-auth'], // extra headers, merged with the defaults
bodyPatterns: [/sk_live_[a-z0-9]+/i], // regexes replaced in request/response bodies
allowHeaders: ['set-cookie'], // never redact these headers
allowCookies: ['theme', 'locale'], // keep these cookies inside Cookie/Set-Cookie
placeholder: '[REDACTED]', // default
});

redactSession(session, config) también se exporta si quieres enmascarar grabaciones existentes tú mismo.