Commit Graph

15 Commits

Author SHA1 Message Date
chzzk-bypass owner
cef39cfa7d docs: 리뷰 피드백 반영 — 위장 범위/ncloud 권한/getHighEntropyValues 미구현 명시
- '일치시킨다' 표현을 '일부 저엔트로피 값만 맞춘다'로 정정
- ncloud.com host_permission 은 선언만 되어 있고 DNR 규칙은 chzzk.naver.com 한정임을 명시
- userAgentData.getHighEntropyValues 미구현으로 사이트 스크립트 TypeError 가 발생할 수 있음을 '알려진 위험' 에 추가
2026-05-28 19:31:58 +09:00
chzzk-bypass owner
d249975b84 docs: 현 상태(v1.0.0) 기능/위장 레이어/위험 정리한 README 작성
reset 이후 README 가 없어진 상태에서 코드 동작을 분석해 새로 작성.

- 동작 원리: JS (`content.js`) + HTTP 헤더 (`rules.json`) 두 레이어
  Mac 위장 (UA, platform, userAgentData / user-agent, sec-ch-ua-platform)
- 설치 / 파일 구조 / 권한 정리
- 알려진 위험: "허용되지 않는 비정상적 접근" 팝업 실측 트리거 사실과
  추가 핑거프린팅 신호(고엔트로피 CH, WebGL 등) 미위장 한계 명시
2026-05-28 19:28:21 +09:00
tkrmagid-desktop
43290248ee 다시 처음으로 2026-05-28 19:27:11 +09:00
chzzk-bypass owner
a59992dc87 v1.2.2: 우회 기능 전면 제거 (비정상 접근 팝업 위험)
v1.2.0(JS UA 위장), v1.2.1(JS + 저엔트로피 HTTP 헤더 위장) 모두
치지직의 "허용되지 않는 비정상적 접근입니다" 팝업을 실측에서 트리거함이
확인됐다. 치지직은 고엔트로피 Client Hints, WebGL renderer, Canvas/Audio
등 다수의 핑거프린팅 신호를 추가로 보고 있으며, 클라이언트 확장만으로는
이를 일관되게 위장할 수 없다. 반복 접근 시 계정 제재 위험이 명시되어
있어 우회 시도 자체를 중단한다.

변경:
- content.js 삭제 (navigator.userAgent / platform / userAgentData 위장 제거)
- rules.json 삭제 (declarativeNetRequest 헤더 위장 규칙 제거)
- manifest.json: content_scripts / declarative_net_request / permissions /
  host_permissions 전부 제거. 1.2.1 → 1.2.2, description 갱신
- popup.html / popup.js: 상태 안내만 표시. "Mac 위장 (1080p)" 등 우회 표현 제거
- README.md: 우회 기능 중단 사유 명시, 대안으로 그리드 정식 설치 / 720p 안내

검증:
- 콘솔에 [chzzk-bypass:*] 런타임 로그 발생하지 않음 (content.js 부재)
- nlog.js getHighEntropyValues 오류 본 확장에서 트리거 안 함
- manifest 누락 참조 없음 (rules.json / content.js 참조 전부 제거)
2026-05-28 19:21:30 +09:00
chzzk-bypass owner
15a852c8ad v1.2.1: HTTP 헤더(User-Agent / sec-ch-ua*)도 Mac 으로 위장
v1.2.0 까지는 navigator.* JS 값만 Mac 으로 덮어쓰고 실제 HTTP 요청 헤더는
원본(Windows)으로 나가서, 치지직 핑거프린팅이 클라이언트 사이드 불일치를
잡아내 "허용되지 않는 비정상적 접근" 팝업을 띄우는 것으로 추정됨.

declarativeNetRequest modifyHeaders 규칙으로 다음 요청 헤더를 Mac 값으로
덮어써 JS 레벨 (navigator.*) 과 네트워크 레벨이 일치하도록 한다:

- User-Agent
- sec-ch-ua
- sec-ch-ua-platform
- sec-ch-ua-mobile

부수 변경:
- host_permissions 에 *.pstatic.net 추가 (치지직 비디오/이미지 CDN)
- README / content.js 주석에 두-레이어 위장 구조 명시
2026-05-28 18:27:31 +09:00
chzzk-bypass owner
0a326e5d80 v1.2.0: 타임머신 강제 활성화 기능 제거 + nlog.js getHighEntropyValues 오류 수정
- timemachine.js 제거 및 manifest content_scripts 에서 빼냄
  스트리머가 끈 타임머신은 서버 측 DVR 프로비저닝이 없어 cosmetic 우회만
  가능했고, 클라이언트-사이드 상태 불일치가 치지직 비정상 접근 감지를
  트리거해 "허용되지 않는 비정상적 접근입니다" 팝업 + 계정 제재 위험이
  실측으로 확인되어 제거.
- content.js 의 navigator.userAgentData override 에 getHighEntropyValues /
  toJSON 까지 일관된 Mac 값으로 구현. 기존엔 메서드가 없어서 nlog.js 가
  Uncaught TypeError: e.getHighEntropyValues is not a function 을 던졌음.
- popup.html 의 "타임머신: 강제 활성화" 상태 항목 제거.
- README 를 현재 동작 (그리드 우회만) 에 맞춰 재작성, 타임머신 미지원
  사유 명시.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 15:15:43 +09:00
tkrmagid
ed2c9c9fc3 docs: v1.1.3 동작 설명과 일치하도록 주석/README 정리
- timemachine.js 헤더에서 'live-playback-json 매니페스트 교체로 실제 seek 살린다'
  설명을 제거하고 cosmetic UI-only 패치임을 명시
- README 파일 구조: 'fetch 후킹' -> 'fetch + XHR 후킹'
- README 동작 확인 로그: 'livePlaybackJson swapped for DVR manifest' (현재 코드에
  없는 문자열) 를 실제 출력되는 'inner livePlaybackJson meta/live patched
  (liveRewind, duration, timeMachine)' 로 교체
2026-05-28 14:39:59 +09:00
Claude (chzzk-bypass owner)
9a07bf87a7 v1.1.3: livePlaybackJson 내부 meta/live 도 패치 (cosmetic UI only)
발견: live-detail 의 outer boolean (timeMachineActive, timeMachinePlayback)
두 개를 true 로 만들어도 재생바가 안 뜸. 외부 자료
(jaesung9507/nvver playback.go) 확인 결과, 플레이어는 livePlaybackJson 내부의
meta.liveRewind / meta.duration / live.timeMachine 을 보고 UI 를 결정함.
이 필드들은 omitempty 라서 DVR ON 일 때만 응답에 존재.

수정:
- patchLiveDetailData 에서 livePlaybackJson 을 파싱해 meta.liveRewind=true,
  meta.duration 보강 (1h 기본), live.timeMachine=true 주입 후 재직렬화.
- 깨진 live-playback-json 외부 호출은 이전 커밋에서 이미 제거됨.

근본적 한계 (README 에 명시):
- 이건 cosmetic 패치다. CDN 의 DVR window 는 스트리머가 타임머신을 켰을 때만
  서버가 프로비저닝하므로, 스트리머가 꺼둔 라이브는 HLS 매니페스트에 과거
  segment 자체가 없음. 재생바가 떠도 실제 seek 은 동작 안 할 가능성 높음.
- live-playback-json 엔드포인트가 timeMachine-off 채널에서 404 인 것도 같은
  이유. Streamlink/ChzzkDownloader 도 timeMachineActive 일 때만 부름.
- 진짜 force-timemachine 은 서버 사이드(CDN) 의 결정이라 클라이언트에서
  근본적으로 우회 불가.

manifest 버전 1.1.2 → 1.1.3, README 한계 명시.
2026-05-28 14:33:14 +09:00
Claude (chzzk-bypass owner)
994397e710 v1.1.2: live-playback-json fetch 제거 + 진단 덤프 추가
문제: 사용자 콘솔에서 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 트리거 메커니즘 파악되면 후속
커밋에서 정식 픽스.
2026-05-28 14:28:43 +09:00
Claude (chzzk-bypass owner)
7fa34bf6ea XHR 후킹 추가: 치지직이 axios 로 부르는 live-detail 도 가로채도록 수정
문제: 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 동작 방식 설명/확인 로그 갱신.
2026-05-28 01:43:29 +09:00
tkrmagid-desktop
833f313b72 add .gitignore 2026-05-28 01:42:34 +09:00
Claude (chzzk-bypass owner)
7d4c994712 리뷰 피드백 반영: rules.json 추가, v3.2 URL/timeMachinePlayback 대응
- 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 추가.
2026-05-28 01:33:50 +09:00
Claude (chzzk-bypass owner)
2c6a345219 타임머신 강제 활성화 기능 추가 및 README 작성
- 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: 기능 설명, 설치 방법, 동작 확인 로그, 면책 명시.
2026-05-28 01:27:58 +09:00
fda59f5f7e 아이콘 추가 2026-05-28 01:14:59 +09:00
6c0e103aeb 기존 확장 추가 2026-05-28 01:14:31 +09:00