Skip to content

정적 fetch 가 렌더 서비스와 같은 신원을 밝히도록 통일 - #72

Open
m-a-king wants to merge 1 commit into
mainfrom
fix/unify-fetch-identity
Open

m-a-king wants to merge 1 commit into
mainfrom
fix/unify-fetch-identity

Conversation

@m-a-king

@m-a-king m-a-king commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

Situation

  • 같은 서비스가 같은 몰에 두 가지 태도로 나가고 있었다. 헤드리스 렌더 경로는 Piki/1.0 (+https://piki.day) 토큰으로 자신을 밝히는데, 정적 fetch 경로만 맥 크롬 125 로 위장했다. 우리가 정한 기준은 "상대가 막고 싶으면 막을 수 있게 한다" 인데 fetch 경로가 그 밖에 있었다.
  • 위장 UA 는 낡기까지 했다. 렌더 서비스가 실제로 쓰는 크롬은 153 이다.

Task

  • fetch 경로의 신원을 렌더 경로와 같게 맞춘다. 다만 몰이 우리를 막게 되는 대가가 없는지 먼저 잰다.

Action

  • 기본 UA 를 바꾸고 신원 토큰을 상수로 분리했다. 브라우저 호환 접두는 남겼다. 형식이 어긋난 UA 나 기본 RestClient UA 를 거르는 사이트가 있어서이고, 렌더 서비스가 같은 이유로 같은 판단을 하고 있다.
  • 기본값을 고정하는 테스트를 더했다. 신원은 설정 기본값이라 조용히 되돌아가도 컴파일과 다른 테스트가 전부 통과한다. 렌더 서비스에는 같은 문자열을 고정하는 테스트가 이미 있다.
경로 몰에 보내는 신원
정적 fetch, 이전 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
정적 fetch, 이후 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 Piki/1.0 (+https://piki.day)
헤드리스 렌더 실제 브라우저 UA 끝에 같은 Piki/1.0 (+https://piki.day) 를 붙이고, Sec-CH-UA 에도 같은 이름을 싣는다

Result

  • 비용 없음을 실측했다. prod extractor 와 같은 출구 IP 에서 실사용 링크 표본 49개를 세 가지 UA 로 돌렸다. 현재 UA, 버전만 올린 UA, 토큰까지 붙인 UA 다. 응답이 전부 같았다.
세트당 2xx 403 타임아웃과 5xx
A 현재 UA 34 16 0
B 버전만 올림 34 16 0
C 토큰 추가 34 16 0
  • 위 표본은 curl 로 쟀고, curl 은 무신사처럼 TLS 지문을 보는 몰에 막힌다. 그래서 그 몰들은 같은 박스에서 실제 JVM 으로 다시 쟀다. 무신사, 29cm, W컨셉, 에이블리 네 곳 모두 이전 UA 와 새 UA 의 응답이 같았다.
  • Accept-Language 는 이번에 두었다. 렌더 서비스는 ko-KR, 이쪽은 ko,en;q=0.9 로 여전히 다르다. 이번 실험에서 고정값이었어서 측정되지 않았고, 측정하지 않은 변경을 같이 넣지 않으려고 뺐다.
  • 되돌리기. UA 는 설정값이라 문제가 생기면 배포 없이 환경변수로 되돌릴 수 있다.
  • 후속. 토큰 문자열이 두 repo 에 각각 박혀 있다. infra 계약 파일 하나로 옮기고 양쪽 CI 가 대조하게 하는 작업은 별도로 둔다.

연관 이슈

- 같은 서비스가 같은 몰에 두 가지 태도로 나가고 있었다. 렌더 경로는 Piki 토큰으로 자신을 밝히는데 fetch 경로만 맥 크롬으로 위장해, "상대가 막고 싶으면 막을 수 있게 한다" 는 기준 밖에 있었다
- UA 만 바꾼다. 브라우저 호환 접두는 남긴다 - 형식이 어긋난 UA 나 기본 RestClient UA 를 거르는 사이트가 있다
- 비용이 없음을 먼저 쟀다. prod extractor 와 같은 출구 IP 에서 실사용 링크 표본 49개를 현재 UA·버전만 올린 UA·토큰 붙인 UA 세 벌로 돌려 응답이 전부 동일했고(2xx 34, 403 16), curl 이 막히는 무신사·29cm·W컨셉·에이블리는 그 박스의 실제 JVM 으로 다시 재 네 곳 모두 동일했다
- Accept-Language 는 렌더 서비스와 값이 다르지만 이번엔 두었다. 이번 실험에서 고정값이었어서 측정되지 않았다
- 신원 토큰은 양쪽이 같아야 의미가 있어 기본값을 테스트로 못 박는다. 렌더 서비스 쪽에는 같은 문자열을 고정하는 테스트가 이미 있다
@m-a-king m-a-king added the fix 외부 가시적 결함 수정 label Sep 12, 2026
@m-a-king m-a-king self-assigned this Sep 12, 2026
@github-actions

Copy link
Copy Markdown

Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다.

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: ce5612fb-679e-40a1-828b-b1ad56a2df34


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix 외부 가시적 결함 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant