🏠 Home 

disableThirdpartyAD

禁止手机站点的第三方资源,当然你也可加入其它站点

// ==UserScript==
// @name           disableThirdpartyAD
// @namespace      disableThirdpartyAD.xinggsf
// @author	       xinggsf
// @description    禁止手机站点的第三方资源,当然你也可加入其它站点
// downloadUrl     https://raw.githubusercontent.com/xinggsf/gm/master/disableThirdpartyAD.user.js
// @include        http://m.*
// @include        http://wap.*
// @include        https://m.*
// @include        https://wap.*
// @version        2016.9.26
// @encoding       utf-8
// @run-at         document-start
// @grant          unsafeWindow
// ==/UserScript==
"use strict";
if (unsafeWindow.top === unsafeWindow.self) {
let baseHost = '??',
urlWhiteList = [],
regIp = /(?:\d{1,3}\.){3}\d{1,3}/,
r = /:\/\/([^:\/]+)/,
getBaseHost = function (url) {//取主域名
let m = url.match(r);
if (!m || m[1].includes(baseHost))
return baseHost;
m = m[1];
let a = m.split('.');
if (a.length === 2)
return m;
let i, s, ret = a.pop();
for (i = 0; i < 2; i++) {
s = a.pop();
ret = s + '.' + ret;
//广告主域名一般超过3字符
if (!/[a-z]{2,3}/i.test(s))
return ret;
}
return ret;
},
delAdNode = function (e) {
switch (e.tagName) {
case 'SCRIPT':
case 'IFRAME':
if (isThirdparty(e.getAttribute('src')))
e.parentNode.removeChild(e);
break;
/* case  'IMAGE':
case  'VIDEO':
case  'OBJECT':
case  'EMBED': */
}
},
isThirdparty = function (url) {
if (!url || urlWhiteList.includes(url))
return !1;
return baseHost !== getBaseHost(url);
};
baseHost = regIp.test(location.hostname) ?
location.hostname : getBaseHost(location.hostname);
let mo = new MutationObserver(function (rs) {
for (let col of rs)
for (let e of col.addedNodes)
delAdNode(e);
});
mo.observe(document, {
childList : true,
subtree : true
});
}