Bỏ qua để đến nội dung

Loại bỏ bí mật

Các bản ghi được commit vào git, nên bí mật bị loại bỏ trước khi bất cứ thứ gì được ghi ra đĩa. Việc loại bỏ bí mật bật theo mặc định; proxy thay giá trị của các header request/response sau bằng [REDACTED]:

  • Authorization
  • Cookie
  • Set-Cookie

Điều này an toàn: việc khớp khi phát lại bỏ qua các header này, nên việc loại bỏ không bao giờ làm hỏng việc phát. Nó áp dụng cho các bản ghi .mock.json, các bản ghi WebSocket, và các file .har. Để tắt việc loại bỏ, truyền --no-redact trên CLI hoặc đặt redaction: false trong cấu hình.

Khi chỉ một số cookie nhạy cảm, hãy allow-list những cookie vô hại theo tên (ví dụ cookie theme hoặc A/B-test). Các cookie được allow-list giữ nguyên giá trị bên trong Cookie/Set-Cookie; mọi cookie khác vẫn bị loại bỏ.

Để giữ luồng đăng nhập và credential nằm hoàn toàn ngoài các bản ghi, hãy chạy xác thực trong một setup project của Playwright với proxy ở chế độ transparent, lưu storageState vào một auth-state.json được gitignore, và tái sử dụng nó trong các test của bạn. Các request đã ghi khi đó chỉ mang theo các session header (đã được loại bỏ), không bao giờ chứa phần đăng nhập.

Xem ví dụ ứng dụng xác thực để biết một thiết lập hoạt động dựa trên một auth provider thật.

Các header mặc định luôn áp dụng (khi việc loại bỏ đang bật); bạn có thể thêm vào chúng.

  • --no-redact — tắt việc loại bỏ bí mật (bật theo mặc định).
  • --redact — bật việc loại bỏ bí mật; chỉ cần khi bật lại vì cấu hình đặt redaction: false.
  • --redact-headers <names> — các tên header bổ sung để loại bỏ, phân tách bằng dấu phẩy (gộp với các mặc định).
  • --redact-body <patterns> — các pattern regex để loại bỏ khỏi body request/response, phân tách bằng dấu phẩy.
  • --allow-headers <names> — các tên header được miễn loại bỏ, phân tách bằng dấu phẩy (ví dụ set-cookie).
  • --allow-cookies <names> — các tên cookie được giữ nguyên không bị loại bỏ bên trong Cookie/Set-Cookie, phân tách bằng dấu phẩy.
Terminal window
# Việc loại bỏ đã bật; đồng thời loại bỏ header API-key và các token "sk_live_...", giữ cookie theme
test-proxy-recorder http://localhost:8000 \
--redact-headers x-api-key \
--redact-body "sk_live_[a-zA-Z0-9]+" \
--allow-cookies theme,locale

Khi khởi tạo ProxyServer trực tiếp:

import { ProxyServer } from 'test-proxy-recorder';
// Truyền đối tượng này để bật việc loại bỏ; truyền `false` (hoặc không truyền gì) để giữ nó tắt.
const proxy = new ProxyServer('http://localhost:3000', './recordings', undefined, {
headers: ['x-api-key', 'x-auth'], // các header bổ sung, gộp với các mặc định
bodyPatterns: [/sk_live_[a-z0-9]+/i], // các regex được thay trong body request/response
allowHeaders: ['set-cookie'], // không bao giờ loại bỏ các header này
allowCookies: ['theme', 'locale'], // giữ các cookie này bên trong Cookie/Set-Cookie
placeholder: '[REDACTED]', // mặc định
});

redactSession(session, config) cũng được export nếu bạn muốn tự loại bỏ các bản ghi hiện có.