setInterval ์ ํตํด "Skip ad" ๋ฒํผ์ ๊ฐ์ ๋ก triggerํ๋ย chrome extension ๊ฐ๋ฐ
youtube ๊ด๊ณ ์ถํ ๋น๋๊ฐ ๋์์ง๊ณ , ๊ด๊ณ ํ๋๋น ์ค์ง์ ์ผ๋ก 5์ด ์ด์์ ์๊ฐ์ด ์์
chrome extension์ ์ฌ๋ฌ component๋ก ๊ตฌ์ฑ(html, css, js)
Extensions tab ์์ ๊ด๋ฆฌ ๊ฐ๋ฅ
web page(youtube.com)์ context ์์ ๋์ํ๋ script. manifest.json์ ์ ์ธ๋ jsํ์ผ์ ์ ์ ํ ํ์ด๋ฐ์ ์คํํ๋ค.ย
์ฌ๊ธฐ์ ๋ญ๊ฐ ํ ์ ์์ ๊ฒ ๊ฐ๋ค. ad skip์ ํ์ํ ๋ก์ง ์์ฑ ์์
"Skip ad" ๋ฒํผ์ content script๋ฅผ ํตํด ๊ฐ์ ๋ก ํด๋ฆญ ํด๋ณด์
๋ฒํผ์ด ๋ณด์ด์ง ์์๋ css hidden์ฒ๋ฆฌ๋ง ๋์ด์์ ๋ฟ์ด์ง ํด๋ฆญ๊ฐ๋ฅํ๋ฉฐ, ๊ด๊ณ skip์ด ๋์ํ๋ค
skip ๋ฒํผ์ DOM์ querySelector๋ก ์ก์ ์ผ์ ์ฃผ๊ธฐ๋กย skipButton.click()
ํธ์ถ
const skipBtnSelector = "div.ytp-ad-text.ytp-ad-skip-button-text"
const trigger = () => {
const skipBtn = document.querySelector(skipBtnSelector);
if (!skipBtn) return; // Not advertising now
skipBtn.click();
console.log("๋น์ ์ 5์ด ์ ์ฝ๋์๋ค");
}
setInterval(trigger, 1000);
์ต์ข ๊ตฌํ๋ ์ฝ๋๋ ๋งํฌ ์ฐธ๊ณ
display: none ์ฒ๋ฆฌ
div#player-ads,
div.video-ads.ytp-ad-module,
div.ytp-ad-overlay-slot {
display: none !important;
}
TODO๋ฅผ ๋ค์ฏ๊ฐ์ง ์ ๋๋ก ์ ๋ฆฌํด๋ณด์๋๋ฐ ์์ง ์ ๋๋ ์ผ์ด์ค๊ฐ ์๋ค.
๋๊ฐ skip ad ๋ฒํผ์ triggerํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๋ฏ. DOM์ "skip ad"๋ฒํผ์ด ์๋์ง ๊ฐ์งํ๋ ๊ธฐ๋ฒ์ด ์ฌ๋ฌ๊ฐ์ง ์๋๋ฐ
1) setInterval
& querySelector
2) mutationObesrver
3) onPageChanged
API (extension์์ ์ ๊ณตํ๋ page๋ณ๊ฒฝ)
4) DOMSubtreeModified
(deprecated)
(์ฐธ์กฐ ๋งํฌ)
https://github.com/squgeim/yt-ad-autoskipper/blob/master/skipad.js
https://github.com/pasupulaphani/adblock-youtube/blob/master/app/scripts/contentscript.js
https://github.com/nirojsapkota/youtube-skip-add/blob/master/skip.js
skip ad trigger ๋ง๊ณ ๊ด๊ณ ๋ฅผ ๋๊ธฐ๋ ํจ์๋ฅผ debugger๋ฅผ ํตํด ์ฐพ์ ์ง์ ํธ์ถ
๊ด๊ณ ๊ฐ ์ธ์ ๋ฐ์ง ๋ชฐ๋ผ์ skip ๊ธฐ๋ฅ ํ์ธ ํ๋ฌ(์๊ฐ๋ณด๋ค ๊ด๊ณ ๊ฐ ์ ์๋ฌ๋ค)
YouTube premium๐ฅณ