阿里云盘多账号localStorage管理器

用于管理多个账号的localStorage信息

  1. // ==UserScript==
  2. // @name 阿里云盘多账号localStorage管理器
  3. // @namespace http://tampermonkey-multiple-accounts
  4. // @version 1.0.3
  5. // @description 用于管理多个账号的localStorage信息
  6. // @match https://www.aliyundrive.com/*
  7. // @match https://www.alipan.com/*
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // ==/UserScript==
  11.  
  12. (function () {
  13. 'use strict';
  14.  
  15. // 定义变量
  16. var accounts = GM_getValue('accounts', {});
  17. var currentAccount = null;
  18. var currentLocalStorage = null;
  19. var currentHost = window.location.host;
  20. var currentName = JSON.parse(localStorage.token).nick_name || ''
  21.  
  22. // 创建设置按钮
  23. var settingsButton = document.createElement('div');
  24. settingsButton.innerHTML = `
  25. <div style="position: fixed; bottom: 20px; right: 20px; width: 40px; height: 40px;border-radius: 50%; cursor: pointer; display: flex; justify-content: center; align-items: center;">
  26. <i class="fas fa-cog" style="color: white;"><svg t="1684308224035" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2408" width="28" height="28"><path d="M682.666667 273.066667H580.266667V102.4h-477.866667v477.866667H273.066667V682.666667H0V0h682.666667v273.066667zM443.733333 443.733333v477.866667h477.866667v-477.866667h-477.866667zM341.333333 341.333333h682.666667v682.666667H341.333333V341.333333z" fill="#1296db" p-id="2409"></path></svg></i>
  27. </div>
  28. `;
  29. document.body.appendChild(settingsButton);
  30.  
  31. // 显示管理面板
  32. function showManagementPanel() {
  33. // 移除之前的管理页面
  34. var previousPanel = document.getElementById('multiple-accounts-panel');
  35. if (previousPanel) {
  36. previousPanel.parentNode.removeChild(previousPanel);
  37. }
  38.  
  39. // 创建弹出元素
  40. var panel = document.createElement('div');
  41. panel.id = 'multiple-accounts-panel';
  42. panel.style.position = 'fixed';
  43. panel.style.top = '0';
  44. panel.style.left = '0';
  45. panel.style.width = '100%';
  46. panel.style.height = '100%';
  47. panel.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
  48. panel.style.zIndex = '9999';
  49. panel.innerHTML = `
  50. <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); width: 600px;">
  51. <h3 style="margin-top: 0; margin-bottom: 20px; font-size: 24px;">多账号localStorage管理器</h3>
  52. <div style="display: flex; justify-content: space-between; margin-bottom: 10px; font-size: 18px;">
  53. <div style="flex: 1; font-weight: bold;">账号名称</div>
  54. <div style="flex: 1; display: flex; justify-content: flex-end; font-weight: bold;">操作</div>
  55. </div>
  56. <div style="overflow-y: auto; max-height: 400px;">
  57. ${Object.keys(accounts[currentHost] || {}).map(function (account) {
  58. return `
  59. <div style="display: flex; justify-content: space-between; margin-bottom: 10px;">
  60. <div style="flex: 1;">${account}</div>
  61. <div style="flex: 1; display: flex; justify-content: flex-end;">
  62. <button class="login-button" data-account="${account}" style="margin-right: 10px; padding: 5px 10px; border: none; background-color: #007fff; color: #fff; border-radius: 4px; cursor: pointer;">登录(不可用)</button>
  63. <button class="update-button" data-account="${account}" style="margin-right: 10px; padding: 5px 10px; border: 1px solid #ccc; background-color: #fff; color: #007fff; border-radius: 4px; cursor: pointer;">更新</button>
  64. <button class="delete-button" data-account="${account}" style="padding: 5px 10px; border: none; background-color: #ff4d4f; color: #fff; border-radius: 4px; cursor: pointer;">删除</button>
  65. </div>
  66. </div>
  67. `;
  68. }).join('')}
  69. </div>
  70. <hr style="margin-top: 20px; margin-bottom: 20px;">
  71. <div style="display: flex; align-items: center; margin-top: 10px;">
  72. <input type="text" value="${currentName}" id="account-name-input" style="flex: 1; padding: 5px 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px;" placeholder="请输入账号名称">
  73. <button id="save-current-button" style="margin-left: 10px; padding: 5px 10px; border: none; background-color: #007fff; color: #fff; border-radius: 4px; cursor: pointer;">保存当前账号</button>
  74. </div>
  75. </div>
  76. `;
  77. document.body.appendChild(panel);
  78.  
  79. // 绑定事件
  80. panel.addEventListener('click', function (e) {
  81. var accountName = e.target.getAttribute('data-account');
  82. if (e.target.classList.contains('login-button')) {
  83. localStorage.clear();
  84. var data = accounts[currentHost][accountName];
  85. for (var key in data) {
  86. localStorage.setItem(key, data[key]);
  87. }
  88. location.reload();
  89. } else if (e.target.classList.contains('update-button')) {
  90. accounts[currentHost][accountName] = getLocalStorageData();
  91. GM_setValue('accounts', accounts);
  92. showManagementPanel();
  93. } else if (e.target.classList.contains('delete-button')) {
  94. delete accounts[currentHost][accountName];
  95. GM_setValue('accounts', accounts);
  96. showManagementPanel();
  97. }
  98. else if(e.target == panel){
  99. panel.parentNode.removeChild(panel);
  100. }
  101. });
  102.  
  103. // 保存当前账号
  104. document.getElementById('save-current-button').onclick = function () {
  105. var accountName = document.getElementById('account-name-input').value.trim();
  106. if (accountName === '') {
  107. alert('请输入账号名称');
  108. return;
  109. }
  110. if (!accounts[currentHost]) {
  111. accounts[currentHost] = {};
  112. }
  113. accounts[currentHost][accountName] = getLocalStorageData();
  114. GM_setValue('accounts', accounts);
  115. showManagementPanel();
  116. };
  117. }
  118.  
  119. // 获取当前localStorage数据
  120. function getLocalStorageData() {
  121. var data = {};
  122. for (var i = 0; i < localStorage.length; i++) {
  123. var key = localStorage.key(i);
  124. data[key] = localStorage.getItem(key);
  125. }
  126. return data;
  127. }
  128.  
  129. // 设置按钮点击事件
  130. settingsButton.onclick = function () {
  131. showManagementPanel();
  132. };
  133. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址