Ir al contenido

Redacción de secretos

Las grabaciones se hacen commit a git, así que los secretos se eliminan antes de escribir nada en disco. La redacción está activada 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 la redacción nunca rompe la reproducción. Se aplica a las grabaciones .mock.json, a las grabaciones de WebSocket y a los archivos .har. Para desactivar la redacción, 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 redactá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 (redactadas), 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 la redacción está activada); puedes añadir a ellas.

  • --no-redact — desactiva la redacción de secretos (activada por defecto).
  • --redact — activa la redacción de secretos; solo se necesita para reactivarla cuando la configuración pone redaction: false.
  • --redact-headers <names> — nombres de cabeceras extra a redactar, separados por comas (fusionados con los valores por defecto).
  • --redact-body <patterns> — patrones regex separados por comas a redactar de los cuerpos de petición/respuesta.
  • --allow-headers <names> — nombres de cabeceras separados por comas a eximir de la redacción (por ejemplo set-cookie).
  • --allow-cookies <names> — nombres de cookies separados por comas a mantener sin redactar 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 redactar grabaciones existentes tú mismo.