您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Switch platforms, highlight red users, and trigger full wipe with a slick UI.
// ==UserScript== // @name Discord Platform Spoof + Toolbox // @namespace http://tampermonkey.net/ // @version 1.5.4 // @author CheetoPuffsz23 // @description Switch platforms, highlight red users, and trigger full wipe with a slick UI. // @match https://discord.com/channels/* // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @license MIT // ==/UserScript== (function () { 'use strict'; const platforms = { "Web": { "$os": "Windows", "$browser": "Chrome", "$device": "" }, "Mobile": { "$os": "Android", "$browser": "Discord Android", "$device": "Discord Android" } }; let selected = GM_getValue("discordSpoofPlatform", "Web"); let uiContainer = null; let isVisible = false; const spoofedProps = () => platforms[selected]; const originalSend = WebSocket.prototype.send; WebSocket.prototype.send = function (data) { try { if (typeof data === "string" && data.includes('"op":2')) { const parsed = JSON.parse(data); if (parsed?.op === 2 && parsed?.d?.properties) { parsed.d.properties = spoofedProps(); console.log(`[Spoof] Applied "${selected}" spoof:`, parsed.d.properties); data = JSON.stringify(parsed); } } } catch (err) { console.error("[Spoof] Failed to spoof IDENTIFY:", err); } return originalSend.call(this, data); }; function highlightRedUsernames() { const observer = new MutationObserver(() => { Array.from(document.querySelectorAll('[class*="username"]')).forEach(el => { const name = el.textContent.toLowerCase(); if (name.includes("admin") || name.includes("mod")) { el.style.color = "#ff4d4d"; } }); }); observer.observe(document.body, { childList: true, subtree: true }); } function toggleUsernameHighlight() { const style = document.getElementById("toolbox-username-style"); if (style) style.remove(); else { const css = document.createElement("style"); css.id = "toolbox-username-style"; css.textContent = ` [class*='username'] { color: #ff5555 !important; } `; document.head.appendChild(css); } } function createDivider() { const div = document.createElement("div"); div.style.cssText = "margin: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1);"; return div; } function createSubtleLabel(text) { const label = document.createElement("div"); label.textContent = text; label.style.cssText = "margin-top: 4px; margin-bottom: 0.3px; font-size: 10px; color: #888; font-weight: 400; text-align: right;"; return label; } function createLabel(text) { const label = document.createElement("div"); label.textContent = text; label.style.cssText = "margin-top: 4px; font-size: 15px; color: #fff; font-weight: 600; text-align: center;"; return label; } function createUI() { uiContainer = document.createElement("div"); uiContainer.style.cssText = ` position: fixed; top: 100px; left: 100px; width: 260px; background: rgba(30, 30, 40, 0.65); backdrop-filter: blur(10px); border-radius: 12px; box-shadow: 0 0 15px rgba(0,0,0,0.5); color: #fff; font-family: 'Segoe UI', sans-serif; font-size: 14px; z-index: 999999; user-select: none; `; const header = document.createElement("div"); header.textContent = "🛠️ Discord Toolbox"; header.style.cssText = ` padding: 10px 12px; font-weight: bold; background: rgba(0,0,0,0.2); border-bottom: 1px solid rgba(255,255,255,0.1); border-radius: 12px 12px 0 0; cursor: move; `; uiContainer.appendChild(header); const body = document.createElement("div"); body.style.padding = "12px"; const inputStyle = ` width: 100%; padding: 8px; border-radius: 6px; background: rgba(50,50,60,0.9); color: #fff; border: 1px solid rgba(0,0,0,0.3); margin: 8px 0 2px 0; box-sizing: border-box; `; const buttonStyle = ` margin-top: 8px; width: 100%; padding: 8px; border-radius: 6px; background: rgba(60, 60, 70, 0.9); color: #fff; border: 1px solid rgba(0,0,0,0.3); cursor: pointer; `; const select = document.createElement("select"); select.style.cssText = inputStyle; Object.keys(platforms).forEach(key => { const option = document.createElement("option"); option.value = key; option.textContent = key; if (key === selected) option.selected = true; select.append(option); }); select.onchange = () => { selected = select.value; GM_setValue("discordSpoofPlatform", selected); alert(`✅ Spoofed as "${selected}". Click Reconnect to apply.`); }; const webhookInput = document.createElement("input"); webhookInput.placeholder = "https://discord.com/api/webhooks/..."; webhookInput.style.cssText = inputStyle; const reconnectBtn = document.createElement("button"); reconnectBtn.textContent = "🔄 Reconnect"; reconnectBtn.style.cssText = buttonStyle; reconnectBtn.onclick = () => { alert("📡 Reloading to reconnect..."); window.location.reload(); }; const usernameColorToggle = document.createElement("button"); usernameColorToggle.textContent = "🎨 Toggle Red Usernames"; usernameColorToggle.style.cssText = buttonStyle; usernameColorToggle.onclick = toggleUsernameHighlight; const deleteWebhookBtn = document.createElement("button"); deleteWebhookBtn.textContent = "🚫 Delete Webhook"; deleteWebhookBtn.style.cssText = buttonStyle; deleteWebhookBtn.onclick = async () => { const url = webhookInput.value.trim(); if (!url.startsWith("https://discord.com/api/webhooks/")) return alert("❌ Invalid webhook URL."); try { const res = await fetch(url, { method: "DELETE" }); if (res.ok) alert("✅ Webhook deleted successfully."); else alert(`❌ Failed to delete webhook: ${res.status}`); } catch (err) { console.error("Webhook delete error:", err); alert("❌ Error deleting webhook."); } }; const panicBtn = document.createElement("button"); panicBtn.textContent = "💣 Panic Wipe"; panicBtn.style.cssText = buttonStyle + "background: #9b1c1c; border-color: #5c0d0d;"; panicBtn.onclick = () => { alert("☠️ Nuking everything..."); if (uiContainer) uiContainer.remove(); WebSocket.prototype.send = originalSend; GM_deleteValue("discordSpoofPlatform"); for (const key in window) { if (typeof window[key] === "function" && /spoof|ui|tool/i.test(key)) { window[key] = () => {}; } } }; body.append( createLabel("📱 Platform Spoof"), select, reconnectBtn, createSubtleLabel("Reload to apply"), usernameColorToggle, createSubtleLabel("Changes username color for easier readability"), createDivider(), webhookInput, createSubtleLabel("Paste full webhook URL"), deleteWebhookBtn, createDivider(), panicBtn, createSubtleLabel("Press Shift + P to hide the menu temporarily!") ); uiContainer.appendChild(body); document.body.appendChild(uiContainer); let isDragging = false, offsetX = 0, offsetY = 0; header.addEventListener("mousedown", (e) => { isDragging = true; offsetX = e.clientX - uiContainer.offsetLeft; offsetY = e.clientY - uiContainer.offsetTop; document.body.style.userSelect = "none"; }); document.addEventListener("mouseup", () => { isDragging = false; document.body.style.userSelect = ""; }); document.addEventListener("mousemove", (e) => { if (isDragging) { uiContainer.style.left = `${e.clientX - offsetX}px`; uiContainer.style.top = `${e.clientY - offsetY}px`; } }); } function toggleUI() { if (!uiContainer) return; isVisible = !isVisible; uiContainer.style.display = isVisible ? "block" : "none"; } document.addEventListener("keydown", (e) => { const t = e.target; if (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable) return; if (e.shiftKey && e.key.toLowerCase() === "p") toggleUI(); }); window.addEventListener("load", () => { createUI(); uiContainer.style.display = "block"; isVisible = true; highlightRedUsernames(); console.log("[Spoof] Toolbox loaded. Shift+P to toggle."); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址