코네콘 움짤 업로드용 임시 유저스크립트
ViolentMonkey 유저스크립트
// ==UserScript==
// @name kone.gg GIF 업로드 수정 (ffmpeg module worker fix)
// @namespace kone.gg.gif.fix
// @match https://kone.gg/*
// @run-at document-start
// @grant none
// @version 0.1
// @description module 워커 → classic 우회 + importScripts/fetch/import 경로 절대화
// ==/UserScript==
(function () {
'use strict';
const NativeWorker = window.Worker;
const ORIGIN = location.origin;
function PatchedWorker(url, opts) {
let abs;
try { abs = new URL(url, location.href).href; } catch (e) { abs = String(url); }
const isModule = !!(opts && opts.type === 'module');
try {
if (isModule && abs.includes('/immutable/workers/worker-')) {
const xhr = new XMLHttpRequest();
xhr.open('GET', abs, false);
xhr.send(null);
if (xhr.status === 200 && xhr.responseText.includes('createFFmpegCore')) {
const src = xhr.responseText;
const preamble =
'(function(){' +
'var ORIGIN=' + JSON.stringify(ORIGIN) + ';' +
'function abs(u){' +
'try{' +
'if(typeof u==="string"&&u[0]==="/"&&u[1]!=="/")return ORIGIN+u;' + // 루트경로만 절대화
'return new URL(u,ORIGIN).href;' +
'}catch(e){return u}' +
'}' +
// importScripts 절대화
'if(typeof importScripts==="function"){' +
'var _is=importScripts;' +
'importScripts=function(){return _is.apply(this,Array.prototype.map.call(arguments,abs))};' +
'}' +
// fetch 절대화 (wasm 로딩이 여기로 나감)
'if(typeof fetch==="function"){' +
'var _ft=fetch;' +
'self.fetch=function(input,init){' +
'try{' +
'if(typeof input==="string"){input=abs(input);}' +
'else if(input&&input.url){input=new Request(abs(input.url),input);}' +
'}catch(e){}' +
'return _ft.call(this,input,init);' +
'};' +
'}' +
// 동적 import 절대화
'self.__dynImport=function(u){return import(abs(u))};' +
'})();\n';
const patchedSrc = src.replace(/\bimport\(/g, 'self.__dynImport(');
const blobURL = URL.createObjectURL(
new Blob([preamble + patchedSrc], { type: 'text/javascript' })
);
return new NativeWorker(blobURL);
}
}
} catch (e) {
// 후킹 실패 시 원본 워커로 폴백
}
return new NativeWorker(url, opts);
}
PatchedWorker.prototype = NativeWorker.prototype;
Object.setPrototypeOf(PatchedWorker, NativeWorker);
window.Worker = PatchedWorker;
})();
ViolentMonkey 유저스크립트 base64인코딩
Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICBrb25lLmdnIEdJRiDsl4XroZzrk5wg7IiY7KCVIChmZm1wZWcgbW9kdWxlIHdvcmtlciBmaXgpCi8vIEBuYW1lc3BhY2UgICAga29uZS5nZy5naWYuZml4Ci8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9rb25lLmdnLyoKLy8gQHJ1bi1hdCAgICAgICBkb2N1bWVudC1zdGFydAovLyBAZ3JhbnQgICAgICAgIG5vbmUKLy8gQHZlcnNpb24gICAgICAwLjEKLy8gQGRlc2NyaXB0aW9uICBtb2R1bGUg7JuM7LukIOKGkiBjbGFzc2ljIOyasO2ajCArIGltcG9ydFNjcmlwdHMvZmV0Y2gvaW1wb3J0IOqyveuhnCDsoIjrjIDtmZQKLy8gPT0vVXNlclNjcmlwdD09CihmdW5jdGlvbiAoKSB7CiAgJ3VzZSBzdHJpY3QnOwogIGNvbnN0IE5hdGl2ZVdvcmtlciA9IHdpbmRvdy5Xb3JrZXI7CiAgY29uc3QgT1JJR0lOID0gbG9jYXRpb24ub3JpZ2luOwoKICBmdW5jdGlvbiBQYXRjaGVkV29ya2VyKHVybCwgb3B0cykgewogICAgbGV0IGFiczsKICAgIHRyeSB7IGFicyA9IG5ldyBVUkwodXJsLCBsb2NhdGlvbi5ocmVmKS5ocmVmOyB9IGNhdGNoIChlKSB7IGFicyA9IFN0cmluZyh1cmwpOyB9CiAgICBjb25zdCBpc01vZHVsZSA9ICEhKG9wdHMgJiYgb3B0cy50eXBlID09PSAnbW9kdWxlJyk7CgogICAgdHJ5IHsKICAgICAgaWYgKGlzTW9kdWxlICYmIGFicy5pbmNsdWRlcygnL2ltbXV0YWJsZS93b3JrZXJzL3dvcmtlci0nKSkgewogICAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdHRVQnLCBhYnMsIGZhbHNlKTsKICAgICAgICB4aHIuc2VuZChudWxsKTsKCiAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCAmJiB4aHIucmVzcG9uc2VUZXh0LmluY2x1ZGVzKCdjcmVhdGVGRm1wZWdDb3JlJykpIHsKICAgICAgICAgIGNvbnN0IHNyYyA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgY29uc3QgcHJlYW1ibGUgPQogICAgICAgICAgICAnKGZ1bmN0aW9uKCl7JyArCiAgICAgICAgICAgICAgJ3ZhciBPUklHSU49JyArIEpTT04uc3RyaW5naWZ5KE9SSUdJTikgKyAnOycgKwogICAgICAgICAgICAgICdmdW5jdGlvbiBhYnModSl7JyArCiAgICAgICAgICAgICAgICAndHJ5eycgKwogICAgICAgICAgICAgICAgICAnaWYodHlwZW9mIHU9PT0ic3RyaW5nIiYmdVswXT09PSIvIiYmdVsxXSE9PSIvIilyZXR1cm4gT1JJR0lOK3U7JyArICAvLyDro6jtirjqsr3roZzrp4wg7KCI64yA7ZmUCiAgICAgICAgICAgICAgICAgICdyZXR1cm4gbmV3IFVSTCh1LE9SSUdJTikuaHJlZjsnICsKICAgICAgICAgICAgICAgICd9Y2F0Y2goZSl7cmV0dXJuIHV9JyArCiAgICAgICAgICAgICAgJ30nICsKICAgICAgICAgICAgICAvLyBpbXBvcnRTY3JpcHRzIOygiOuMgO2ZlAogICAgICAgICAgICAgICdpZih0eXBlb2YgaW1wb3J0U2NyaXB0cz09PSJmdW5jdGlvbiIpeycgKwogICAgICAgICAgICAgICAgJ3ZhciBfaXM9aW1wb3J0U2NyaXB0czsnICsKICAgICAgICAgICAgICAgICdpbXBvcnRTY3JpcHRzPWZ1bmN0aW9uKCl7cmV0dXJuIF9pcy5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhcmd1bWVudHMsYWJzKSl9OycgKwogICAgICAgICAgICAgICd9JyArCiAgICAgICAgICAgICAgLy8gZmV0Y2gg7KCI64yA7ZmUICh3YXNtIOuhnOuUqeydtCDsl6zquLDroZwg64KY6rCQKQogICAgICAgICAgICAgICdpZih0eXBlb2YgZmV0Y2g9PT0iZnVuY3Rpb24iKXsnICsKICAgICAgICAgICAgICAgICd2YXIgX2Z0PWZldGNoOycgKwogICAgICAgICAgICAgICAgJ3NlbGYuZmV0Y2g9ZnVuY3Rpb24oaW5wdXQsaW5pdCl7JyArCiAgICAgICAgICAgICAgICAgICd0cnl7JyArCiAgICAgICAgICAgICAgICAgICAgJ2lmKHR5cGVvZiBpbnB1dD09PSJzdHJpbmciKXtpbnB1dD1hYnMoaW5wdXQpO30nICsKICAgICAgICAgICAgICAgICAgICAnZWxzZSBpZihpbnB1dCYmaW5wdXQudXJsKXtpbnB1dD1uZXcgUmVxdWVzdChhYnMoaW5wdXQudXJsKSxpbnB1dCk7fScgKwogICAgICAgICAgICAgICAgICAnfWNhdGNoKGUpe30nICsKICAgICAgICAgICAgICAgICAgJ3JldHVybiBfZnQuY2FsbCh0aGlzLGlucHV0LGluaXQpOycgKwogICAgICAgICAgICAgICAgJ307JyArCiAgICAgICAgICAgICAgJ30nICsKICAgICAgICAgICAgICAvLyDrj5nsoIEgaW1wb3J0IOygiOuMgO2ZlAogICAgICAgICAgICAgICdzZWxmLl9fZHluSW1wb3J0PWZ1bmN0aW9uKHUpe3JldHVybiBpbXBvcnQoYWJzKHUpKX07JyArCiAgICAgICAgICAgICd9KSgpO1xuJzsKCiAgICAgICAgICBjb25zdCBwYXRjaGVkU3JjID0gc3JjLnJlcGxhY2UoL1xiaW1wb3J0XCgvZywgJ3NlbGYuX19keW5JbXBvcnQoJyk7CiAgICAgICAgICBjb25zdCBibG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTCgKICAgICAgICAgICAgbmV3IEJsb2IoW3ByZWFtYmxlICsgcGF0Y2hlZFNyY10sIHsgdHlwZTogJ3RleHQvamF2YXNjcmlwdCcgfSkKICAgICAgICAgICk7CgogICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVXb3JrZXIoYmxvYlVSTCk7CiAgICAgICAgfQogICAgICB9CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIC8vIO2bhO2CuSDsi6TtjKgg7IucIOybkOuzuCDsm4zsu6TroZwg7Y+067CxCiAgICB9CiAgICByZXR1cm4gbmV3IE5hdGl2ZVdvcmtlcih1cmwsIG9wdHMpOwogIH0KCiAgUGF0Y2hlZFdvcmtlci5wcm90b3R5cGUgPSBOYXRpdmVXb3JrZXIucHJvdG90eXBlOwogIE9iamVjdC5zZXRQcm90b3R5cGVPZihQYXRjaGVkV29ya2VyLCBOYXRpdmVXb3JrZXIpOwogIHdpbmRvdy5Xb3JrZXIgPSBQYXRjaGVkV29ya2VyOwp9KSgpOw==
몇 일 전부터 webp나 gif 같은 움짤이 코네콘에 안 올라가지길래 claude로 바이브 코딩해서 해결했습니다.
사이트 업데이트되면 작동을 안하거나 또는 문제를 일으킬 수 있으니, 움짤 업로드할때만 잠시 적용시키는 것을 권장드립니다.
(수정) 해당 문제는 6월 11일자 패치로 해결되었습니다.
s/somisoft
• 157,564 subscribers- 1. 게시물 규정 양식
업로드 시 링크 암호화 & 필수 정보를 기입할 것
- 2. 질문
국룰, 암호화 링크 등 기본사항 질문 금지, 탭 미준수시 차단 및 삭제
- 3. 요청
요청 기준 및 양식 미준수 & 댓글로만 자료 복구 요청 시 차단
- 4. 미성년자 / 근첩 / 페미 / 다중계정
조금이라도 의심되면 선 차단, 후 해명
- 5. 좆목 / 네임드화
닉언, 네임드화 등 친목질 금지
- 6. 분탕 및 어그로 / 혐짤 / 낚시 / 뇌절
해당 카테고리의 차단 기간 및 가중처벌은 처리자 재량으로 판단
- 7. 홍보 / 판촉 / 거래
허용되지 않은 모든 형태의 홍보, 거래, 교환, 조건부 공유 시 차단
- 8. 쌀먹 / 바이러스
조건부 공유 & 수익성 링크 & 고의적인 바이러스 유포 시 갱신차단
- 9. 자료 분류 / AI
미검수 시 표기 필수, 생성형 AI를 사용한 자료의 제목에 AI 미기입 시 차단
- 10. 실사 / 토들러
업로드시 갱신 차단
- 11. 기타 세부 규정은 서브 공지사항 참고