From ccaba56329c2c2bd34384e321ccd5db85f8f69a3 Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Mon, 9 Nov 2026 15:08:29 +0900 Subject: [PATCH] ... --- app/src/main/AndroidManifest.xml | 15 + .../my_extension/Novel_Scraper/content.js | 20 + .../extensions/my_extension/background.js | 17 +- .../assets/extensions/my_extension/dffd.html | 2766 ++------------- .../extensions/my_extension/messaging.js | 25 + .../extensions/my_extension/orion_drama.zip | Bin 0 -> 3895 bytes .../my_extension/orion_drama/background.js | 16 + .../my_extension/orion_drama/manifest.json | 21 + .../my_extension/orion_drama/messaging.js | 78 + .../extensions/my_extension/reader.html | 56 +- .../assets/extensions/my_extension/sdfdf.js | 2965 +++++++++++++++++ .../main/assets/extensions/my_extension/sw.js | 59 + .../launcher/home/CompletedFilesActivity.kt | 1276 +++++++ .../launcher/home/CompletedFilesFragment.kt | 2364 +++++++------ .../bums/lunatic/launcher/home/GeckoWeb.kt | 40 +- .../lunatic/launcher/home/NeoRssActivity.kt | 20 +- .../launcher/home/TorrentListFragment.kt | 12 +- .../home/adapters/TorrentListAdapter.kt | 7 +- .../launcher/home/tokiz/TokiFragment.kt | 4 +- .../launcher/workers/TorrentManager.kt | 36 +- .../res/layout/fragment_completed_files.xml | 7 + 21 files changed, 5974 insertions(+), 3830 deletions(-) create mode 100644 app/src/main/assets/extensions/my_extension/orion_drama.zip create mode 100644 app/src/main/assets/extensions/my_extension/orion_drama/background.js create mode 100644 app/src/main/assets/extensions/my_extension/orion_drama/manifest.json create mode 100644 app/src/main/assets/extensions/my_extension/orion_drama/messaging.js create mode 100644 app/src/main/assets/extensions/my_extension/sdfdf.js create mode 100644 app/src/main/assets/extensions/my_extension/sw.js create mode 100644 app/src/main/kotlin/bums/lunatic/launcher/home/CompletedFilesActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7c89b11c..618d4708 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -140,6 +140,21 @@ + + + + + "]}, // 모든 URL에 대해 요청 듣기 - [] + {urls: [""]}, + ["blocking"] // 요청을 차단할 수 있는 권한 부여 ); \ No newline at end of file diff --git a/app/src/main/assets/extensions/my_extension/dffd.html b/app/src/main/assets/extensions/my_extension/dffd.html index 6e429e04..0026f5da 100644 --- a/app/src/main/assets/extensions/my_extension/dffd.html +++ b/app/src/main/assets/extensions/my_extension/dffd.html @@ -1,2590 +1,228 @@ - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - NH멤버스 팟 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Title + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +

소스 당겨 받기 간략 설명

+

XCODE 빌드 앤 런

+

Android Studio 빌드 앤 런

+

Android Apk 생성

+

Scenario Maker

+

gitea issue

+ + +

firebase 권한초 간단 설명

+ +

V.Name : 걍 버전 네임

+

V.Code : 버전 코드 스토어 업로드 시 마다 올라갈 예정

+

debug/dev_sever => 디버깅 여부 / 적용서버 {(y/D) => 디버깅 상태/ 개발서버 , (n/P) 디버깅 안됨/ 운영서버}

+

upload date time => 년월일_시분 (20240523_1123)

+

download apk link => 누르면 다운로드

+ + + + + + + + + + + + + + + + + + + + + + + +
Ver. NameVer. Codedebug/dev_sever upload _ date _ time download _ apk _ link
개발테스트
2.5.4download
상용테스트
2.5.4download
상용배포용
2.5.4download
---------------
상용랜덤테스트
2.5.4download
---------------
+ + + + + + + + + + + + + + + +

구분

설치 링크

다운 링크

IOS 탈옥 미 체크 IPAINSTALL LINK

앱 설치하기

IPA 다운로드

IOS 탈옥 체크 IPAINSTALL LINK

앱 설치하기

IPA 다운로드

+ + +

OPEN TEST

+ + +

OPEN TEST 2

+ + +

WEB Load @ TEST

+ +

WEB Load @ TEST to git

diff --git a/app/src/main/assets/extensions/my_extension/messaging.js b/app/src/main/assets/extensions/my_extension/messaging.js index 23f6ca1d..4356deb3 100644 --- a/app/src/main/assets/extensions/my_extension/messaging.js +++ b/app/src/main/assets/extensions/my_extension/messaging.js @@ -1,4 +1,29 @@ +if (location.href.includes("darama")) { + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + mutation.addedNodes.forEach((node) => { + // 추가된 노드 자체가 iframe인 경우 + if (node.tagName === 'IFRAME') { + node.remove(); + console.log("Blocked dynamic iframe"); + } + // 노드 내부에 자식 요소로 iframe이 포함되어 추가된 경우 + else if (node.nodeType === Node.ELEMENT_NODE && node.querySelectorAll) { + node.querySelectorAll('iframe').forEach(iframe => { + iframe.remove(); + console.log("Blocked nested dynamic iframe"); + }); + } + }); + }); + }); + // 문서 전체의 자식 노드 추가를 실시간으로 감시 + observer.observe(document.documentElement, { + childList: true, + subtree: true + }); +} function pubDateNumber(tdateTime) { diff --git a/app/src/main/assets/extensions/my_extension/orion_drama.zip b/app/src/main/assets/extensions/my_extension/orion_drama.zip new file mode 100644 index 0000000000000000000000000000000000000000..9878b9ebb062fb2e70bcf1ca86d2dfed8883952e GIT binary patch literal 3895 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"] }, + ["blocking"] // 요청을 가로채고 취소할 수 있는 권한 +); \ No newline at end of file diff --git a/app/src/main/assets/extensions/my_extension/orion_drama/manifest.json b/app/src/main/assets/extensions/my_extension/orion_drama/manifest.json new file mode 100644 index 00000000..e0877c9e --- /dev/null +++ b/app/src/main/assets/extensions/my_extension/orion_drama/manifest.json @@ -0,0 +1,21 @@ +{ + "manifest_version": 2, + "version": "1.0", + "name": "Darama AdBlocker", + "background": { + "scripts": ["background.js"] + }, + "content_scripts": [ + { + "run_at": "document_start", + "matches": [""], + "js": ["messaging.js"] + } + ], + "permissions": [ + "cookies", + "", + "webRequest", + "webRequestBlocking" + ] +} \ No newline at end of file diff --git a/app/src/main/assets/extensions/my_extension/orion_drama/messaging.js b/app/src/main/assets/extensions/my_extension/orion_drama/messaging.js new file mode 100644 index 00000000..d88c2021 --- /dev/null +++ b/app/src/main/assets/extensions/my_extension/orion_drama/messaging.js @@ -0,0 +1,78 @@ +// 1. 페이지 로드 시 정적 광고 및 불필요한 요소 즉시 제거 +document.addEventListener('DOMContentLoaded', function () { + handleCommon(document); +// applyDomainRules(); +}); + +// 2. DOM 변화를 실시간 감시하여 동적 아이프레임 및 광고 추가 완벽 차단 +const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + mutation.addedNodes.forEach((node) => { + if (node.nodeType !== Node.ELEMENT_NODE) return; + + // [darama 도메인] 동적으로 삽입되는 iframe 즉시 삭제 + if (location.href.includes("darama")) { + if (node.tagName === 'IFRAME') { + node.remove(); + } else if (node.querySelectorAll) { + node.querySelectorAll('iframe').forEach(iframe => iframe.remove()); + } + } + + // 동적으로 삽입되는 공통 광고 노드 지속 삭제 + handleCommon(node); + }); + }); +}); + +observer.observe(document.documentElement, { + childList: true, + subtree: true +}); + +// 3. 공통 광고 요소 제거 함수 (정적/동적 DOM 모두 대응) +function handleCommon(parentElement) { + if (!parentElement.querySelectorAll) return; + +// const adSelectors = [ +// ".top_google_ad_space", ".adv-group", "[id^='div-gpt-ad']", +// "[id^='div_adnmore_area']", "[class^='adv-groupno']", ".code-block", +// ".ad-template", "#xpromo-bottom-sheet", "[data-banner^='coupang-']", +// "[id^='mobonDivBanner']", "[id^='pnlTopAd']", "[class^='ad-tag']", +// "[class^='science-banner-area']" +// ]; +// +// adSelectors.forEach(selector => { +// parentElement.querySelectorAll(selector).forEach(e => e.remove()); +// }); + +// parentElement.querySelectorAll('iframe').forEach(e => { +// const src = e.getAttribute("src"); +// if (src && (src.includes("ads") || src.includes("coupang"))) { +// e.remove(); +// } +// }); +} + +// 4. 도메인별 맞춤형 요소 제거 (기존 룰 단순화) +function applyDomainRules() { + const url = location.href; + + if (url.includes("nate.com")) { + document.querySelectorAll('[class^="float-adv-wrap"], [id^="ad_"], #ad_sponsorBar, #newsSidebar, iframe[id^="ad"]').forEach(e => e.remove()); + } else if (url.includes("zdnet.co.kr")) { + document.querySelectorAll('div[id*="FloatCon"]').forEach(e => e.remove()); + } else if (url.includes("inews24")) { + document.querySelectorAll('ad[alt^="a"], div[class^="topnews"], form[class^="talkplus"], ins, footer').forEach(e => e.remove()); + } else if (url.includes("starnewskorea")) { + document.querySelectorAll('div[class^="floating-top-ad"], div[id^="dablewidget_"], footer').forEach(e => e.remove()); + } else if (url.includes("khan.co.kr")) { + document.querySelectorAll('[class^="banner-"], [class^="google-auto-placed"], footer, iframe').forEach(e => e.remove()); + } else if (url.includes("dcinside.com")) { + document.querySelectorAll('[id^="view_btn_area"], [class^="trend-rank"], [class^="adv-group"], [id^="div_adnmore_area"]').forEach(e => e.remove()); + } else if (url.includes("fmkorea.com")) { + document.querySelectorAll('[class^="fmad_wrapper"], [class^="ad ad_wrapper"], [class^="m_top_hotdeal"]').forEach(e => e.remove()); + } else if (url.includes("theqoo.net")) { + document.querySelectorAll('[class^="board_content_google_ad"], ins[class^="adsbygoogle"]').forEach(e => e.remove()); + } +} \ No newline at end of file diff --git a/app/src/main/assets/extensions/my_extension/reader.html b/app/src/main/assets/extensions/my_extension/reader.html index 3d3ef1a0..3c12ab91 100644 --- a/app/src/main/assets/extensions/my_extension/reader.html +++ b/app/src/main/assets/extensions/my_extension/reader.html @@ -185,7 +185,7 @@ text-align: left; border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); - /* 💡 Grid 대신 Flex Column으로 변경하여 세로 스크롤에 최적화 */ + /* Grid 대신 Flex Column으로 변경하여 세로 스크롤에 최적화 */ display: flex; flex-direction: column; gap: 12px; @@ -203,7 +203,7 @@ justify-content: space-between; box-sizing: border-box; width: 100%; - flex-shrink: 0; /* 💡 핵심: 화면이 좁아도 세로로 절대 찌그러지지 않게 강제 방어 */ + flex-shrink: 0; /* 핵심: 화면이 좁아도 세로로 절대 찌그러지지 않게 강제 방어 */ overflow: hidden; transition: transform 0.15s, background 0.15s; } @@ -253,10 +253,10 @@