您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name VK change accounts // @namespace http://tampermonkey.net/ // @version 0.2 // @description try to take over the world! // @author KoctrX // @match https://vk.com/* // @grant none // ==/UserScript== (function () { document.body.onkeydown = function(e) { if (!e.altKey || !e.ctrlKey) return; CVK.showHidePanel(); }; CVK = { accounts: [], remixsid: 'remixsid', id: 'fix21323', co: 'cookie_accounts', showHidePanel: () => { let block = document.getElementById(CVK.id); block.style.display = block.style.display === 'none' ? 'block': 'none'; }, addAccount: () => { let sid = CVK.getCookie(CVK.remixsid); if (!CVK.remixsid) return; if (CVK.findSid(sid)) return; let name = window.prompt('Введите название аккаунта:', `Аккаунт ${CVK.accounts.length}`); if (!name) return; if (!window.confirm(`Вы хотите сохранить данный аккаунт для быстрого входа, под именем: ${name}?`)) return; CVK.accounts.push({name, sid}); CVK.updateAccouts(); CVK.render(); }, updateAccouts: () => { let data = JSON.stringify(CVK.accounts); document.cookie = `${CVK.co}=${data};path=/;`; }, delAccount: (id) => { if (!CVK.accounts.length) return; CVK.accounts.splice(id, 1); CVK.updateAccouts(); CVK.render(); }, render: () => { CVK.blockId(); CVK.renderAccounts(); }, out: () => { document.cookie = `${CVK.remixsid}=null;path=/`; document.location.reload(); }, renderAccounts: () => { let block = document.getElementById(CVK.id); block.innerHTML = ''; let bl = CVK.crObj({ n: 'div', i: '<hr>Список аккаунтов<hr>', a: [['style', 'text-align: center;']] }); if (!CVK.accounts.length) { bl.appendChild(CVK.crObj({ n: 'div', i: 'Доступных аккаунтов нет!' })); } else { let div = CVK.crObj({ n: 'div' }); for (let q = 0; q < CVK.accounts.length; q++) { div.appendChild(CVK.crObj({ n: 'button', i: CVK.accounts[q].name, a: [['class', 'flat_button button_wide secondary'], ['onclick', 'CVK.change(' + q + ')'], ['style', 'color: #00a06d;background: rgb(0,0,0,0.1);']] })); div.appendChild(CVK.crObj({ n: 'button', i: 'Удалить', a: [['class', 'flat_button button_wide secondary'], ['onclick', 'CVK.delAccount(' + q + ')'], ['style', 'color: #f00;']] })); } bl.appendChild(div); } if (!CVK.findSid(CVK.getCookie(CVK.remixsid))) { bl.appendChild(CVK.crObj({ n: 'hr' })); bl.appendChild(CVK.crObj({ n: 'a', i: 'Добавить', a: [['onclick', 'CVK.addAccount()'], ['class', 'ui_actions_menu_item _im_action im-action im-action_invite'], ['href', 'javascript://']] })); } bl.appendChild(CVK.crObj({ n: 'button', i: 'Выйти', a: [['class', 'flat_button button_wide secondary'], ['onclick', 'CVK.out();'], ['style', 'background: #4a76a8;color: #ffffff;border: 1px solid #ffffff;']] })); block.appendChild(bl); }, crObj: (e) => { if (e.n) { let element = document.createElement(e.n); if (e.i) element.innerHTML = e.i; if (e.a) { for (let q = 0; q < e.a.length; q++) { element.setAttribute(e.a[q][0], `${e.a[q][1]}`); } } return element; } else { return CVK.throwError('Ошибка при рендере!'); } }, throwError: (err) => { console.error(err); }, blockId: () => { if (!document.getElementById(CVK.id)) { let block = document.getElementById('side_bar_inner'); block.appendChild(CVK.crObj({ n: 'div', a: [['id', CVK.id]] })); } }, findSid: (sid) => { if (!CVK.accounts.length) return false; for (let q = 0; q < CVK.accounts.length; q++) { if (CVK.accounts[q].sid == sid) return true; } return false; }, change: (q) => { document.cookie = `${CVK.remixsid}=${CVK.accounts[q].sid};path=/`; document.location.reload(); }, getAccountsCoookie: () => { let data = CVK.getCookie(CVK.co); if (!data) return; try { data = JSON.parse(data); } catch (err) { CVK.throwError(err); return; } if (!data.length) return; CVK.accounts = data; }, getCookie: (name) => { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } }; CVK.getAccountsCoookie(); CVK.render(); })();