可以对部分网页设置网页锁保护个人隐私(尤其是那些自动登录的网页).
// ==UserScript== // @name 网页锁 // @namespace https://sfkgroup.github.io/ // @version 0.1 // @description 可以对部分网页设置网页锁保护个人隐私(尤其是那些自动登录的网页). // @author SFKgroup // @match *://*/* // @grant GM_log // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @icon https://sfkgroup.github.io/images/favicon.ico // @license LGPL // ==/UserScript== (function () { var lock_style = 'blur(25px) grayscale(100%)' var ban_list = GM_getValue('bans', []) var allow_list = GM_getValue('allow', []) var password = GM_getValue('pwd', '159357') // 小键盘上的X function set_this_url() { let url = window.location.href if (ban_list.indexOf(url) >= 0) { return 0 } ban_list.push(url) GM_setValue('bans', ban_list) } function set_all_url() { let url = window.location.origin + '*' if (ban_list.indexOf(url) >= 0) { return 0 } ban_list.push(url) GM_setValue('bans', ban_list) } function del_this_url() { let url = window.location.href var input_key = prompt("请输入访问密钥", ""); if (input_key == password) { if (ban_list.indexOf(url) >= 0) { ban_list.splice(ban_list.indexOf(url), 1) } else { if (allow_list.indexOf(url) >= 0) { return 0 } allow_list.push(url) } GM_log(ban_list, allow_list) GM_setValue('bans', ban_list) GM_setValue('allow', allow_list) } else if (input_key != null) { alert('密钥错误.') } } function del_all_url() { let url = window.location.origin + '*' var input_key = prompt("请输入访问密钥", ""); if (input_key == password) { if (ban_list.indexOf(url) >= 0) { ban_list.splice(ban_list.indexOf(url), 1) } else { if (allow_list.indexOf(url) >= 0) { return 0 } allow_list.push(url) } GM_log(ban_list, allow_list) GM_setValue('bans', ban_list) GM_setValue('allow', allow_list) } else if (input_key != null) { alert('密钥错误.') } } function clear_list() { var input_key = prompt("请输入访问密钥", ""); if (input_key == password) { ban_list = [] allow_list = [] GM_setValue('bans', []) GM_setValue('allow', []) } else if (input_key != null) { alert('密钥错误.') } } function set_key() { var input_key = prompt("请输入旧的访问密钥", ""); if (input_key == password) { var input_key = prompt("请输入新的访问密钥", ""); if (input_key != null && input_key != "") { password = input_key GM_setValue('pwd', password) } else { alert('密码不能为空.') } } else if (input_key != null) { alert('密钥错误.') } } if (window.self === window.top) { GM_registerMenuCommand("添加本页面", set_this_url, "s"); GM_registerMenuCommand("添加本网址", set_all_url, "a"); GM_registerMenuCommand("解锁本页面", del_this_url, "d"); GM_registerMenuCommand("解锁本网址", del_all_url, "r"); GM_registerMenuCommand("重置所有列表", clear_list, "c"); GM_registerMenuCommand("设置访问密钥", set_key, "p"); var locking = false var self_url = window.location.href for (let i = 0; i < ban_list.length; i++) { if (self_url.search(ban_list[i]) >= 0) { if (allow_list.indexOf(self_url) < 0) { document.getElementsByTagName('body')[0].style.filter = lock_style locking = true GM_log('Locked') break } } } setTimeout(function () { if (locking) { for (let k = 0; k < 3; k++) { var input_key = prompt("请输入访问密钥", ""); if (input_key == password) { document.getElementsByTagName('body')[0].style.filter = '' GM_log('UnLocked') break } else if (input_key == null) { break } else { alert('密钥错误,还有' + (2 - k) + '次机会.') } } } }, 100) } })();