Skip to content

Instantly share code, notes, and snippets.

@eta66
eta66 / q.user.js
Last active August 13, 2025 12:45
// ==UserScript==
// @name chzzk-time-machine
// @author eta66 (eta66@proton.me)
// @match https://chzzk.naver.com/*
// @grant unsafeWindow
// @run-at document-start
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/url
// ==/UserScript==
(()=>{let e;async function t(){if(!location.pathname.includes("/live/"))return;new MutationObserver(((_,t)=>{const n=document.querySelector(".slider");n&&(n.remove(),t.disconnect())})).observe(document.body,{childList:!0,subtree:!0});const t=await fetch(`https://api.chzzk.naver.com/service/v1/channels/${location.pathname.split("/").pop()}/clip-time-machine-info`,{credentials:"include"});e=JSON.stringify((await t.json()).content.timeMachinePlayback)}unsafeWindow.XMLHttpRequest=class extends XMLHttpRequest{constructor(){super(),this.addEventListener("load",(()=>{if(this.responseURL.includes("live-detail")&&e){const t=JSON.parse(this.responseText);t.content.livePlaybackJson=e,t.content.p2pQuality=[],Object.defineProperty(this,"respo
@eta66
eta66 / l.user.js
Last active August 11, 2025 09:25
// ==UserScript==
// @name soop-bypass
// @author eta66 (eta66@proton.me)
// @version 1.0.8
// @match https://play.sooplive.co.kr/*
// @grant unsafeWindow
// @run-at document-start
// @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js
// ==/UserScript==
@eta66
eta66 / y.user.js
Last active August 11, 2025 09:38
// ==UserScript==
// @name chzzk-bypass
// @author eta66 (eta66@proton.me)
// @match https://chzzk.naver.com/*
// @match https://*.chzzk.naver.com/*
// @require https://unpkg.com/xhook@latest/dist/xhook.min.js
// ==/UserScript==
xhook.after(function(t,e){if(-1!==t.url.indexOf("live-detail"))try{let n=JSON.parse(e.text);n.content&&n.content.p2pQuality&&(n.content.p2pQuality=[]),e.text=JSON.stringify(n)}catch(r){console.error(r)}});