kone
sub_icon

심야시장

Base64 자동 디코더

2025-05-25 18:18:11
유틸
조회 4558 · 좋아요 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
[요청] 인공학원2 나 서머바케 있으신분 계신가요
질문&요청
diddi
25.05.23 933 1
게임 이름을 모르겠오요..
질문&요청
throat
25.05.23 755 1
아 여기가 본점 복구 요청용 서브 채널이였구나
일반
야옹야옹야옹
25.05.23 2316 -5
아직은 사이트가 미묘하네
일반
pep-si
25.05.23 1242 0
잘 찾아온거 맞지?
일반
발발
25.05.22 4503 -15
(요청) RJ01341306 음마의 책에서 메이드를 찾아 지면 잔뜩 마조 조교 되는 RPG 버그수정본
질문&요청
역NTR♥착정사♥펨돔♥역강간♥미인계
25.05.22 2350 0
염월선행록 요청드립니다.
질문&요청
dalle
25.05.22 1093 -1
여기구만
일반
수착페
25.05.22 1853 1
어머니와의 성활~ 외 春葉流亭 서클 게임 복구요청
질문&요청
극극심해어
25.05.22 1748 4
츄츄족 부흥운동 신작 나오기 전에 가입 해따
일반
야옹야옹야옹
25.05.22 1862 5
존재감없는 여동생과 간단생활 요청해봅니다
질문&요청
gs1227
25.05.22 2161 7
[Hige to deko][RJ228212]키리에의 이계 표류기.7z 요청드립니다.
질문&요청
zqux22
25.05.22 1019 0
[요청] RJ01081301 冒険者の宿へようこそ!2 요청드립니다
질문&요청
리마라
25.05.22 1347 0
[요청]RJ337117 쿠노이치 카린 1.2 가지고 계신분 있으신가요..?
질문&요청
sksmsdiehszld
25.05.22 1277 0
[자체한글] 키보토스 후타나리 대소동Vol.2
번역
뷰지
25.05.22 12388 15
[손번역][마개조] 일라이자의 비약
번역
ㅇㅇ
25.05.22 14687 22
Candysoft 카쿠렌보, 통심보, 아마엔보 자료 요청 드립니다!
질문&요청
짜누
25.05.22 1066 1
RJ01034547 좀 ㅠㅠ
질문&요청
gsfdh
25.05.21 1403 -1
[요청] 이전 심챈의 자료 요청하고 싶습니다...
질문&요청
radiolo
25.05.21 2577 -12
[후타] Futashrine 플랑&레미
영상
Corona
25.05.21 9482 15
Henkawa 플랑
영상
Corona
25.05.21 7680 6
몬블마 타락먼저시키면 야스씬못봄?
질문&요청
bliuneos
25.05.21 950 -1
RJ01205532 Labyrinth City Asylum 있으신분 있나요
질문&요청
브와와와
25.05.21 1798 -1
큰 가슴 찌르기 엉덩이 유령 학교 건물
미번
캡틴잭
25.05.21 6068 2
鬼ごっこ
번역
캡틴잭
25.05.21 9246 11
아이기스 핑크
번역
캡틴잭
25.05.21 6352 5
RJ431474 큰 가슴 찌르기 엉덩이 유령 학교 건물 가지고 계신분 있나요?
질문&요청
dbrlshd9
25.05.21 1601 -3
sao ntr part 1 2 요청드립니다
질문&요청
dnrkdnrk1
25.05.20 2580 -8
RJ01079983 음동중
질문&요청
Handlering
25.05.20 1129 -4
여기 확장프로그램 '심야' 만든 형님 계시냐?
일반
fhflwhgdk
25.05.20 5321 -13