├── LICENSE ├── README.md └── src ├── js ├── background.js └── sites │ ├── BlueMediaFiles.js │ ├── adfly.js │ ├── croco.js │ ├── linkshrink.js │ ├── ouo.js │ └── shinkme.js ├── manifest.json ├── media ├── icon.png └── icon128.png └── popup ├── font └── Montserrat-Regular.woff2 ├── popup.html ├── popup.js └── style.css /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Nurio Fernández 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ads Link Skiper 2 | Ads Link Skiper is a Google Chrome Extension that skips link shorteners ads and prevent spam popups. 3 | 4 | ![Ads Link Skiper popup capture](https://i.imgur.com/bQE61oT.png) 5 | 6 | #### You can install this extension directly at the following web site: 7 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 8 | 9 | ## Suported link shorteners sites: 10 | 11 | #### CROCO 12 | * croco.site 13 | 14 | #### LINK SHRINK 15 | * linkshrink.net 16 | 17 | #### SHINK ME 18 | * shink.me 19 | * shink.in 20 | * fas.li 21 | 22 | #### ADF.LY 23 | * scadonsak.com 24 | * cowner.net 25 | * agileurbia.com 26 | * threadsphere.bid 27 | * zipteria.com 28 | * queuecosm.bid 29 | * yobuilder.com 30 | * quamiller.com 31 | * microify.com 32 | * babblecase.com 33 | * abpmirror.tk 34 | * ad.inventivetalent.org 35 | * adf.ly 36 | * anitoons.co.vu 37 | * atomcurve.com 38 | * atominik.com 39 | * ay.gy 40 | * battleate.com 41 | * bluenik.com 42 | * casualient.com 43 | * flyserve.co 44 | * getrom.net 45 | * infortr.co.vu 46 | * j.gs 47 | * ksatech.info 48 | * manggugel.ga 49 | * mmoity.com 50 | * picocurl.com 51 | * pintient.com 52 | * q.gs 53 | * riffhold.com 54 | * simizer.com 55 | * tinyical.com 56 | * tinyium.com 57 | * viahold.com 58 | * zo.ee 59 | * skamason.com 60 | 61 | #### SH.ST 62 | * sh.st 63 | * clkmein.com 64 | * viid.me 65 | * xiw34.com 66 | * destyy.com 67 | * ceesty.com 68 | * clkme.me 69 | * cllkme.com 70 | * corneey.com 71 | * festyy.com 72 | * gestyy.com 73 | * jnw0.com 74 | * qaafa.com 75 | * wiid.me 76 | 77 | #### AUTOMATICALLY CLOSED SPAM SITES 78 | * gamezjet.com 79 | * fftrak.pro 80 | * translationbuddy.com 81 | * dnoppus.com 82 | * elvenar.com 83 | * esgentside.com 84 | * tviso.com 85 | * gamez1a.com 86 | * mgid.com 87 | * bestgame.directory 88 | * popads.net 89 | * adk2x.com 90 | * usupporthelperslr.win 91 | * 62b70ac32d4614b.com 92 | * pushedwebnews.com 93 | * trackweblink.com 94 | * di-mart.com 95 | * couponxplorer.com 96 | * musicgalary.tk 97 | * occasic.com 98 | * twobisqui3l.com 99 | * musikzoo.com 100 | * expertadvice.ga 101 | * stream-direct.co 102 | * beforceive.com 103 | * addictedtomovies.co 104 | * alfredean.com 105 | * deloton.com 106 | * durined.com 107 | * optimum-io-speed.site 108 | * forminine.com 109 | * girrrly.com 110 | * baiduccdn.com 111 | * top10posts.com 112 | * onclkds.com 113 | * onclickclear.com 114 | * juegos-online.info 115 | * perfecttoolmedia.com 116 | * thewhizmarketing.com 117 | * williamhill.es 118 | * mysagagame.com 119 | * best2017games.com 120 | * hicpm10.com 121 | * newtab-tv.com 122 | * nextoptim.com 123 | * adexchangemachine.com 124 | * medianewpage.com 125 | * muzicplay.com 126 | * newtabtv.com 127 | -------------------------------------------------------------------------------- /src/js/background.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | [Ads link skiper] by xXNurioXx 4 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 5 | 6 | Background script 7 | 8 | **/ 9 | 10 | // Enabled sites variable switch 11 | var enabledSites = { 12 | adfly: true, 13 | shinkme: true, 14 | croco: true, 15 | linkshrink: true, 16 | bluemediafiles: true, 17 | spam: true, 18 | } 19 | 20 | /******************** Storage manager start */ 21 | 22 | const saveSites = () => { 23 | chrome.storage.local.set({ 24 | 'enabledSites': enabledSites 25 | }, (result) => { 26 | console.log("Updated data."); 27 | }); 28 | } 29 | 30 | chrome.storage.local.get('enabledSites', (result) => { 31 | if (result == null) return; 32 | 33 | enabledSites = result.enabledSites; 34 | console.log("Successful loaded data."); 35 | 36 | // In case that stored sites was invalid, redefine sites map. 37 | if (enabledSites == null || (enabledSites != null && enabledSites.adfly == null)) { 38 | enabledSites = { 39 | adfly: true, 40 | shinkme: true, 41 | croco: true, 42 | linkshrink: true, 43 | bluemediafiles: true, 44 | spam: true, 45 | } 46 | } 47 | 48 | }); 49 | 50 | /******************** Storage manager end */ 51 | 52 | 53 | /******************** Domain list start */ 54 | 55 | // Spam/Popup's domain list 56 | const requestFilterSpam = { 57 | urls: [ 58 | "*://*.higheurest.com/*", 59 | "*://*.adviewgroup.com/*", 60 | "*://*.ajkzd9h.com/*", 61 | "*://*.scrn-supp-6689.cf/*", 62 | "*://*.lyuoaxruaqdo.com/*", 63 | "*://*.sax.peakonspot.com/*", 64 | "*://*.sistacked.com/*", 65 | "*://*.funsafetab.com/*", 66 | "*://*.geniusdisplay.com/*", 67 | "*://*.38newupdate.xyz/*", 68 | "*://*.adtrker.com/*", 69 | "*://*.elvenar.com/*", 70 | "*://*.vpn-freeproxy.com/*", 71 | "*://*.newtabtv.com/*", 72 | "*://*.mellowads.com/*", 73 | "*://*.superimad.com/*", 74 | "*://*.hibids10.com/*", 75 | "*://*.muzicplay.com/*", 76 | "*://*.adexchangemachine.com/*", 77 | "*://*.medianewpage.com/*", 78 | "*://*.mysagagame.com/*", 79 | "*://*.nextoptim.com/*", 80 | "*://*.newtab-tv.com/*", 81 | "*://*.best2017games.com/*", 82 | "*://*.hicpm10.com/*", 83 | "*://*.thewhizmarketing.com/*", 84 | "*://*.williamhill.es/*", 85 | "*://*.top10posts.com/*", 86 | "*://*.baiduccdn.com/*", 87 | "*://*.beforceive.com/*", 88 | "*://*.gamezjet.com/*", 89 | "*://*.fftrak.pro/*", 90 | "*://*.translationbuddy.com/*", 91 | "*://*.dnoppus.com/*", 92 | "*://*.elvenar.com/*", 93 | "*://*.esgentside.com/*", 94 | "*://*.tviso.com/*", 95 | "*://*.gamez1a.com/*", 96 | "*://*.mgid.com/*", 97 | "*://*.bestgame.directory/*", 98 | "*://*.popads.net/*", 99 | "*://*.adk2x.com/*", 100 | "*://*.usupporthelperslr.win/*", 101 | "*://*.62b70ac32d4614b.com/*", 102 | "*://*.pushedwebnews.com/*", 103 | "*://*.trackweblink.com/*", 104 | "*://*.di-mart.com/*", 105 | "*://*.couponxplorer.com/*", 106 | "*://*.musicgalary.tk/*", 107 | "*://*.occasic.com/*", 108 | "*://*.twobisqui3l.com/*", 109 | "*://*.musikzoo.com/*", 110 | "*://*.expertadvice.ga/*", 111 | "*://*.stream-direct.co/*", 112 | "*://*.addictedtomovies.co/*", 113 | "*://*.alfredean.com/*", 114 | "*://*.durined.com/*", 115 | "*://*.deloton.com/*", 116 | "*://*.forminine.com/*", 117 | "*://*.girrrly.com/*", 118 | "*://*.onclickclear.com/*", 119 | "*://*.juegos-online.info/*", 120 | "*://*.perfecttoolmedia.com/*", 121 | "*://*.onclkds.com/*", 122 | "*://*.optimum-io-speed.site/*", 123 | "*://*.nextyourcontent.com/*", 124 | "*://*.closeloop.cf/*", 125 | "*://*.veirregnant.club/*", 126 | ] 127 | }; 128 | 129 | // Adf.ly domains list 130 | const requestFilterAdf = { 131 | urls: [ 132 | "*://*.atharori.net/*", 133 | "*://*.gatustox.net/*", 134 | "*://*.homoluath.com/*", 135 | "*://*.scuseami.net/*", 136 | "*://*.gusimp.net/*", 137 | "*://*.scadonsak.com/*", 138 | "*://*.cowner.net/*", 139 | "*://*.larati.net/*", 140 | "*://*.xterca.net/*", 141 | "*://*.evassmat.com/*", 142 | "*://*.gloyah.net/*", 143 | "*://*.uclaut.net/*", 144 | "*://*.atabencot.net/*", 145 | "*://*.thouth.net/*", 146 | "*://*.cinebo.net/*", 147 | "*://*.dapalan.com/*", 148 | "*://*.vaussneim.net/*", 149 | "*://*.briskgram.net/*", 150 | "*://*.swiftviz.net/*", 151 | "*://*.kudoflow.com/*", 152 | "*://*.activetect.net/*", 153 | "*://*.brightvar.bid/*", 154 | "*://*.clearload.bid/*", 155 | "*://*.restorecosm.bid/*", 156 | "*://*.agileurbia.com/*", 157 | "*://*.threadsphere.bid/*", 158 | "*://*.zipteria.com/*", 159 | "*://*.queuecosm.bid/*", 160 | "*://*.yobuilder.com/*", 161 | "*://*.quamiller.com/*", 162 | "*://*.microify.com/*", 163 | "*://*.babblecase.com/*", 164 | "*://*.cogismith.com/*", 165 | "*://*.abpmirror.tk/*", 166 | "*://*.ad.inventivetalent.org/*", 167 | "*://*.adf.ly/*", 168 | "*://*.anitoons.co.vu/*", 169 | "*://*.atomcurve.com/*", 170 | "*://*.atominik.com/*", 171 | "*://*.ay.gy/*", 172 | "*://*.battleate.com/*", 173 | "*://*.bluenik.com/*", 174 | "*://*.casualient.com/*", 175 | "*://*.flyserve.co/*", 176 | "*://*.getrom.net/*", 177 | "*://*.infortr.co.vu/*", 178 | "*://*.j.gs/*", 179 | "*://*.ksatech.info/*", 180 | "*://*.manggugel.ga/*", 181 | "*://*.mmoity.com/*", 182 | "*://*.picocurl.com/*", 183 | "*://*.pintient.com/*", 184 | "*://*.q.gs/*", 185 | "*://*.riffhold.com/*", 186 | "*://*.simizer.com/*", 187 | "*://*.tinyical.com/*", 188 | "*://*.tinyium.com/*", 189 | "*://*.viahold.com/*", 190 | "*://*.zo.ee/*", 191 | "*://*.skamason.com/*" 192 | ] 193 | }; 194 | 195 | // shink.me domain list 196 | const requestFilterShinkme = { 197 | urls: [ 198 | "*://*.shon.xyz/*", 199 | "*://*.fas.li/*", 200 | "*://*.shink.in/*", 201 | "*://*.shink.me/*" 202 | ] 203 | }; 204 | 205 | // croco domain list 206 | const requestFilterCroco = { 207 | urls: [ 208 | "*://*.croco.site/*" 209 | ] 210 | }; 211 | 212 | // LinkShrink domain list 213 | const requestFilterLinkshrink = { 214 | urls: [ 215 | "*://*.linkshrink.net/*" 216 | ] 217 | }; 218 | 219 | // Bluemediafiles domain list. 220 | const requestFilterBluemefi = { 221 | urls: [ 222 | "*://*.bluemediafiles.com/*" 223 | ] 224 | }; 225 | 226 | /******************** Domain list end */ 227 | 228 | 229 | /******************** Sites script's start */ 230 | 231 | /** Bluemediafiles sites **/ 232 | chrome.webRequest.onCompleted.addListener((details) => { 233 | if (!enabledSites.bluemediafiles) return; 234 | chrome.tabs.executeScript(details.tabId, { 235 | file: "js/sites/BlueMediaFiles.js", 236 | runAt: "document_start" 237 | }); 238 | }, requestFilterBluemefi); 239 | 240 | 241 | /** Adf.ly sites **/ 242 | chrome.webRequest.onCompleted.addListener((details) => { 243 | if (!enabledSites.adfly) return; 244 | chrome.tabs.executeScript(details.tabId, { 245 | file: "js/sites/adfly.js", 246 | runAt: "document_start" 247 | }); 248 | }, requestFilterAdf); 249 | 250 | 251 | /** Croco.sites sites **/ 252 | chrome.webRequest.onCompleted.addListener((details) => { 253 | if (!enabledSites.croco) return; 254 | chrome.tabs.executeScript(details.tabId, { 255 | file: "js/sites/croco.js", 256 | runAt: "document_start" 257 | }); 258 | }, requestFilterCroco); 259 | 260 | 261 | /** ShinkMe sites **/ 262 | chrome.webRequest.onCompleted.addListener((details) => { 263 | if (!enabledSites.shinkme) return; 264 | if (details.type == "main_frame" && details.url.indexOf("shink.in") != -1) chrome.tabs.update(details.tabId, { 265 | url: details.url.replace("shink.in", "shink.me") 266 | }); 267 | chrome.tabs.executeScript(details.tabId, { 268 | file: "js/sites/shinkme.js", 269 | runAt: "document_start" 270 | }); 271 | }, requestFilterShinkme); 272 | 273 | /** LinkShrink sites **/ 274 | chrome.webRequest.onCompleted.addListener((details) => { 275 | if (!enabledSites.linkshrink) return; 276 | chrome.tabs.executeScript(details.tabId, { 277 | file: "js/sites/linkshrink.js", 278 | runAt: "document_start" 279 | }); 280 | }, requestFilterLinkshrink); 281 | 282 | /** SpamShit sites **/ 283 | chrome.webRequest.onCompleted.addListener((details) => { 284 | if (!enabledSites.spam) return; 285 | if (details.type == "main_frame") chrome.tabs.remove(details.tabId); 286 | }, requestFilterSpam); 287 | 288 | /******************** Sites script's end */ -------------------------------------------------------------------------------- /src/js/sites/BlueMediaFiles.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | [Ads link skiper] by xXNurioXx 4 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 5 | 6 | Script for bluemediafiles.com 7 | 8 | **/ 9 | 10 | /** OnLoad event */ 11 | window.addEventListener("DOMContentLoaded", () => { 12 | 13 | //Get the result url 14 | let resultUrl = xp('/html/body/table/tbody[2]/tr/td/div/table/tbody/tr/td/script[1]').innerHTML; 15 | resultUrl= resultUrl.split("FinishMessage = ' 0)) return; 64 | 65 | const html = '
Ads link skiper is trying to bypass this site... If you found any error please report it to personal@xxnurioxx.me Hide this
'; 66 | const div = document.createElement('div'); 67 | div.innerHTML = html; 68 | document.body.appendChild(div); 69 | 70 | window.location.replace(elementclick.href); 71 | } 72 | 73 | /** Adblock Warning banner */ 74 | setTimeout(verifyLock, 500); -------------------------------------------------------------------------------- /src/js/sites/croco.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | [Ads link skiper] by xXNurioXx 4 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 5 | 6 | Script for croco.me 7 | 8 | **/ 9 | setTimeout(skip, 100); 10 | 11 | function skip(){ 12 | const time = setTimeout(skip, 100); 13 | const ads = xp('//*[@id="form-captcha"]'); 14 | if(ads != null){ 15 | clearTimeout(time); 16 | ads.submit(); 17 | } 18 | const ads = xp('//*[@id="btn-main"]'); 19 | if(ads != null){ 20 | clearTimeout(time); 21 | window.location.replace(ads.href); 22 | } 23 | if(document.body != null && xp('//*[@id="Notify"]') == null){ 24 | const html = '
Ads link skiper is trying to bypass this site... If you found any error please report it to personal@xxnurioxx.me Hide this
'; 25 | const div = document.createElement('div'); 26 | div.innerHTML = html; 27 | document.body.appendChild(div); 28 | } 29 | } 30 | 31 | /** xPath function */ 32 | function xp(query) { 33 | return document.evaluate(query, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue 34 | } -------------------------------------------------------------------------------- /src/js/sites/linkshrink.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | [Ads link skiper] by xXNurioXx 4 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 5 | 6 | Script for linkshrink.net 7 | 8 | **/ 9 | 10 | setTimeout(skip, 100); 11 | 12 | const html = '

This site can be damaged by extension Ads link skiper. If you found any error please report it to personal@xxnurioxx.me

REMEMBER DISABLE OTHERS AD BLOCKERS AT THIS SITE.

Hide this
'; 13 | const div = document.createElement('div'); 14 | div.innerHTML = html; 15 | window.onload = () => { document.body.appendChild(div); } 16 | 17 | function skip() { 18 | const time = setTimeout(skip, 100); 19 | 20 | for (let a = 1; a < xpL('/html/body/script'); a++) { 21 | if (!xp('/html/body/script[' + a + ']').innerHTML.startsWith('document.getElementById("btd")')) continue; 22 | const btnelement = xp('/html/body/script[' + a + ']').innerHTML.split('revC("')[1].split('"),')[0]; 23 | const url = revC(btnelement); 24 | if (url.length > 0) { 25 | window.location.replace(url); 26 | clearTimeout(time); 27 | return; 28 | } 29 | } 30 | 31 | } 32 | 33 | /** xPath length funciton */ 34 | function xpL(query) { 35 | return document.evaluate(query, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength; 36 | } 37 | 38 | /** xPath function */ 39 | function xp(query) { 40 | return document.evaluate(query, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue 41 | } 42 | 43 | /* Decrypt the url result function */ 44 | function revC(ine) { 45 | const b64 = { 46 | _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", 47 | encode: (e) => { 48 | let t = ""; 49 | let n, r, i, s, o, u, a; 50 | let f = 0; 51 | e = b64._utf8_encode(e); 52 | while (f < e.length) { 53 | n = e.charCodeAt(f++); 54 | r = e.charCodeAt(f++); 55 | i = e.charCodeAt(f++); 56 | s = n >> 2; 57 | o = (n & 3) << 4 | r >> 4; 58 | u = (r & 15) << 2 | i >> 6; 59 | a = i & 63; 60 | if (isNaN(r)) { 61 | u = a = 64 62 | } else if (isNaN(i)) { 63 | a = 64 64 | } 65 | t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) 66 | } 67 | return t 68 | }, 69 | decode: (e) => { 70 | let t = ""; 71 | let n, r, i; 72 | let s, o, u, a; 73 | let f = 0; 74 | e = e.replace(/[^A-Za-z0-9+/=]/g, ""); 75 | while (f < e.length) { 76 | s = this._keyStr.indexOf(e.charAt(f++)); 77 | o = this._keyStr.indexOf(e.charAt(f++)); 78 | u = this._keyStr.indexOf(e.charAt(f++)); 79 | a = this._keyStr.indexOf(e.charAt(f++)); 80 | n = s << 2 | o >> 4; 81 | r = (o & 15) << 4 | u >> 2; 82 | i = (u & 3) << 6 | a; 83 | t = t + String.fromCharCode(n); 84 | if (u != 64) { 85 | t = t + String.fromCharCode(r) 86 | } 87 | if (a != 64) { 88 | t = t + String.fromCharCode(i) 89 | } 90 | } 91 | t = b64._utf8_decode(t); 92 | return t 93 | }, 94 | _utf8_encode: (e) => { 95 | e = e.replace(/rn/g, "n"); 96 | let t = ""; 97 | for (let n = 0; n < e.length; n++) { 98 | let r = e.charCodeAt(n); 99 | if (r < 128) { 100 | t += String.fromCharCode(r) 101 | } else if (r > 127 && r < 2048) { 102 | t += String.fromCharCode(r >> 6 | 192); 103 | t += String.fromCharCode(r & 63 | 128) 104 | } else { 105 | t += String.fromCharCode(r >> 12 | 224); 106 | t += String.fromCharCode(r >> 6 & 63 | 128); 107 | t += String.fromCharCode(r & 63 | 128) 108 | } 109 | } 110 | return t 111 | }, 112 | _utf8_decode: (e) => { 113 | let t = ""; 114 | let n = 0; 115 | let r = c1 = c2 = 0; 116 | while (n < e.length) { 117 | r = e.charCodeAt(n); 118 | if (r < 128) { 119 | t += String.fromCharCode(r); 120 | n++ 121 | } else if (r > 191 && r < 224) { 122 | c2 = e.charCodeAt(n + 1); 123 | t += String.fromCharCode((r & 31) << 6 | c2 & 63); 124 | n += 2 125 | } else { 126 | c2 = e.charCodeAt(n + 1); 127 | c3 = e.charCodeAt(n + 2); 128 | t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); 129 | n += 3 130 | } 131 | } 132 | return t 133 | } 134 | }; 135 | return 'http://linkshrink.net/' + b64.decode(ine); 136 | } -------------------------------------------------------------------------------- /src/js/sites/ouo.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | [Ads link skiper] by xXNurioXx 4 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 5 | 6 | Script for ouo.io 7 | 8 | **/ 9 | 10 | window.addEventListener("load", () => { 11 | 12 | // Locate the skip button 13 | const btn = xp('//*[@id="btn-main"]'); 14 | 15 | // When the button have the value "get link" submit the form 16 | if(btn != null && btn.innerHTML == "Get Link"){ 17 | const form = xp('/html/body/section/div/div/div/div/div/form'); 18 | form.submit(); 19 | } 20 | 21 | }); 22 | 23 | /* xPath function */ 24 | function xp(query) { 25 | return document.evaluate(query, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 26 | } -------------------------------------------------------------------------------- /src/js/sites/shinkme.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | [Ads link skiper] by xXNurioXx 4 | https://chrome.google.com/webstore/detail/ads-link-skiper/bkpeohkfimdfogdnpcnokjkbpankkmil 5 | 6 | Script for shink.me 7 | 8 | **/ 9 | 10 | setTimeout(submit, 100); 11 | 12 | let html = '
This site need 3 captcha solves after Ads link skiper can do skip :) If you found any error please report it to personal@xxnurioxx.me Hide this
'; 13 | 14 | if (document.URL.split("/")[2] == "fas.li") { 15 | html = '
This site need captcha solve after Ads link skiper can do skip :) If you found any error please report it to personal@xxnurioxx.me Hide this
'; 16 | } 17 | 18 | const div = document.createElement('div'); 19 | div.innerHTML = html; 20 | window.addEventListener("load", () => { 21 | if (xp('//*[@id="url"]') == null) document.body.appendChild(div); 22 | }); 23 | 24 | let submited = false; 25 | 26 | function submit() { 27 | 28 | const error1 = xp('//*[@id="container"]/h1'); 29 | const error2 = xp('/html/body'); 30 | 31 | if ((error1 != null && error1.innerHTML == "An Error Was Encountered") || (error2 != null && error2.innerHTML == "Error in exception handler.")) { 32 | const url = document.URL.split('/')[3]; 33 | if (url == "redirect") url = document.URL.split('/')[5]; 34 | window.location.href = "http://shink.me/" + url; 35 | return; 36 | } 37 | 38 | if (!submited) setTimeout(submit, 100); 39 | const center = xp('//*[@class="center-captcha"]'); 40 | const captcha = xp('//*[@id="skip"]/script'); 41 | const formto = xp('//*[@id="skip"]'); 42 | 43 | const skipbtn = xp('//*[@id="btn-main"]'); 44 | if (skipbtn != null) { 45 | if (skipbtn.href != null && skipbtn.href != "undefined" && skipbtn.href != "Undefined" && skipbtn.href != "") { 46 | window.location.replace(skipbtn.href); 47 | submited = true; 48 | return; 49 | } 50 | } 51 | 52 | if (skipbtn != null && (skipbtn.href == null || skipbtn.href == "")) { 53 | skipbtn.disabled = false; 54 | skipbtn.click(); 55 | submited = true; 56 | return; 57 | } 58 | 59 | if (formto != null && captcha == null) { 60 | formto.submit(); 61 | submited = true; 62 | return; 63 | } else if (xp('//*[@id="url"]') == null) { 64 | setTimeout(function() { 65 | let ad = xp('//*[@id="captcha"]/div/div/div'); 66 | if (ad != null) ad.remove(); 67 | ad = xp('//*[@id="page-top"]/div[2]/div/div/div/div[1]/a'); 68 | if (ad != null) ad.remove(); 69 | ad = xp('//*[@id="page-top"]/div[2]/div/div/div/div[2]'); 70 | if (ad != null) ad.remove(); 71 | ad = xp('//*[@id="page-top"]/div[1]/div[1]/div/div/div/div[1]/iframe'); 72 | if (ad != null) ad.remove(); 73 | ad = xp('//*[@id="page-top"]/iframe'); 74 | if (ad != null) ad.remove(); 75 | ad = xp('//a[@target="_blank"]'); 76 | if (ad != null) ad.remove(); 77 | }, 10); 78 | } 79 | 80 | } 81 | 82 | /* xPath function */ 83 | function xp(query) { 84 | return document.evaluate(query, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 85 | } -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ads Link Skipper", 3 | "version": "1.7.4", 4 | "description": "Skip ads on sites like adf.ly and prevent spam popups", 5 | "author": [{ 6 | "name": "xXNurioXx", 7 | "email": "personal@nurio.me" 8 | }], 9 | 10 | "permissions": [ 11 | "webRequest", 12 | "webNavigation", 13 | "webRequestBlocking", 14 | "storage" 15 | ], 16 | 17 | "optional_permissions": [ 18 | "*://*.croco.site/*", 19 | 20 | "*://*.ouo.io/*", 21 | "*://*.ouo.press/*", 22 | 23 | "*://*.atharori.net/*", 24 | "*://*.gatustox.net/*", 25 | "*://*.homoluath.com/*", 26 | "*://*.scuseami.net/*", 27 | "*://*.gusimp.net/*", 28 | "*://*.scadonsak.com/*", 29 | "*://*.cowner.net/*", 30 | "*://*.larati.net/*", 31 | "*://*.xterca.net/*", 32 | "*://*.evassmat.com/*", 33 | "*://*.gloyah.net/*", 34 | "*://*.uclaut.net/*", 35 | "*://*.atabencot.net/*", 36 | "*://*.thouth.net/*", 37 | "*://*.cinebo.net/*", 38 | "*://*.dapalan.com/*", 39 | "*://*.vaussneim.net/*", 40 | "*://*.briskgram.net/*", 41 | "*://*.swiftviz.net/*", 42 | "*://*.kudoflow.com/*", 43 | "*://*.activetect.net/*", 44 | "*://*.brightvar.bid/*", 45 | "*://*.clearload.bid/*", 46 | "*://*.restorecosm.bid/*", 47 | "*://*.agileurbia.com/*", 48 | "*://*.threadsphere.bid/*", 49 | "*://*.zipteria.com/*", 50 | "*://*.queuecosm.bid/*", 51 | "*://*.yobuilder.com/*", 52 | "*://*.quamiller.com/*", 53 | "*://*.microify.com/*", 54 | "*://*.babblecase.com/*", 55 | "*://*.abpmirror.tk/*", 56 | "*://*.ad.inventivetalent.org/*", 57 | "*://*.adf.ly/*", 58 | "*://*.anitoons.co.vu/*", 59 | "*://*.atomcurve.com/*", 60 | "*://*.atominik.com/*", 61 | "*://*.ay.gy/*", 62 | "*://*.battleate.com/*", 63 | "*://*.bluenik.com/*", 64 | "*://*.casualient.com/*", 65 | "*://*.flyserve.co/*", 66 | "*://*.getrom.net/*", 67 | "*://*.infortr.co.vu/*", 68 | "*://*.j.gs/*", 69 | "*://*.ksatech.info/*", 70 | "*://*.manggugel.ga/*", 71 | "*://*.mmoity.com/*", 72 | "*://*.picocurl.com/*", 73 | "*://*.pintient.com/*", 74 | "*://*.q.gs/*", 75 | "*://*.riffhold.com/*", 76 | "*://*.simizer.com/*", 77 | "*://*.tinyical.com/*", 78 | "*://*.tinyium.com/*", 79 | "*://*.viahold.com/*", 80 | "*://*.zo.ee/*", 81 | "*://*.skamason.com/*", 82 | 83 | "*://*.linkshrink.net/*", 84 | 85 | "*://*.higheurest.com/*", 86 | "*://*.adviewgroup.com/*", 87 | "*://*.ajkzd9h.com/*", 88 | "*://*.scrn-supp-6689.cf/*", 89 | "*://*.lyuoaxruaqdo.com/*", 90 | "*://*.sax.peakonspot.com/*", 91 | "*://*.sistacked.com/*", 92 | "*://*.funsafetab.com/*", 93 | "*://*.geniusdisplay.com/*", 94 | "*://*.38newupdate.xyz/*", 95 | "*://*.adtrker.com/*", 96 | "*://*.elvenar.com/*", 97 | "*://*.vpn-freeproxy.com/*", 98 | "*://*.mellowads.com/*", 99 | "*://*.superimad.com/*", 100 | "*://*.hibids10.com/*", 101 | "*://*.gamezjet.com/*", 102 | "*://*.fftrak.pro/*", 103 | "*://*.translationbuddy.com/*", 104 | "*://*.dnoppus.com/*", 105 | "*://*.elvenar.com/*", 106 | "*://*.esgentside.com/*", 107 | "*://*.tviso.com/*", 108 | "*://*.gamez1a.com/*", 109 | "*://*.mgid.com/*", 110 | "*://*.bestgame.directory/*", 111 | "*://*.popads.net/*", 112 | "*://*.adk2x.com/*", 113 | "*://*.usupporthelperslr.win/*", 114 | "*://*.62b70ac32d4614b.com/*", 115 | "*://*.pushedwebnews.com/*", 116 | "*://*.trackweblink.com/*", 117 | "*://*.di-mart.com/*", 118 | "*://*.couponxplorer.com/*", 119 | "*://*.musicgalary.tk/*", 120 | "*://*.occasic.com/*", 121 | "*://*.twobisqui3l.com/*", 122 | "*://*.musikzoo.com/*", 123 | "*://*.expertadvice.ga/*", 124 | "*://*.stream-direct.co/*", 125 | "*://*.beforceive.com/*", 126 | "*://*.addictedtomovies.co/*", 127 | "*://*.alfredean.com/*", 128 | "*://*.deloton.com/*", 129 | "*://*.durined.com/*", 130 | "*://*.optimum-io-speed.site/*", 131 | "*://*.forminine.com/*", 132 | "*://*.girrrly.com/*", 133 | "*://*.baiduccdn.com/*", 134 | "*://*.top10posts.com/*", 135 | "*://*.onclkds.com/*", 136 | "*://*.onclickclear.com/*", 137 | "*://*.juegos-online.info/*", 138 | "*://*.perfecttoolmedia.com/*", 139 | "*://*.thewhizmarketing.com/*", 140 | "*://*.williamhill.es/*", 141 | "*://*.mysagagame.com/*", 142 | "*://*.best2017games.com/*", 143 | "*://*.hicpm10.com/*", 144 | "*://*.newtab-tv.com/*", 145 | "*://*.nextoptim.com/*", 146 | "*://*.adexchangemachine.com/*", 147 | "*://*.medianewpage.com/*", 148 | "*://*.muzicplay.com/*", 149 | "*://*.newtabtv.com/*", 150 | "*://*.nextyourcontent.com/*", 151 | "*://*.closeloop.cf/*", 152 | "*://*.veirregnant.club/*", 153 | 154 | "*://*.shink.me/*", 155 | "*://*.shink.in/*", 156 | "*://*.shon.xyz/*", 157 | "*://*.fas.li/*", 158 | 159 | "*://*.bluemediafiles.com/*" 160 | ], 161 | 162 | "icons": { 163 | "16": "media/icon.png", 164 | "48": "media/icon.png", 165 | "128": "media/icon.png" 166 | }, 167 | 168 | "browser_action": { 169 | "default_title": "Ads Link Skiper", 170 | "default_icon": "media/icon.png", 171 | "default_popup": "popup/popup.html" 172 | }, 173 | 174 | "manifest_version": 2, 175 | 176 | "content_security_policy": "script-src 'self' https://ajax.googleapis.com https://maxcdn.bootstrapcdn.com; object-src 'self'", 177 | 178 | "background": { 179 | "scripts": ["js/background.js"] 180 | } 181 | 182 | } -------------------------------------------------------------------------------- /src/media/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nuriofernandez/Ads-Link-Skipper/9ab68d233a0ab43a98a697fe2e60cfc5b7d9e1dd/src/media/icon.png -------------------------------------------------------------------------------- /src/media/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nuriofernandez/Ads-Link-Skipper/9ab68d233a0ab43a98a697fe2e60cfc5b7d9e1dd/src/media/icon128.png -------------------------------------------------------------------------------- /src/popup/font/Montserrat-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nuriofernandez/Ads-Link-Skipper/9ab68d233a0ab43a98a697fe2e60cfc5b7d9e1dd/src/popup/font/Montserrat-Regular.woff2 -------------------------------------------------------------------------------- /src/popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 | 16 |
17 |

Ads Link Skiper

18 |
19 |
20 |
21 |
22 |

Power by nurio.me

23 |
24 | 26 |
27 |
28 | 29 |
30 |
31 |
Status
32 |
Site's group name
33 |
34 | 35 |
36 | 37 | 38 |
39 |
40 | 44 |
45 |
ADF.LY
46 |
47 | 48 | 49 |
50 |
51 | 55 |
56 |
CROCO
57 |
58 | 59 | 60 |
61 |
62 | 66 |
67 |
SHINK ME
68 |
69 | 70 | 71 |
72 |
73 | 77 |
78 |
LINK SHRINK
79 |
80 | 81 | 82 |
83 |
84 | 88 |
89 |
BLUE MEDIA FILES
90 |
91 | 92 |
93 | 94 |
95 | 96 |
97 |
98 |
99 | 103 |
104 |
Automatically close spam popups
105 |
106 |
107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /src/popup/popup.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", () => { 2 | 3 | const adfly = document.getElementById("adfly"); 4 | adfly.addEventListener("click", () => { 5 | chrome.extension.getBackgroundPage().enabledSites.adfly = adfly.checked; 6 | chrome.extension.getBackgroundPage().saveSites(); 7 | }); 8 | 9 | const shinkme = document.getElementById("shinkme"); 10 | shinkme.addEventListener("click", () => { 11 | chrome.extension.getBackgroundPage().enabledSites.shinkme = shinkme.checked; 12 | chrome.extension.getBackgroundPage().saveSites(); 13 | }); 14 | 15 | const croco = document.getElementById("croco"); 16 | croco.addEventListener("click", () => { 17 | chrome.extension.getBackgroundPage().enabledSites.croco = croco.checked; 18 | chrome.extension.getBackgroundPage().saveSites(); 19 | }); 20 | 21 | const linkshrink = document.getElementById("linkshrink"); 22 | linkshrink.addEventListener("click", () => { 23 | chrome.extension.getBackgroundPage().enabledSites.linkshrink = linkshrink.checked; 24 | chrome.extension.getBackgroundPage().saveSites(); 25 | }); 26 | 27 | const bluemediafiles = document.getElementById("bluemediafiles"); 28 | bluemediafiles.addEventListener("click", () => { 29 | chrome.extension.getBackgroundPage().enabledSites.bluemediafiles = bluemediafiles.checked; 30 | chrome.extension.getBackgroundPage().saveSites(); 31 | }); 32 | 33 | const spam = document.getElementById("spam"); 34 | spam.addEventListener("click", () => { 35 | chrome.extension.getBackgroundPage().enabledSites.spam = spam.checked; 36 | chrome.extension.getBackgroundPage().saveSites(); 37 | }); 38 | 39 | // Load current status of sites. 40 | adfly.checked = chrome.extension.getBackgroundPage().enabledSites.adfly; 41 | shinkme.checked = chrome.extension.getBackgroundPage().enabledSites.shinkme; 42 | croco.checked = chrome.extension.getBackgroundPage().enabledSites.croco; 43 | linkshrink.checked = chrome.extension.getBackgroundPage().enabledSites.linkshrink; 44 | bluemediafiles.checked = chrome.extension.getBackgroundPage().enabledSites.bluemediafiles; 45 | spam.checked = chrome.extension.getBackgroundPage().enabledSites.spam; 46 | 47 | }); -------------------------------------------------------------------------------- /src/popup/style.css: -------------------------------------------------------------------------------- 1 | /* Load Montserrat font */ 2 | 3 | @font-face { 4 | font-family : 'Montserrat'; 5 | font-style : normal; 6 | font-weight : 400; 7 | font-display : swap; 8 | src : local('Montserrat Regular'), local('Montserrat-Regular'), url('font/Montserrat-Regular.woff2') format('woff2'); 9 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 10 | } 11 | 12 | /* Style start */ 13 | 14 | .outer { 15 | display : table; 16 | position: absolute; 17 | height : 100%; 18 | width : 100%; 19 | } 20 | 21 | .middle { 22 | display : table-cell; 23 | vertical-align: middle; 24 | } 25 | 26 | .inner { 27 | margin-left : auto; 28 | margin-right: auto; 29 | width : 132px; 30 | } 31 | 32 | .logo { 33 | width : 70px; 34 | height: 70px; 35 | } 36 | 37 | .top-bar { 38 | background-color : #f5f5f5; 39 | padding : 5px 15px; 40 | display : grid; 41 | grid-template-rows: auto; 42 | grid-gap : 0px; 43 | border-bottom : 1px solid #dadada; 44 | box-shadow : 0px -1px 5px 0px rgb(136, 136, 136); 45 | } 46 | 47 | .bar-brand { 48 | display : grid; 49 | grid-template-columns: 75px 210px; 50 | grid-gap : 10px; 51 | } 52 | 53 | .bar-credits { 54 | display : grid; 55 | grid-template-columns: 215px 70px; 56 | grid-gap : 10px; 57 | } 58 | 59 | .btn-donate { 60 | margin-top: 4px; 61 | } 62 | 63 | .section-grid { 64 | background-color : #f5f5f5; 65 | box-shadow : 1px 1px 3px -1px rgb(136, 136, 136); 66 | border-radius : 3px; 67 | margin : 15px; 68 | padding : 10px; 69 | display : grid; 70 | grid-template-rows: auto; 71 | } 72 | 73 | .section-row { 74 | display : grid; 75 | grid-template-columns: 40px 165px; 76 | grid-gap : 30px; 77 | padding : 4px 0px; 78 | border-top : 1px solid #e0e0e0; 79 | } 80 | 81 | .features-row { 82 | display : grid; 83 | grid-template-columns: 40px 220px; 84 | grid-gap : 18px; 85 | padding : 4px 0px; 86 | border-top : 1px solid #e0e0e0; 87 | } 88 | 89 | .no-upperline { 90 | border-top: none; 91 | } 92 | 93 | h1 { 94 | font-size : 27px; 95 | font-family: 'Montserrat', sans-serif; 96 | } 97 | 98 | h4 { 99 | font-size : 20px; 100 | font-family: 'Montserrat', sans-serif; 101 | } 102 | 103 | a:hover { 104 | text-decoration: none; 105 | } 106 | 107 | .text-upper { 108 | text-transform: uppercase; 109 | } 110 | 111 | /* Enable - disable swtich */ 112 | 113 | .switch { 114 | position: relative; 115 | display : inline-block; 116 | width : 100%; 117 | height : 19px; 118 | margin : 0px 6px; 119 | } 120 | 121 | .switch input { 122 | display: none; 123 | } 124 | 125 | .slider { 126 | position : absolute; 127 | cursor : pointer; 128 | top : 0; 129 | left : 0; 130 | right : 0; 131 | bottom : 0; 132 | background-color : #cd4244; 133 | -webkit-transition: .4s; 134 | transition : .4s; 135 | border-radius : 17px; 136 | } 137 | 138 | .slider:before { 139 | position : absolute; 140 | content : ""; 141 | height : 12px; 142 | width : 12px; 143 | left : 6px; 144 | bottom : 4px; 145 | background-color : white; 146 | -webkit-transition: .4s; 147 | transition : .4s; 148 | border-radius : 50%; 149 | } 150 | 151 | input:checked+.slider { 152 | background-color: #5cd14f; 153 | } 154 | 155 | input:checked:disabled+.slider { 156 | background-color: #dad200; 157 | } 158 | 159 | input:checked+.slider:before { 160 | -webkit-transform: translateX(15px); 161 | -ms-transform : translateX(15px); 162 | transform : translateX(15px); 163 | } 164 | 165 | /* Uggly fixes */ 166 | .ml6p { 167 | margin-left: 6px; 168 | } --------------------------------------------------------------------------------