网页屏蔽器 test

屏蔽整个网站

目前為 2023-05-10 提交的版本,檢視 最新版本

// ==UserScript==
// @name		网页屏蔽器 test
// @version		1.2.0
// @description	屏蔽整个网站
// @namespace	PPPScript
// @license		MIT
// @author		PPP
// @include		*
// @run-at		document-start
// @grant		unsafeWindow
// @grant		GM_setValue
// @grant		GM_getValue
// ==/UserScript==

var PPPbanner = Object.assign(PPPbanner || {}, {top: 0, left: 0});
let hre = window.location.origin;

(function() {
	let orig = GM_getValue("PPP_banner_bannedlist");
	if(localStorage.PPP_banned_sign == 'true')
		GM_setValue("PPP_banner_bannedlist", (typeof orig == 'object' ? (orig[hre] = null, orig) : (orig = {}, orig[hre] = null, orig)));
	console.log("PPP 创作的 网页屏蔽器 屏蔽名单:", orig);
})();
(function() {
	let orig = GM_getValue("PPP_banner_whitelist");
	if(localStorage.PPP_unbanned_sign == 'true')
		GM_setValue("PPP_banner_whitelist", (typeof orig == 'object' ? (orig[hre] = null, orig) : (orig = {}, orig[hre] = null, orig)));
	console.log("PPP 创作的 网页屏蔽器 白名单:", orig);
})();

if(localStorage.PPP_unbanned_sign != 'true') {
	if(localStorage.PPP_banned_sign == 'true') {
		let innerHtml = `	<head>
		<title>
			此网站已被屏蔽
		</title>
		<link rel="icon" href="https://我是什么东西" type="image/png">
	</head>
	<body style="position: relative;">
		<style>
			html {
				font-size: 16px;
			}
			PPP-banner {
				top: 1em;
				left: 1em;
				display: block;
				position: fixed;
				white-space: nowrap;
				-webkit-user-select: none;
				-moz-user-select: none;
				user-select: none;
			}
			PPP-banner-button:hover {
				filter: brightness(87.5%);
			}
			PPP-banner-button {
				cursor: pointer;
				border-radius: 0.5em;
				padding: 0.25em 0.5em;
				display: inline-block;
				background-color: white;
				border: 1px solid black;
			}
			hr{
				border: 0;
				height: 1px;
				background-image: linear-gradient(to right, #AAAF, #AAA0);
			}
			a:link{
				text-decoration: none;
			}
			a:active{
				text-decoration: none;
			}
			a:visited{
				text-decoration: none;
			}
			a:hover{
				text-decoration: none;
			}
		</style>
		<PPP-banner>
			<PPP-banner-button>取消屏蔽</PPP-banner-button>
		</PPP-banner>
		<div style="margin-top: 25px; margin-left: 25px;">
			<p style="font-size: 3em;">
				此网站已被屏蔽
			</p>
			<hr>
			<p style="font-size: 1.5em; color: gray; margin-top: -5px;">
				来自 <a href="https://github.com/PPPxcy" target="_blank">PPP</a> 创作的 网页屏蔽器。
			</p>
		</div>
	</body>`;
		console.log(`PPP 创作的 网页屏蔽器 已自动屏蔽该网站:${window.location.origin}`);
		let last = 1, now, iself, countChange = -1, first = true, dangerLevels = [1000000, 100000, 10000, 3000, 1250, 500, 200, 100, 50, 25, 10, 5, 2, 1];
		for(let i = now = setInterval(function() {}, 1); i > last; i--)
			clearInterval(i), clearTimeout(i);
		last = now;
		iself = setInterval(function() {
			if(document.documentElement.innerHTML != innerHtml) {
				for(let i = now = setInterval(function() {}, 1); i > last; i--)
					if(i != iself)
						clearInterval(i), clearTimeout(i);
				last = now, countChange++, document.documentElement.innerHTML = innerHtml;
				if(countChange >= dangerLevels[dangerLevels.length - 1])
					console.error(`请确认你的其他脚本没有问题。对抗次数已经达到 ${dangerLevels.pop()} 次。`);
				document.querySelector('PPP-banner > PPP-banner-button:last-child').onclick = function() {
					if(confirm(`您确定要取消屏蔽该网站吗?(${hre})`) === true) {
						let orig = GM_getValue("PPP_banner_bannedlist");
						GM_setValue("PPP_banner_bannedlist", typeof orig == 'object' ? (delete orig[hre], orig) : {});
						delete localStorage.PPP_banned_sign;
						window.location.reload();
					}
				};
				if(first)
					innerHtml = document.documentElement.innerHTML, first = false;
			}
		}, 16);
	} else {
		let innerHtml = `	<style>
		PPP-banner {
			top: ${localStorage.PPP_banner_lasttop == undefined ? (localStorage.PPP_banner_lasttop = 16) : localStorage.PPP_banner_lasttop}px;
			left: ${localStorage.PPP_banner_lastleft == undefined ? (localStorage.PPP_banner_lastleft = 16) : localStorage.PPP_banner_lastleft}px;
			display: block;
			position: fixed;
			font-size: 16px;
			z-index: 998244353;
			white-space: nowrap;
			pointer-events: none;
			font-family: sans-serif;
			-webkit-user-select: none;
			-moz-user-select: none;
			user-select: none;
		}
		PPP-banner-dragger:hover, PPP-banner-button:hover {
			filter: brightness(87.5%);
		}
		PPP-banner-dragger {
			width: 2em;
			height: 2em;
			z-index: 998244353;
			position: relative;
			border-radius: 0.5em;
			pointer-events: auto;
			display: inline-block;
			vertical-align: middle;
			background-color: #555;
		}
		PPP-banner-dragger:hover {
			cursor: grab;
		}
		PPP-banner-dragger::before {
			width: 2em;
			height: 2em;
			overflow: hidden;
			content: "\\FEFF";
			border-radius: 1em;
			display: inline-block;
			background-image: radial-gradient(white, #EEEE 19%, #AAAA 55%, #5555 77%, transparent);
		}
		PPP-banner-button {
			cursor: pointer;
			z-index: 998244353;
			position: relative;
			border-radius: 0.5em;
			pointer-events: auto;
			display: inline-block;
			padding: 0.25em 0.5em;
			vertical-align: middle;
			background-color: white;
			border: 1px solid black;
		}
	</style>
	<PPP-banner>
		<PPP-banner-dragger draggable="true" title="拖拽以移动按钮"></PPP-banner-dragger>
		<PPP-banner-button>屏蔽该网站</PPP-banner-button>
		<PPP-banner-button>隐藏</PPP-banner-button>
	</PPP-banner>
`;
		console.log(`PPP 创作的 网页屏蔽器 已开启`);
		setInterval(function() {
			if(document.querySelector('PPP-banner') == null) {
				document.body.insertAdjacentHTML("beforeend", innerHtml);
				document.documentElement.ondragover = function(event) { event.preventDefault(); };
				document.body.querySelector('PPP-banner-dragger').ondragstart = function(event) {
				//	if(event.x !== undefined)
				//		console.dir(event);
					PPPbanner.top = event.clientY - document.querySelector('PPP-banner').style.top.substr(0, document.querySelector('PPP-banner').style.top.length - 2);
					PPPbanner.left = event.clientX - document.querySelector('PPP-banner').style.left.substr(0, document.querySelector('PPP-banner').style.left.length - 2);
				};
				document.body.querySelector('PPP-banner-dragger').ondragend = function(event) {
					document.querySelector('PPP-banner').style.top = Math.min(Math.max(0, localStorage.PPP_banner_lasttop = event.clientY - PPPbanner.top), window.innerHeight - document.body.querySelector('PPP-banner').getBoundingClientRect().height) + 'px';
					document.querySelector('PPP-banner').style.left = Math.min(Math.max(0, localStorage.PPP_banner_lastleft = event.clientX - PPPbanner.left), window.innerWidth - document.body.querySelector('PPP-banner').getBoundingClientRect().width) + 'px';
				};
				document.querySelector('PPP-banner > PPP-banner-button:not(PPP-banner > PPP-banner-button:last-child)').onclick = function(event) {
					if(confirm(`您确定要屏蔽该网站吗?(${hre})`) === true) {
						localStorage.PPP_banned_sign = 'true';
						let orig = GM_getValue("PPP_banner_bannedlist");
						GM_setValue("PPP_banner_bannedlist", typeof orig == 'object' ? (orig[hre]= null, orig) : (orig = {}, orig[hre]= null, orig));
						window.location.reload();
					}
				};
				document.querySelector('PPP-banner > PPP-banner-button:last-child').onclick = function(event) {
					if(confirm(`您确定要取消此按钮吗?(在 ${hre})`) === true) {
						if(confirm(`要永久隐藏吗?(否则本次会话会隐藏)`) == true) {
							localStorage.PPP_unbanned_sign = 'true';
							let orig = GM_getValue("PPP_banner_whitelist");
							GM_setValue("PPP_banner_whitelist", typeof orig == 'object' ? (orig[hre]= null, orig) : (orig = {}, orig[hre]= null, orig));
						}
						document.querySelector('PPP-banner').style.display = 'none';
					}
				};
				setInterval(function() {
					document.querySelector('PPP-banner').style.top = Math.min(Math.max(0, localStorage.PPP_banner_lasttop), window.innerHeight - document.body.querySelector('PPP-banner').getBoundingClientRect().height) + 'px';
					document.querySelector('PPP-banner').style.left = Math.min(Math.max(0, localStorage.PPP_banner_lastleft), window.innerWidth - document.body.querySelector('PPP-banner').getBoundingClientRect().width) + 'px';
				}, 16);
			}
		}, 16);
	}
}
if(!(localStorage.PPP_unbanned_sign != 'true' && localStorage.PPP_banned_sign == 'true')) {
	let styles = document.createElement('style');
	styles.innerText = `a[href][PPP-banned] { filter: sepia(1); }`;
	document.head.appendChild(styles);
	setInterval(function() {
		let orig = GM_getValue('PPP_banner_bannedlist'), alist = [...document.querySelectorAll('a[href]:not(a[href][PPP-checked])')];
		for(let i = 0; i < alist.length; i++) {
			if(orig[new URL(alist[i].getAttribute('href'), window.location.href).origin] !== undefined)
				alist[i].setAttribute('PPP-banned', ''), alist[i].setAttribute('title', "你屏蔽了它:" + new URL(alist[i].getAttribute('href'), window.location.href).origin + ",对吧?\n\n来自由 PPP 创作的 网页屏蔽器。");
			else
				alist[i].setAttribute('PPP-checked', '');
		}
	}, 16);
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址