【问题标题】:How can I monitor a JavaScript function of a site from the client?如何从客户端监控网站的 JavaScript 功能?
【发布时间】:2021-12-19 13:10:18
【问题描述】:

我有一个网站。它使用香草 JavaScript。我可以访问使用该站点的所有客户端计算机。我的目标是运行由网站上的 JavaScript 函数提示的 shell 脚本。当然,出于安全原因(网站在使用计算机时访问计算机文件)是不可能的。

所以我的另一个想法是:我想创建一个软件,以某种方式监控当前打开的网站,并监控是否调用了某个函数(当然是已知的),然后这个程序可以运行一个 shell 脚本。

示例:我在我的网站上的 JavaScript 中有一个名为 IncomingCall() 的函数。如果调用IncomingCall(),我希望软件在客户端计算机上持续运行并运行example.sh。该网站在服务器上,监控软件和 shell 脚本在我可以访问的客户端计算机上(没有安全隐患,没有恶意)。

所以我的问题是,我可以为此目的使用什么语言或技术,如果这可能的话,以及如何实现?我知道这是相当模糊的,但我不知道如何做到这一点。

编辑:我想运行一个 shell 脚本,因为我想在站点上来电时将连接到计算机的电视的输入更改为 HDMI。

【问题讨论】:

  • 嗨 tkrisz2,你的 shell 脚本在执行时到底做了什么?也许可以在 JavaScript 中编写相同的功能,因此您不需要执行外部 shell 脚本。
  • 你好第谷。当站点上有来电(Jitsi Meet)时,我想将连接到计算机的电视的输入更改为 HDMI。所以我认为使用 JavaScript 是不可能的。

标签: javascript shell


【解决方案1】:

由于您可以访问所有客户端,因此您可以在每个客户端上运行本地服务器。使用 JavaScript 中的 XMLHttpRequest,您可以连接到该服务器并发送 HTTP 请求。当服务器收到这样的请求时,它可以执行 shell 脚本。

Here 是一个关于如何在 Python 中运行服务器的简单示例。如果您更喜欢其他语言,您可以寻找其他示例,那里有很多。甚至可能作为 shell 脚本,这取决于您正在运行的系统。

如果发起连接的站点托管在其他域上,则默认情况下在 JavaScript 中无法连接到 localhost。您需要配置本地服务器以允许这样的连接 (Mozilla explanation)。请参阅 Python 中的示例 here 如何进行配置。

下面是一个 JavaScript 示例,说明如何启动这种连接。

  let errFunc = async function (e) {
    alert("Could not connect to the server. Please check your internet connection");
  }

  let func = function (e) {
    if (this.status == 200) {
      alert("Succes");
    } else {
      alert("Error retrieving file '" + this.responseURL + "' from the server.");
    }
  }

    let req = new XMLHttpRequest();
    req.addEventListener("error", errFunc);
    req.addEventListener("timeout", errFunc);
    req.addEventListener("load", func);


  req.open("GET", "http://localhost/runScrip", true);
  req.send();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多