문제: 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 동작 방식 설명/확인 로그 갱신.
45 lines
1.1 KiB
JSON
45 lines
1.1 KiB
JSON
{
|
|
"name": "Chzzk Bypass",
|
|
"version": "1.1.1",
|
|
"manifest_version": 3,
|
|
"description": "치지직(CHZZK) 시청 환경 개선: 1) Mac 위장으로 그리드 없이 1080p 시청, 2) 스트리머가 타임머신을 꺼둔 라이브에서도 되감기 UI 강제 표시.",
|
|
"icons": {
|
|
"16": "icons/icon16.png",
|
|
"48": "icons/icon48.png",
|
|
"128": "icons/icon128.png"
|
|
},
|
|
"action": {
|
|
"default_popup": "popup.html",
|
|
"default_title": "Chzzk Bypass Status"
|
|
},
|
|
"permissions": [
|
|
"declarativeNetRequest",
|
|
"declarativeNetRequestWithHostAccess"
|
|
],
|
|
"host_permissions": [
|
|
"*://*.naver.com/*",
|
|
"*://*.ncloud.com/*"
|
|
],
|
|
"declarative_net_request": {
|
|
"rule_resources": [
|
|
{
|
|
"id": "rules",
|
|
"enabled": true,
|
|
"path": "rules.json"
|
|
}
|
|
]
|
|
},
|
|
"content_scripts": [
|
|
{
|
|
"matches": [
|
|
"*://chzzk.naver.com/*"
|
|
],
|
|
"js": [
|
|
"content.js",
|
|
"timemachine.js"
|
|
],
|
|
"run_at": "document_start",
|
|
"world": "MAIN"
|
|
}
|
|
]
|
|
} |