// ==UserScript== // @name WebSocket消息额外监听脚本 // @namespace http://yournamespace.com/ // @version 0.15 // @description 在网页已有WebSocket基础上额外监听消息 // @author Your Name // @match https://www.milkywayidle.com/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { 'use strict'; // 创建消息显示区域 const createMessageDisplay = () => { const messageBox = document.createElement('div'); messageBox.id = 'ws-message-box'; messageBox.style.position = 'fixed'; messageBox.style.top = '10px'; messageBox.style.left = '10px'; messageBox.style.width = '300px'; messageBox.style.height = '150px'; messageBox.style.resize = 'both'; // 允许鼠标缩放 messageBox.style.overflow = 'auto'; messageBox.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'; // 半透明背景 messageBox.style.color = '#fff'; messageBox.style.zIndex = '9999'; messageBox.style.padding = '10px'; messageBox.style.fontSize = '14px'; messageBox.style.fontFamily = 'monospace'; messageBox.style.wordBreak = 'break-word'; messageBox.style.border = '1px solid rgba(255, 255, 255, 0.5)'; // 白色边框 messageBox.style.borderRadius = '5px'; // 圆角 messageBox.style.boxShadow = '0px 2px 5px rgba(0, 0, 0, 0.5)'; messageBox.innerHTML = `WebSocket Messages:
`; document.body.appendChild(messageBox); }; // 将消息添加到显示区域 const appendMessage = (message) => { const messagesContainer = document.getElementById('ws-messages'); if (messagesContainer) { const messageElement = document.createElement('div'); messageElement.textContent = message; messagesContainer.appendChild(messageElement); // 确保新消息可见 messagesContainer.scrollTop = messagesContainer.scrollHeight; } }; // 初始化消息显示区域 createMessageDisplay(); // 保存原始的 WebSocket 构造函数 const OriginalWebSocket = window.WebSocket; // 重写 WebSocket 构造函数 window.WebSocket = function (...args) { const ws = new OriginalWebSocket(...args); // 监听消息事件 ws.addEventListener('message', (event) => { console.log('WebSocket Message:', event.data); appendMessage(event.data); // 将消息显示在页面上 }); return ws; }; // 保留 WebSocket 的其余属性和方法 window.WebSocket.prototype = OriginalWebSocket.prototype; console.log('WebSocket hijacking initialized with resizable message display!'); })();