Перейти к содержимому

Редактирование секретов

Записи коммитятся в git, поэтому секреты вырезаются до того, как что-либо будет записано на диск. Редактирование включено по умолчанию; прокси заменяет значения этих заголовков запроса/ответа на [REDACTED]:

  • Authorization
  • Cookie
  • Set-Cookie

Это безопасно: сопоставление при воспроизведении игнорирует эти заголовки, поэтому редактирование никогда не ломает воспроизведение. Оно применяется к записям .mock.json, записям WebSocket и файлам .har. Чтобы отключить редактирование, передайте --no-redact в CLI или задайте redaction: false в конфигурации.

Когда чувствительны лишь некоторые cookie, разрешите безобидные по имени (например, cookie theme или A/B-теста). Разрешённые cookie сохраняют свои значения внутри Cookie/Set-Cookie; все остальные по-прежнему редактируются.

Чтобы полностью убрать поток входа и учётные данные из записей, выполняйте аутентификацию в setup project Playwright с прокси в режиме transparent, сохраняйте storageState в исключённый из git auth-state.json и переиспользуйте его в тестах. Тогда записанные запросы несут только (отредактированные) заголовки сессии, но никогда сам вход.

Рабочую настройку против реального провайдера аутентификации см. в примере аутентифицированного приложения.

Заголовки по умолчанию применяются всегда (пока редактирование включено); вы можете добавить к ним.

  • --no-redact — отключить редактирование секретов (включено по умолчанию).
  • --redact — включить редактирование секретов; нужно только чтобы снова включить, когда конфигурация задаёт redaction: false.
  • --redact-headers <names> — дополнительные имена заголовков для редактирования, через запятую (объединяются со значениями по умолчанию).
  • --redact-body <patterns> — шаблоны regex через запятую для редактирования из тел запроса/ответа.
  • --allow-headers <names> — имена заголовков через запятую, исключаемые из редактирования (например, set-cookie).
  • --allow-cookies <names> — имена cookie через запятую, оставляемых без редактирования внутри Cookie/Set-Cookie.
Окно терминала
# 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

При создании ProxyServer напрямую:

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) также экспортируется, если вы хотите самостоятельно редактировать существующие записи.