您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Decodes and rewrites external URLs. Stops URL tracking/analytics
- // ==UserScript==
- // @name GMX/Mail.com Outgoing URL Decoder
- // @namespace https://github.com/2zzly/GMX-Mail-deref-decoder
- // @version 1
- // @description Decodes and rewrites external URLs. Stops URL tracking/analytics
- // @author 1Deref
- // @match *://*/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- function decodeAndRewriteUrl(url) {
- const regexMail = /https:\/\/deref-mail\.com\/mail\/client\/([a-zA-Z0-9-_]{11})\/dereferrer\/\?redirectUrl=(.+)/;
- const regexGMX = /https:\/\/deref-gmx\.net\/mail\/client\/([a-zA-Z0-9-_]{11})\/dereferrer\/\?redirectUrl=(.+)/;
- const matchMail = url.match(regexMail);
- const matchGMX = url.match(regexGMX);
- if (matchMail && matchMail[2]) {
- const strippedUrl = matchMail[2];
- const decodedUrl = decodeURIComponent(strippedUrl);
- return decodedUrl;
- }
- if (matchGMX && matchGMX[2]) {
- const strippedUrl = matchGMX[2];
- const decodedUrl = decodeURIComponent(strippedUrl);
- return decodedUrl;
- }
- return null;
- }
- function injectScript(frame) {
- const script = document.createElement('script');
- script.textContent = `
- (function() {
- const links = document.querySelectorAll('a');
- for (const link of links) {
- const decodedUrl = decodeAndRewriteUrl(link.href);
- if (decodedUrl) {
- link.href = decodedUrl;
- }
- }
- })();
- `;
- frame.contentDocument.head.appendChild(script);
- }
- function handleFrames() {
- const frames = document.querySelectorAll('iframe');
- for (const frame of frames) {
- injectScript(frame);
- }
- }
- // Handle the top-level document
- const links = document.querySelectorAll('a');
- for (const link of links) {
- const decodedUrl = decodeAndRewriteUrl(link.href);
- if (decodedUrl) {
- link.href = decodedUrl;
- }
- }
- // Handle frames
- handleFrames();
- })();