kone
sub_icon

심야시장

Base64 자동 디코더

2025-05-25 18:18:11
유틸
조회 4557 · 좋아요 3

Tempermonkey 설치 후 아래 스크립트 추가 하기...


설명은 다른사람들이 알아서 할것 같아서 그냥 싸지르고 튀겠습니다.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

// ==UserScript==

// @name         Base64 AutoDecoder

// @namespace    http://tampermonkey.net/

// @version      1.0

// @description  디코딩 가능한 base64 문자열을 링크로 변환합니다.

// @author       Zeliper

// @match        https://kone.gg/s/imya/*

// @include      https://kone.gg/

// @grant        unsafeWindow

// ==/UserScript==

unsafeWindow.on = true ;

( function () {

'use strict' ;

// Base64 문자열을 URL로 디코딩하는 함수

function  decodeBase64ToURL(str) {

try  {

const  decoded =  atob(str); // Base64 디코딩

// URL이 http 또는 https로 시작하는지 확인

if  ( / ^https?:\ / \ //.test(decoded)) {

return  decoded; // 유효한 URL이면 반환

            }

        } catch  (e) {

return null ; // 디코딩 오류가 나면 null 반환

        }

return null ;

    }

// 텍스트에서 Base64 문자열을 찾아 링크로 변환하는 함수

function  replaceBase64WithLink(node) {

console .log( "Node : " , node);

const  base64Regex = / \b[a - zA - Z0 - 9 + / = ]{ 20 ,}\b / g; // Base64 문자열을 찾는 정규식

let  text =  node.textContent; // 텍스트 노드의 텍스트 내용

let  match;

const parent =  node.parentNode;

let  lastIndex = 0 ;

// 텍스트에서 Base64 문자열을 찾아서 처리

while  ((match =  base64Regex.exec(text)) ! = = null ) {

const  before =  text.slice(lastIndex, match.index);

const  base64Str =  match[ 0 ];

const  decodedURL =  decodeBase64ToURL(base64Str);

if  (decodedURL) {

console .log(decodedURL);

// 유효한 URL이 디코딩되었으면 링크로 변환

const  a = document .createElement( 'a' );

                a.href =  decodedURL;

                a.textContent =  decodedURL;

                a.target = '_blank' ;

//node.textContent = ''; // <-- 나중에 문제 없으면 이거 넣어서 해도 될듯

                node.appendChild( document .createElement( 'br' ));

                node.appendChild(a);

            } else {

console .log( "Failed" );

            }

            lastIndex =  base64Regex.lastIndex;

        }

    }

// .prose-container의 Shadow DOM을 탐색하여 텍스트 변환

function  walkShadowRoot(shadowRoot) {

const  textNodes =  shadowRoot.querySelectorAll( ':not(div)' );

// 모든 텍스트 노드를 확인

        textNodes.forEach(node = >  {

            replaceBase64WithLink(node);

        });

    }

// .prose-container가 로드된 후 Shadow DOM 탐색

function  processShadowRoot() {

const  container = document .body.querySelector( '.prose-container' );

if  (container & &  container.shadowRoot) {

            walkShadowRoot(container.shadowRoot); // Shadow DOM 처리

        }

    }

// 페이지가 완전히 로드된 후 실행

function  onLoad() {

        processShadowRoot();

    }

// MutationObserver를 사용하여 .prose-container의 Shadow DOM 로드를 감지

const  observer = new  MutationObserver(() = >  {

const  container = document .body.querySelector( '.prose-container' );

if  (container & &  container.shadowRoot) {

            processShadowRoot();

        }

    });

// .prose-container가 추가될 때까지 대기

    observer.observe( document .body, { childList: true , subtree: true  });

// 페이지 로딩이 완료되면 바로 실행

if  ( document .readyState = = = 'complete' ) {

        onLoad();

    }

})();

cs

3
댓글 6개
댓글 쓰기
25.05.25
복붙하니까 eslint : no-multi-spaces - multiple spaces found before 이런 오류 뜨는 데 왜 그런지 암?
주황색 세모에 ! 있는거 왼쪽 line표시에 나오는거면 eslint 문법 체크인데 무시해도됨. 실제 동작 하는지 페이지 새로고침 해서 base64문자 밑에 링크 생성만 되면 동작하고 있는거임
25.05.26 (04.02)

삭제된 댓글입니다.

25.05.27 (04.02)

삭제된 댓글입니다.

25.11.15
안되는데..
0 / 500
(복구)[NumericGazer] 언더 더 위치 -비기닝 v1.8, 데보라 v0.3.2, 쿠로 v0.5.4- The Witch Gothic -Beginnings, Deborah's Room, Kuro's Room-
번역
moeum
05.22 4008 21
(복구)미소녀 만화경 시리즈 (설녀 없음)
번역
moeum
04.12 6161 26
(복구)러브 딜리버리 1,2 러브 인 로그인
번역
moeum
04.11 10725 38
오나니 관리 AI
소리
만갤러
04.02 15246 109
[AI번역][미검수][MTool] 앨리스와 이상한 섬
번역
마신
03.18 6608 15
Tadano Mezashi 폭유 우등생에게 필요한 자지공부
동인
ghksdl123
03.05 8391 27
[복구] 럽딜 1, 2, 로그인(일반, 시크릿플러스)
번역
iliilliliiilil
02.18 17583 59
인공학원 10주년 링크
번역
Covid-19
02.12 12318 23
RJ01048672 요몽원:악몽을 만드는 사람 ~악마에 멍한 남자~ ver 1.7 (私立さくらんぼ乳学校 23.05.01)
번역
Covid-19
02.07 20758 48
좀 더! 임신! 불꽃의 젖가슴 이세계 에로 마법학원! / 초에로 어플 학원
번역
Covid-19
02.07 14164 32
RJ258146 악녀의 영관 ver 1.0 (エムサイズ 19.08.09) KR/JPN
번역
Covid-19
01.31 10792 23
엔젤 비트! - 1st beat -
번역
nekozuka-hibiki
01.08 12180 22
움떡방주 삭제된 이유
일반
НКВД
25.12.19 14133 21
[baketsu purin]˝네가 차버린 내향적 여자 지금은 팔로워 100만 명이 넘는 거유 그라비아 아이돌이 됐어, 알겠지? w˝ 2 ―여친이 있는 나를 통통하고 거대한 가슴의 몸매로 유혹해 와서 역(逆)
동인
will1250
25.11.29 12859 30
[baketsu purin]네가 차버린 내향적 여자 지금은 팔로워 100만 명이 넘는 거유 그라비아 아이돌이 됐어, 알겠지 w ―여친이 있는 나를 통통하고 거대한 가슴의 몸매로 유혹해 와서 역(逆) NTR하는 이야기
동인
will1250
25.11.29 12265 29
네코파라 시리즈
번역
도파민
25.11.08 12621 36
사족
번역
도파민
25.11.08 10106 27
후유카라 쿠루루
번역
도파민
25.11.08 10904 31
토메후레 1,W,2
번역
도파민
25.11.06 10341 32
복구) 응석받이 여름편 (20.07.25) + 겨울편 (23.07.14) 노모 손번역
번역
Covid-19
25.11.04 15758 46
림프선 꾹꾹 메스가키 밀크
번역
1557
25.11.01 23625 49
[보이스코믹] 참회구멍, 내가 왜 이딴 놈에게 못 이기는 거야
소리
만갤러
25.10.30 21317 135
픽팍 냅둔 이유
공지
lili
25.10.29 28147 64
에로게 시츄에이션
번역
neet
25.10.25 9130 31
얼굴 없는 달 -달맞이의 쌍동백- (수정패치 추가)
번역
forgetmenot
25.10.24 9326 34
[Poison] [Posion Motion] [POISON EXTASY] 비쥬얼 노벨 15종
번역
Ghost
25.10.24 25095 31
새벽을 기다리는 별들에게
번역
ㅇㅇ
25.10.22 11398 20
이웃에게 시리즈
번역
ㅇㅇ
25.10.22 10820 21
소악마 리사
번역
ㅇㅇ
25.10.22 8152 15
[복구] 그녀는 친구인가요? 연인인가요? 아니면 토메후레인가요?
번역
yu86a
25.10.18 7944 29