inZOI Canvas Auth Exporter

Extract and export the auth token from Canvas (playinzoi.com) as used by Sorrow446's downloader

  1. // ==UserScript==
  2. // @name inZOI Canvas Auth Exporter
  3. // @namespace https://cybar.xyz/
  4. // @version 1.0
  5. // @description Extract and export the auth token from Canvas (playinzoi.com) as used by Sorrow446's downloader
  6. // @author you
  7. // @match https://canvas.playinzoi.com/*
  8. // @grant GM_setClipboard
  9. // ==/UserScript==
  10.  
  11. (function () {
  12. 'use strict';
  13.  
  14. function createFloatingButton() {
  15. const btn = document.createElement('button');
  16. btn.textContent = 'Export auth';
  17. btn.style.position = 'fixed';
  18. btn.style.bottom = '20px';
  19. btn.style.right = '20px';
  20. btn.style.zIndex = '9999';
  21. btn.style.padding = '10px 16px';
  22. btn.style.background = '#444';
  23. btn.style.color = '#fff';
  24. btn.style.border = 'none';
  25. btn.style.borderRadius = '8px';
  26. btn.style.cursor = 'pointer';
  27. btn.style.boxShadow = '0 4px 10px rgba(0,0,0,0.2)';
  28. btn.style.fontSize = '14px';
  29.  
  30. btn.addEventListener('click', () => {
  31. const token = localStorage.getItem('auth');
  32. if (token) {
  33. GM_setClipboard(token);
  34. showToast('Auth token copied to clipboard!');
  35. } else {
  36. showToast('Auth token not found!');
  37. }
  38. });
  39.  
  40. document.body.appendChild(btn);
  41. }
  42.  
  43. function showToast(message) {
  44. const toast = document.createElement('div');
  45. toast.textContent = message;
  46. toast.style.position = 'fixed';
  47. toast.style.bottom = '60px';
  48. toast.style.right = '20px';
  49. toast.style.padding = '10px 16px';
  50. toast.style.background = '#222';
  51. toast.style.color = '#fff';
  52. toast.style.borderRadius = '6px';
  53. toast.style.boxShadow = '0 2px 6px rgba(0,0,0,0.3)';
  54. toast.style.zIndex = '9999';
  55. toast.style.opacity = '0';
  56. toast.style.transition = 'opacity 0.3s ease';
  57.  
  58. document.body.appendChild(toast);
  59. setTimeout(() => (toast.style.opacity = '1'), 10);
  60. setTimeout(() => {
  61. toast.style.opacity = '0';
  62. setTimeout(() => toast.remove(), 300);
  63. }, 2000);
  64. }
  65.  
  66. window.addEventListener('load', () => {
  67. createFloatingButton();
  68. });
  69. })();

QingJ © 2025

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