├── README.md └── script.user.js /README.md: -------------------------------------------------------------------------------- 1 | # WebSocket-Data-Viewer 2 | View data from any WebSocket within your browser using JavaScript 3 | -------------------------------------------------------------------------------- /script.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name WebSocket Data Viewer 3 | // @namespace https://github.com/Lemons1337/WebSocket-Data-Viewer 4 | // @version 0.1.2 5 | // @description try to take over the world! 6 | // @author Lemons 7 | // @match *://*/* 8 | // @run-at document-start 9 | // @require https://cdnjs.cloudflare.com/ajax/libs/msgpack-lite/0.1.26/msgpack.min.js 10 | // @grant none 11 | // ==/UserScript== 12 | 13 | window.msgpack = msgpack; 14 | 15 | window.wsData = {}; 16 | 17 | function parseData(data) { 18 | 19 | if (data instanceof DataView) { 20 | data = new Uint8Array(data.buffer); 21 | } else if (data instanceof ArrayBuffer) { 22 | data = new Uint8Array(data); 23 | } else { 24 | try { 25 | data = JSON.parse(data); 26 | } catch (err) {} 27 | } 28 | 29 | try { 30 | data = msgpack.decode(data); 31 | } catch (err) {} 32 | 33 | return data; 34 | } 35 | 36 | window.WebSocket = new Proxy(WebSocket, { 37 | construct(target, args) { 38 | var ws = window.wsHook = new target(...args); 39 | 40 | var domain = new URL(ws.url).origin; 41 | 42 | window.wsData[domain] = { 43 | received: [], 44 | sent: [] 45 | }; 46 | 47 | var send = ws.send; 48 | 49 | ws.send = function(data) { 50 | var ret = send.apply(this, arguments); 51 | 52 | data = parseData(data); 53 | window.wsData[domain].sent.push(data); 54 | 55 | console.log('Outgoing ->', data); 56 | 57 | return ret; 58 | } 59 | 60 | ws.addEventListener('message', function(message) { 61 | var data = message.data; 62 | 63 | data = parseData(data); 64 | window.wsData[domain].received.push(data); 65 | 66 | console.log('Incoming ->', data); 67 | }); 68 | 69 | return ws; 70 | } 71 | }); 72 | --------------------------------------------------------------------------------