Scenexe Socket Fiddler

Scenexe socket fiddler. Modify incoming and outgoing packets by writing functions for incoming and outgoing.

目前为 2023-01-07 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/457775/1135824/Scenexe%20Socket%20Fiddler.js

  1. // ==UserScript==
  2. // @name Scenexe Socket Fiddler
  3. // @namespace ScenexeSocketFiddler
  4. // @version 0.1
  5. // @description Scenexe socket fiddler. Modify incoming and outgoing packets by writing functions for incoming and outgoing.
  6. // @author discordtehe
  7. // @match https://*.scenexe.io
  8. // @require https://greasyfork.org/scripts/457386-scenexeutils/code/ScenexeUtils.js?version=1134854
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. window.incoming = (data)=>{return data};
  13. window.outgoing = (data)=>{return data};
  14.  
  15. WebSocket.prototype.addEventListener = new Proxy(WebSocket.prototype.addEventListener, {
  16. apply: function (target, scope, args) {
  17. if (args[0] === 'message') {
  18. args[1] = new Proxy(args[1], {
  19. apply: function(ftarget, fscope, fargs) {
  20. var decoded = decode(new Uint8Array(fargs[0].data));
  21. decoded = incoming(decoded);
  22. if (decoded != undefined)
  23. fargs[0] = new MessageEvent('message', {data: encode(decoded)})
  24. let fdata = ftarget.apply(fscope, fargs);
  25. return fdata;
  26. }
  27. })
  28. }
  29. let data = target.apply(scope, args);
  30. return data;
  31. }
  32. })
  33.  
  34. WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
  35. apply: function (target, scope, args) {
  36. var decoded = decodeInverse(new Uint8Array(args[0])); //decodeInverse because this data has been already encoded by scenexe's main.js
  37. decoded = outgoing(decoded);
  38. if (decoded != undefined)
  39. args[0] = encodeInverse(decoded);
  40. let data = target.apply(scope, args);
  41. return data;
  42. }
  43. })