문제: 사용자 콘솔에서 v1.1.1 의 XHR 후킹은 정상 작동(`forcing timeMachine
ON` 로그 확인)했으나 재생바는 안 떴음. 동시에 `live-playback-json`
엔드포인트가 v3.2/v3.1/v3/v2 전부 CORS+404 로 막혀 콘솔에 잡음만
양산했음. 두 플래그 (`timeMachineActive`/`timeMachinePlayback`) 만으로는
플레이어가 UI 를 안 띄우는 것으로 보임 → 다른 트리거 조사 중.
이번 커밋:
- 깨진 live-playback-json fetch 호출 코드 제거. 콘솔 잡음 해소.
- 진단용 덤프 추가: devtools 에서
localStorage.setItem('chzzk-bypass:debug','1')
후 새로고침하면 live-detail content 와 livePlaybackJson 파싱 결과를
통째로 콘솔에 찍어 어느 필드가 UI 트리거인지 들여다볼 수 있다.
플래그 두 개 set 동작은 유지. 실제 UI 트리거 메커니즘 파악되면 후속
커밋에서 정식 픽스.
문제: v1.1.0 의 fetch 후킹은 작동(`fetch hook installed` 로그 확인)했지만
실제 라이브 페이지에서 `forcing timeMachine ON` 로그가 한 번도 안 떴음.
콘솔 스택트레이스에 `XMLHttpRequest.send` 와 `xhr @ main.d2cbcc55.js` 가
반복 등장해 치지직 React 앱이 axios over XHR 로 live-detail 을 호출하는
것이 확인됨 → fetch 만 후킹한 v1.1.0 은 무용지물이었음.
수정:
- timemachine.js: XMLHttpRequest 의 open/setRequestHeader/send 를 후킹.
live-detail URL 이면 native send 대신 우리가 fetch 로 직접 요청을
날리고, 응답을 patchLiveDetailData 로 패치한 뒤 defineProperty 로
readyState/status/responseText/response/responseURL 등을 덮어쓰고
readystatechange/load/loadend 이벤트를 합성 발화. responseType
(text/json/arraybuffer/blob) 별 response 값도 맞춰 만든다.
- fetch 후킹도 유지 (혹시 일부 경로가 fetch 쓸 수 있음).
- 로그 메시지를 `hooks installed (fetch + XHR)` 로 변경하고 XHR 진입
지점에 `XHR live-detail intercepted for <channelId>` 진단 로그 추가.
- urlOf() 헬퍼로 string/Request/URL 입력을 일관 처리.
- manifest 버전 1.1.0 → 1.1.1.
- README 동작 방식 설명/확인 로그 갱신.
- rules.json: 빈 배열로 추가. manifest 의 declarative_net_request 가
참조하는 파일이 없어 확장 로드 자체가 실패하던 문제 해결.
- timemachine.js: live-detail URL 정규식이 `service/v3.2/...` 같은
마이너 버전 경로를 매칭하도록 `v\d+` → `v[\d.]+` 로 수정. 실제 치지직
공개 API 는 v3.2 를 사용 중 (참고: jaesung9507/nvver chzzk/live.go).
- timemachine.js: live-detail 응답 필드는 `timeMachine` 이 아니라
`timeMachineActive` 와 `timeMachinePlayback` 두 개. 둘 다 true 로
세팅해야 플레이어가 되감기 UI 를 띄운다. alreadyOn 판정도 두 플래그
AND 로 변경.
- PLAYBACK_JSON_VERSIONS 에 v3.2, v3.1 추가.
- timemachine.js: live-detail 응답을 fetch 후킹으로 가로채
timeMachineActive 를 true 로 만들고, live-playback-json 의 DVR
매니페스트로 livePlaybackJson 을 교체해 되감기 UI 와 실제 seek
동작을 살린다. 스트리머가 타임머신을 꺼둔 라이브에서도 동작.
- manifest.json: timemachine.js 를 content_scripts 에 추가하고
버전을 1.1.0 으로 올림. name/description 을 다기능에 맞게 갱신.
- popup.html: 타임머신 강제 활성화 상태 표시 항목 추가.
- README.md: 기능 설명, 설치 방법, 동작 확인 로그, 면책 명시.