您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
禁止手机站点的第三方资源,当然你也可加入其它站点
- // ==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
- });
- }