콘텐츠로 이동

작성 및 재전송 (Composer)

캡처는 “보는 것”만이 아닙니다. Trace Eagle의 요청 작성기(Composer)는 “실제로 캡처한 요청”과 “수동 구성 및 디버깅”을 한곳에 모았습니다. 캡처한 어떤 요청이든 그대로 다시 보내거나, 파라미터를 조정해 다시 보낼 수 있고, 요청을 처음부터 만들어 보낼 수도 있습니다. 캡처 도구와 별도의 API 디버깅 도구 사이를 오갈 필요가 더는 없습니다.


  • 재전송 / 편집 후 재전송: 트래픽 목록에서 마우스 오른쪽 버튼으로 클릭하거나, 상세 패널에서 “편집 후 재전송”을 클릭하면 이 캡처한 요청을 Composer에 그대로 불러옵니다. 주소는 캡처 시점의 프로토콜 / 호스트 / 포트에서 복원되고, 무관한 연결 헤더는 제거되며, 본문과 그 타입은 내용에서 감지됩니다. 모두 자동입니다. 파라미터 몇 개를 조정해 다시 보내면 됩니다.
  • 처음부터 만들기: Composer에서 바로 새 요청을 손으로 조립합니다.

두 진입점 모두 같은 전송 채널을 사용하며, 결과는 별도의 Composer 세션 탭에 기록됩니다(전체 이력을 유지). 여기서는 캡처한 요청과 마찬가지로 보고, 다시 편집하고, 비교할 수 있습니다.


  • 요청 라인: 메서드(GET / POST / PUT / DELETE / PATCH / HEAD / OPTIONS) + URL.
  • 파라미터 테이블: 쿼리 파라미터는 테이블에서 행 단위로 관리되며, URL과 분리해 두었다가 전송 시점에만 조립됩니다. 덕분에 안에 든 동적 플레이스홀더가 조기 인코딩으로 망가지지 않습니다.
  • 헤더 테이블: 어떤 헤더든 행 단위로 추가, 제거, 편집합니다.
  • 인증 도우미: None / Bearer Token / Basic(사용자 이름 + 비밀번호, base64 자동 처리). 직접 Authorization 헤더를 작성하지 않은 경우에만 적용됩니다.
  • 본문: none / JSON / form(form-urlencoded) / raw 텍스트. JSON이나 form을 고르면 그에 맞는 Content-Type이 자동으로 추가됩니다.

3. 동적 값: 서명 / 암호화된 비공개 API 처리하기

섹션 제목: “3. 동적 값: 서명 / 암호화된 비공개 API 처리하기”

어떤 필드든 ${...} 동적 값을 담을 수 있으며, 전송 전에 엔진이 이를 계산합니다. 서명 / 타임스탬프 / nonce를 실어야 하는 비공개 API를 디버깅할 때 구세주가 됩니다.

동적 값 용도
${uuid} / ${randomUUID} 랜덤 UUID
${timestamp} 초 단위 Unix 타임스탬프
${timestampMs} / ${now} 밀리초 단위 Unix 타임스탬프
${random} 16자리 랜덤 16진수
${randomInt:min,max} 범위 내 랜덤 정수
${base64:} / ${base64url:} / ${base64decode:} Base64 인코딩 / 디코딩
${md5:} / ${sha1:} / ${sha256:} 해시
${hmacSha256:key,msg} / ${hmacSha256Base64:key,msg} / ${hmacSha1:key,msg} HMAC 서명
${urlEncode:} / ${upper:} / ${lower:} URL 인코딩 / 대소문자 변환
  • 중첩 지원: 예를 들어 ${hmacSha256:${secret},${body}}처럼, 변수를 먼저 해석한 뒤 서명을 계산합니다.
  • 해석할 수 없는 것은 그대로 유지되므로, 어떤 변수가 계산되지 않았는지 한눈에 알아챌 수 있습니다. 반면 일반 도구는 정의되지 않은 변수를 만나면 오류를 내거나 빈 값을 보내는 경우가 많습니다.

Composer: 메서드 + URL, 파라미터 / 헤더 / 인증 / 본문 섹션 구성. 필드에 ${...} 동적 값을 담을 수 있으며(예: ${hmacSha256:...}로 서명을 즉석에서 계산), 컬렉션과 환경도 함께 제공


  • 환경 변수: ${name}을 환경 변수로 추출하고, 여러 환경(“dev / test / prod” 등) 사이를 클릭 한 번으로 전환합니다. 변수는 서로를 참조하며 연쇄적으로 확장될 수 있습니다.
  • 컬렉션: 자주 쓰는 요청을 이름 붙인 폴더로 묶고, 현재 요청을 언제든 저장했다가 원할 때 다시 불러와 재사용합니다.
  • 작업 공간 자동 저장: 컬렉션 + 환경은 평문이며 버전 관리가 가능한 파일로 자동 저장되어 diff와 리뷰가 가능하므로, 팀 내 공유와 이력 추적이 쉽습니다.

  • cURL 가져오기: cURL 명령을 붙여넣으면 편집 가능한 요청으로 파싱합니다(-X / -H / -d / --data-* / -u / -b / -A / -e 같은 일반적인 파라미터를 지원하며, 따옴표 처리를 포함하고, 본문이 있으면 자동으로 POST로 취급).
  • 컬렉션 파일 가져오기: 외부 API 컬렉션 파일을 가져옵니다(raw 본문이 초점이며, 그룹은 하나의 컬렉션으로 평탄화됩니다).
  • 코드 생성: 현재 요청을 클릭 한 번으로 cURL / Python / JavaScript(fetch) / Go / OkHttp 코드 스니펫으로 내보냅니다. 스크립트를 작성하거나, 프로젝트에 넣거나, 동료와 공유하기에 편리합니다.

6. 충실한 전송: 재현을 실제 경로에 가깝게

섹션 제목: “6. 충실한 전송: 재현을 실제 경로에 가깝게”

재전송의 가치는 “재현된 요청이 실제 환경과 일치하는 것”에 있습니다. Composer의 설정에서 전송이 캡처 세션과 동일한 네트워크 특성을 유지하도록 하여 결과를 더 신뢰할 수 있습니다.

  • 상위 프록시: 상위 프록시(http / socks5)를 통해 전송하여, 재전송된 요청을 회사 프록시, 점프 호스트, 기타 2차 프록시로 경유시킵니다.
  • 요청 특성 충실도(브라우저 프로필): 재전송된 요청의 네트워크 특성을 표준 클라이언트(일반적인 브라우저 등)의 것으로 복원하여, 재현된 요청을 실제 경로와 일치시킵니다.
  • 사용자 지정 DNS: 어떤 DNS가 도메인을 해석할지 지정하여, 오염을 피하거나 지정된 경로를 택합니다.

전송 전에 모든 ${...} 동적 값을 먼저 로컬에서 계산하므로, 실제로 무엇이 전송될지 항상 정확히 확인할 수 있습니다. 각 전송은 캡처 세션과 격리된 별도의 Composer 세션을 거치며, 결과는 상태 코드, 프로토콜, 소요 시간을 인라인으로 보여주고 세션에 Flow로 기록됩니다. 따라서 캡처한 요청처럼 다시 보고, 다시 편집하고, 비교할 수 있습니다.


작성 / 재전송한 요청을 이력에 있는 실제 캡처 요청과 나란히 줄 단위로 비교하여, “같은 엔드포인트에 대해 이번과 지난번이 정확히 무엇이 다른지”를 빠르게 짚어낼 수 있습니다. 서명, 파라미터, 응답 차이를 진단할 때 특히 효율적입니다. 요청 비교를 참고하세요.


프록시 캡처로 돌아가기 · 관련: 재작성 규칙과 브레이크포인트 · 요청 비교