在网页已有WebSocket基础上额外监听消息
当前为
// ==UserScript==
// @name WebSocket消息额外监听脚本
// @namespace http://yournamespace.com/
// @version 0.15
// @description 在网页已有WebSocket基础上额外监听消息
// @author Your Name
// @match https://www.milkywayidle.com/*
// @grant none
// @license MIT
// ==/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 = `<strong>WebSocket Messages:</strong><div id="ws-messages" style="margin-top: 5px;"></div>`;
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!');
})();