kone
sub_icon

심야시장

Base64 자동 디코더

2025-05-25 18:18:11
유틸
조회 4560 · 좋아요 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
RJ01189784 이모코네 - 전달하고 싶은 연심 ver 1.09 (光雪茶会 24.11.07)
번역
Covid-19
02.07 4823 6
PeachBi1tch 있는분
일반
bsh8751
02.04 2679 -1
잉여 스팽킹 애니
영상
ㅇㅇ
02.02 9230 9
복수 alternative
번역
ㅇㅇ
02.02 5706 11
h-flash 이 사이트 쓰는법 아는사람?
질문&요청
폭격이다
02.02 3034 0
진정한 사랑의 백합은 붉게 물든다 (バグシステム 19.11.29)
번역
Covid-19
02.01 3952 14
VJ011687 오빠, 아침까지 계속 꼬옥 안아줘! ver 1.1 (Tinkle Position 18.09.28) JPN/KR
번역
Covid-19
02.01 5886 13
VJ012917 오빠, 아침까지 계속 꼬옥 안아줘, 밤까지 더 음란하게! (Tinkle Position 19.09.27) JPN/KR
번역
Covid-19
02.01 4461 10
증기도시의 탐정소녀 복구 부탁드립니다
질문&요청
boron
02.01 1753 0
[복구요청] 밀팩 불꽃바니 복구 요청
질문&요청
pinkdolphin1
01.31 2673 1
RJ258146 악녀의 영관 ver 1.0 (エムサイズ 19.08.09) KR/JPN
번역
Covid-19
01.31 10792 23
아마카노2+ (Azarashi Soft 23.04.28)
번역
Covid-19
01.30 4535 14
아마나츠 (Azarashi Soft 22.08.26)
번역
Covid-19
01.30 4054 11
[복구 요청] 비밀 노출 - 배덕의 달콤함에 물든 마나카
질문&요청
010122
01.29 2198 -2
[복구요청] 인공학원2 10주년 복구 요청 부탁드립니다
질문&요청
선강
01.29 2045 4
인공학원2 10주년 복구 요청드립니다
질문&요청
Ghost
01.23 2973 4
다시 한 번 1인3역의 공연을 보고싶습니다
일반
vfrtyhjuhg
01.23 2460 4
[복구 요청] 러브딜리버리2 복구 요청
질문&요청
jeonjjang
01.22 3764 3
[요청] blendy 자막
질문&요청
ensjenbe
01.19 2509 -1
[복구 요청] 연애 허당인 소꿉친구 소녀와 연애 고수인 그녀
질문&요청
babamba95
01.18 2379 -1
근데 팍팍 까는 애들 존나 웃기긴하네
일반
fjjx923
01.18 5900 -80
[복구요청] 비밀 노출 -배덕의 달콤함에 물든 마나카
질문&요청
muyu
01.18 2743 -1
[복구요청] [POISON] Kan’ochi x Netorare Kazoku ~MOTION EDITION~
질문&요청
aqdpdl11-000
01.16 3534 3
[복구 요청] 프린세스 러버, 왈큐레 로만체-소녀기사 이야기-, 왈큐레 로만체 more&more, 왈큐레 로만체 Re:tell 1,2
질문&요청
aqdpdl11-000
01.16 2610 0
[복구요청] 언더 더 위치 : 시작 Under The Witch Beginnings v1.8
질문&요청
sadfds5
01.16 2712 6
혹시 야애니 회사 이름 아시는 분?
질문&요청
rayman
01.16 2413 2
[복구요청] 국산 미연시 러브딜리버리2 복구 요청
질문&요청
ggieeeec
01.15 2860 4
[복구요청] 스쿨데이즈 복구 가능할까요
질문&요청
nakonako
01.14 1725 0
난파우주선 토도로키호
질문&요청
676767
01.13 1940 -5
거유 판타지 한글화 하는법 질문
질문&요청
kisamao
01.13 1748 -2