Size
2.8 KB
Version
1.0.1
Created
Jan 25, 2026
Updated
23 days ago
1// ==UserScript==
2// @name Veck.io Ad Blocker
3// @description Removes all advertisements from veck.io
4// @version 1.0.1
5// @match https://*.veck.io/*
6// @icon https://veck.io/favicon/favicon.ico
7// ==/UserScript==
8(function() {
9 'use strict';
10
11 console.log('Veck.io Ad Blocker: Starting...');
12
13 // Function to remove ads
14 function removeAds() {
15 let adsRemoved = 0;
16
17 // Remove banner ads
18 const bannerAds = document.querySelectorAll('.banner-container[id*="banner"]');
19 bannerAds.forEach(ad => {
20 if (ad && ad.parentNode) {
21 console.log('Removing banner ad:', ad.id);
22 ad.remove();
23 adsRemoved++;
24 }
25 });
26
27 // Remove video ads
28 const videoAds = document.querySelectorAll('#videoad');
29 videoAds.forEach(ad => {
30 if (ad && ad.parentNode) {
31 console.log('Removing video ad');
32 ad.remove();
33 adsRemoved++;
34 }
35 });
36
37 // Remove any other common ad containers
38 const commonAdSelectors = [
39 '[id*="ad-"]',
40 '[class*="ad-container"]',
41 '[class*="advertisement"]',
42 '[id*="google_ads"]',
43 '[class*="google-ad"]'
44 ];
45
46 commonAdSelectors.forEach(selector => {
47 const ads = document.querySelectorAll(selector);
48 ads.forEach(ad => {
49 if (ad && ad.parentNode && !ad.classList.contains('ad-removed')) {
50 console.log('Removing ad element:', selector);
51 ad.classList.add('ad-removed');
52 ad.remove();
53 adsRemoved++;
54 }
55 });
56 });
57
58 if (adsRemoved > 0) {
59 console.log(`Veck.io Ad Blocker: Removed ${adsRemoved} ad(s)`);
60 }
61 }
62
63 // Debounce function to prevent excessive calls
64 function debounce(func, wait) {
65 let timeout;
66 return function executedFunction(...args) {
67 const later = () => {
68 clearTimeout(timeout);
69 func(...args);
70 };
71 clearTimeout(timeout);
72 timeout = setTimeout(later, wait);
73 };
74 }
75
76 // Initial ad removal
77 removeAds();
78
79 // Remove ads after page loads
80 if (document.readyState === 'loading') {
81 document.addEventListener('DOMContentLoaded', removeAds);
82 }
83
84 window.addEventListener('load', removeAds);
85
86 // Watch for dynamically added ads
87 const debouncedRemoveAds = debounce(removeAds, 500);
88 const observer = new MutationObserver(debouncedRemoveAds);
89
90 observer.observe(document.body, {
91 childList: true,
92 subtree: true
93 });
94
95 console.log('Veck.io Ad Blocker: Monitoring for ads...');
96})();