Block access to specific websites with password protection
当前为
// ==UserScript==
// @name Website Blocker with Password Protection
// @namespace http://tampermonkey.net/
// @version 1.2
// @license MIT
// @description Block access to specific websites with password protection
// @match https://classroom.google.com/*
// @match https://hac20.esp.k12.ar.us/*
// @match https://www.youtube.com/*
// @match https://docs.google.com/*
// @match https://clever.discoveryeducation.com/*
// @match https://www.desmos.com/*
// @match https://chrome.google.com/webstore/detail/prodigy-hacking-extension/cddgplffojbmjffebkmngmmlhkkhfibp
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function() {
'use strict';
const PASSWORDS = ["RedPeach9002!", "Charles17578!"]; // Set the passwords here
const ERROR_PAGE = "https://example.com/error.html"; // Set the custom error page URL here
const BLOCKED_URLS = [
{
url: "https://classroom.google.com/",
message: "Enter the password to access Google Classroom"
},
{
url: "https://hac20.esp.k12.ar.us/",
message: "Enter the password to access Hac20"
},
{
url: "https://www.youtube.com/",
message: "Enter the password to access YouTube"
},
{
url: "https://docs.google.com/",
message: "Enter the password to access Google Docs"
},
{
url: "https://clever.discoveryeducation.com/",
message: "Enter the password to access Clever"
},
{
url: "https://www.desmos.com/",
message: "Enter the password to access Desmos"
},
{
url: "https://chrome.google.com/webstore/detail/prodigy-hacking-extension/cddgplffojbmjffebkmngmmlhkkhfibp",
message: "Enter the password to access Prodigy Hacks"
}
];
const PASSWORD_CACHE_TIME = 300 * 1000; // Password cache time in milliseconds (5 minutes)
const currentPage = window.location.href;
let isBlocked = false;
let message = "";
for (let i = 0; i < BLOCKED_URLS.length; i++) {
const blockedUrl = BLOCKED_URLS[i];
if (currentPage.startsWith(blockedUrl.url)) {
isBlocked = true;
message = blockedUrl.message;
break;
}
}
if (isBlocked) {
const cachedPassword = GM_getValue("password_cache", {});
if (currentPage in cachedPassword && (Date.now() - cachedPassword[currentPage].time) < PASSWORD_CACHE_TIME) {
// Password is cached and not expired, continue to website
return;
}
const password = prompt(message);
if (!PASSWORDS.includes(password)) {
// Redirect to custom error page with message
window.location.href = ERROR_PAGE + "?message=Incorrect password";
} else {
// Cache the password for this page
cachedPassword[currentPage] = {password: password, time: Date.now()};
GM_setValue("password_cache", cachedPassword);
}
}
})();