您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allow you to redirect customizable urls to the iOS Opener app.
- // ==UserScript==
- // @name Redirect to Opener
- // @version 1.1
- // @description Allow you to redirect customizable urls to the iOS Opener app.
- // @author yodaluca23
- // @license GNU GPLv3
- // @match *://*/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_registerMenuCommand
- // @namespace https://greasyfork.org/users/1315976
- // ==/UserScript==
- (function() {
- 'use strict';
- // Keys for stored lists
- const websiteListKey = "websiteList";
- const exclusionListKey = "exclusionList";
- // Retrieve or initialize the lists
- let websiteList = GM_getValue(websiteListKey, []);
- let exclusionList = GM_getValue(exclusionListKey, []);
- // Function to add a website to the redirect list
- function addWebsite() {
- const website = prompt("Enter a website or part of a URL to redirect (e.g., youtube.com):");
- if (!website) return;
- websiteList.push(website);
- GM_setValue(websiteListKey, websiteList);
- alert(`Website "${website}" added to the redirect list.`);
- }
- // Function to manage the redirect list
- function manageWebsiteList() {
- if (websiteList.length === 0) {
- alert("No websites have been added yet.");
- return;
- }
- let listDisplay = "Current websites in the redirect list:\n\n";
- websiteList.forEach((item, index) => {
- listDisplay += `${index + 1}. ${item}\n`;
- });
- listDisplay += "\nEnter the number of the website to delete, or press Cancel to exit.";
- const choice = prompt(listDisplay);
- const index = parseInt(choice, 10) - 1;
- if (!isNaN(index) && index >= 0 && index < websiteList.length) {
- websiteList.splice(index, 1);
- GM_setValue(websiteListKey, websiteList);
- alert("Website removed successfully!");
- }
- }
- // Function to add a website to the exclusion list
- function addExclusion() {
- const exclusion = prompt("Enter a URL part to exclude from redirection (e.g., login.google.com):");
- if (!exclusion) return;
- exclusionList.push(exclusion);
- GM_setValue(exclusionListKey, exclusionList);
- alert(`Exclusion "${exclusion}" added to the list.`);
- }
- // Function to manage the exclusion list
- function manageExclusionList() {
- if (exclusionList.length === 0) {
- alert("No exclusions have been added yet.");
- return;
- }
- let listDisplay = "Current exclusions:\n\n";
- exclusionList.forEach((item, index) => {
- listDisplay += `${index + 1}. ${item}\n`;
- });
- listDisplay += "\nEnter the number of the exclusion to delete, or press Cancel to exit.";
- const choice = prompt(listDisplay);
- const index = parseInt(choice, 10) - 1;
- if (!isNaN(index) && index >= 0 && index < exclusionList.length) {
- exclusionList.splice(index, 1);
- GM_setValue(exclusionListKey, exclusionList);
- alert("Exclusion removed successfully!");
- }
- }
- // Register menu commands
- GM_registerMenuCommand("Add Website to Redirect List", addWebsite);
- GM_registerMenuCommand("Manage Redirect List", manageWebsiteList);
- GM_registerMenuCommand("Add Exclusion", addExclusion);
- GM_registerMenuCommand("Manage Exclusion List", manageExclusionList);
- // Redirect logic
- const currentURL = window.location.href;
- // Check if the URL matches any exclusion before redirecting
- for (const exclusion of exclusionList) {
- if (currentURL.includes(exclusion)) {
- console.log(`Redirection prevented: URL contains excluded term "${exclusion}".`);
- return; // Stop execution if an exclusion is found
- }
- }
- // Check if the URL matches any redirect condition
- for (const website of websiteList) {
- if (currentURL.includes(website)) {
- const encodedURL = encodeURIComponent(currentURL);
- const openerURL = `opener://x-callback-url/show-options?url=${encodedURL}`;
- // Redirect to the constructed URL
- window.location.href = openerURL;
- break;
- }
- }
- })();