5

我对 javascript 相当陌生,我几乎整天都在查看脚本,看看是否有办法嗅探 websocket 流量以进行调试和研究,或者用我自己的简单替换 websocket。

我试过用 Chrome 过滤并使用提琴手,一切都以某种方式隐藏了流量。Wireshark 似乎抓住了一些两者都找不到的东西,但至少对不熟悉十六进制的我来说,它是无稽之谈。

但是我真的很想知道是否可以在 javascript 中扩展 Websocket 之类的东西,这样当它使用 Greasemonkey 之类的东西创建时,我可以“扩展”它,以便它继续做它应该做的事情,但也做额外的工作。

例如,是否可以在说 Greasemonkey 中扩展以下 websocket,以便 onMessage(evt) 它继续写入屏幕,但随后我可以添加警报(消息);?? 这比说看交通更可取。注意我不能更改源文件。

谷歌浏览器没有为像亚特兰蒂斯之龙这样的游戏识别网站 websocket,动作是 ajax 帖子,但聊天是一个 websocket,可以在 flash 参数中找到。

<!DOCTYPE html>

 <meta charset="utf-8" />

<title>WebSocket Test</title>

<script language="javascript" type="text/javascript">

  var wsUri = "ws://echo.websocket.org/";
  var output;

  function init()
  {
    output = document.getElementById("output");
    testWebSocket();
  }

  function testWebSocket()
  {
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) { onOpen(evt) };
    websocket.onclose = function(evt) { onClose(evt) };
    websocket.onmessage = function(evt) { onMessage(evt) };
    websocket.onerror = function(evt) { onError(evt) };
  }

  function onOpen(evt)
  {
    writeToScreen("CONNECTED");
    doSend("WebSocket rocks");
  }

  function onClose(evt)
  {
    writeToScreen("DISCONNECTED");

  }


  function onMessage(evt)

  {

    writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>');

    websocket.close();

  }



  function onError(evt)

  {

    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);

  }



  function doSend(message)

  {

    writeToScreen("SENT: " + message); 

    websocket.send(message);

  }


  function writeToScreen(message)

  {

    var pre = document.createElement("p");

    pre.style.wordWrap = "break-word";

    pre.innerHTML = message;

    output.appendChild(pre);

  }


  window.addEventListener("load", init, false);


</script>


<h2>WebSocket Test</h2>


<div id="output"></div>


</html>

我在stackoverflow中发现了这个我会用websocket替换日期吗?

Date = function (Date) { return function () { var date = clockwork.instantiate(Date, arguments); var args = arguments.length; var arg = arguments[0]; if ((args === 3 || args == 6) && arg < 100 && arg >= 0) date.setFullYear(arg); return date; } }(Date);
4

0 回答 0