Skip WeCom Email Safe Alert

try to skip WeCom Email Safe Alert

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Skip WeCom Email Safe Alert
// @namespace    https://work.weixin.qq.com/
// @version      2025-06-05.02
// @description  try to skip WeCom Email Safe Alert
// @author       Bevis
// @match        https://open.work.weixin.qq.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    if (window.location.host !== 'open.work.weixin.qq.com') {
        return;
    }

    function getAndDecodeUriParameter() {
        let finalUrl = "错误:未能获取或解码 'uri' 参数。";

        try {
            // 1. 获取当前页面的完整 URL
            const pageUrlString = window.location.href;

            // 2. 创建 URL 对象以方便地访问查询参数
            const url = new URL(pageUrlString);

            // 3. 获取 'uri' 参数的值
            const uriParamValue = url.searchParams.get('uri');

            if (uriParamValue) {
                // 4. 对 'uri' 参数的值进行第一次 URL 解码
                // 示例原始 uriParamValue: "https%3A%2F%2Ftracker.com%2FCL0%2Fhttps%3A%252F%252Ftarget.com..."
                // 解码后 (firstDecodedUri): "https://tracker.com/CL0/https%3A%2F%2Ftarget.com..."
                const firstDecodedUri = decodeURIComponent(uriParamValue);

                let secondEncodedPart = null;

                // 5. 从第一次解码后的字符串中,提取出那个被再次编码的最终目标网址部分。
                //    这部分通常以 "http%3A%2F%2F" 或 "https%3A%2F%2F" 开头,
                //    并且不是 firstDecodedUri 自身的协议头。
                const httpsMarker = "https%3A%2F%2F";
                const httpMarker = "http%3A%2F%2F";

                let searchStartIndex = 0;
                // 确定开始搜索内嵌编码URL的起始位置,通常是在跟踪URL的域名和第一个路径段之后
                const schemeEndIndex = firstDecodedUri.indexOf("://");
                if (schemeEndIndex !== -1) {
                    // 找到域名后的第一个 '/'
                    const domainAndPathPrefixEnd = firstDecodedUri.indexOf("/", schemeEndIndex + 3);
                    if (domainAndPathPrefixEnd !== -1) {
                        searchStartIndex = domainAndPathPrefixEnd + 1; // 从 "domain.com/" 之后开始搜索
                    } else {
                        // 如果URL类似于 "https://domain.com" (没有路径),则不太可能包含嵌套的编码URL
                        searchStartIndex = firstDecodedUri.length;
                    }
                }

                // 在 firstDecodedUri 的 searchStartIndex 之后查找 "https%3A%2F%2F"
                const indexHttps = firstDecodedUri.indexOf(httpsMarker, searchStartIndex);
                // 在 firstDecodedUri 的 searchStartIndex 之后查找 "http%3A%2F%2F"
                const indexHttp = firstDecodedUri.indexOf(httpMarker, searchStartIndex);

                if (indexHttps !== -1 && (indexHttp === -1 || indexHttps < indexHttp)) {
                    // 如果找到了 "https%3A%2F%2F",并且它在 "http%3A%2F%2F" 之前 (或者 "http%3A%2F%2F" 未找到)
                    secondEncodedPart = firstDecodedUri.substring(indexHttps);
                } else if (indexHttp !== -1) {
                    // 否则,如果找到了 "http%3A%2F%2F"
                    secondEncodedPart = firstDecodedUri.substring(indexHttp);
                }

                if (secondEncodedPart) {
                    // 6. 对提取出的这部分进行第二次 URL 解码
                    // 示例 secondEncodedPart: "https%3A%2F%2Ftarget.com..."
                    // 解码后 (finalUrl): "https://target.com..."
                    try {
                        finalUrl = decodeURIComponent(secondEncodedPart);
                    } catch (e) {
                        finalUrl = "错误:解码提取出的 URL 部分时出错: " + e.message + ". 提取的部分是: " + secondEncodedPart;
                    }
                } else {
                    console.log("错误:在 'uri' 参数第一次解码后,未能找到预期的双重编码 URL 模式 (例如 '.../http%3A%2F%2F...')。第一次解码的结果是: " + firstDecodedUri);
                    finalUrl = firstDecodedUri;
                    // 这种情况可能意味着 'uri' 参数的结构与预期不同,或者它只被编码了一层。
                    // 如果 'firstDecodedUri' 已经是您期望的“正常网址”,您可以直接使用它。
                    // 但根据您的示例,目标网址是嵌套且再次编码的。
                }
            } else {
                finalUrl = "错误:URL 中未找到 'uri' 参数,或其值为空。";
            }
        } catch (e) {
            finalUrl = "处理 URL 时发生 JavaScript 错误: " + e.message;
        }

        return finalUrl;
    }

    // --- 使用示例 ---
    // 假设当前页面的 URL 就是您提供的那个:
    // "https://open.work.weixin.qq.com/wwopen/uriconfirm?uri=https%3A%2F%2F52bb7ac08e78da0781cace19b1a1acee.us-east-1.resend-links.com%2FCL0%2Fhttps%3A%252F%252Fdoc.rti-tek.fr%252Fdoc%252F6zmn6zuo5oq6yas5yqf6io95lyy5yyw6k05pio-dRc9GgA8t2%2F1%2F010001973f118aee-4bc2f0e0-4368-47ce-9e20-a902e9676516-000000%2FXLmT9olksc8mRFnul6GIYhXCatnxgBxV4Nlux9Kzzy8%3D408&desc=7_0&err_type=high_risk_forbid&ts"

    const restoredUrl = getAndDecodeUriParameter();
    console.log("还原后的网址是:", restoredUrl);

    // 添加电子符箓
    if (document.getElementsByClassName('spam_title')[0]) {
        document.getElementsByClassName('spam_title')[0].textContent = '祝开发此屏蔽功能的工作人员工作顺利!';
        document.getElementsByClassName('spam_title')[0].style.textAlign = 'center';
    }
    if (document.getElementsByClassName('spam_desc')[0]) {
        document.getElementsByClassName('spam_desc')[0].textContent = '正在加载所谓的 “不安全网址”';
    }

    const rectElement = document.querySelector('.stage_result > svg.comm_infoAttention72_Red > rect');

    if (rectElement) {
        // Change the fill attribute to 'green'
        rectElement.style.setProperty('fill', 'green', 'important');
        console.log('The <rect> element background has been changed to green.');
    } else {
        console.error('Could not find the target <rect> element to change its color.');
    }

    if (restoredUrl && /^https:\/\//.test(restoredUrl)) {
        window.location.href = restoredUrl;
    }
})();