网站所有者可以查看控制台中运行的客户端吗?

Posted

技术标签:

【中文标题】网站所有者可以查看控制台中运行的客户端吗?【英文标题】:Can website owner see what client run in console? 【发布时间】:2021-10-11 16:59:46 【问题描述】:

我有一个刷新脚本,它每 5 秒自动点击一个按钮。 它看起来像这样:

setInterval(function() 
  document.getElementsByClassName("buttonclass")[0].click();
, 5000);

如果我将此脚本放入检查元素/控制台并运行它,网站所有者可以看到它吗? 站点的所有者可以查看控制台中正在运行的脚本,这些脚本是由用户/客户端注入到网站的吗? 如果是,网站的所有者如何看到它?

【问题讨论】:

【参考方案1】:

我可能认为这里的答案是“这取决于你做什么,但通常不是”。您可以谈论这些事情几个小时,但简单地说:当您“访问”一个网站时,您向一个响应各种数据的 Web 服务器发出 HTTP 请求。您的浏览器使用这些数据来呈现网站。您所做的更改或运行脚本等都发生在您的浏览器中。例如,如果您更改按钮背景颜色,则此更改仅发生在您的机器上。但从技术上讲,一个网站可以以某种方式编码,即对 DOM 的每一次更改都将被报告回后端(例如通过 fetch),因此有可能,例如,一个网站可以跟踪有多少一秒钟内你按下一个按钮或类似的东西。但是,您在控制台中输入的内容,除非它不与 DOM 或任何其他脚本交互,否则所有者永远无法读取,因为它与网站无关,而是与您的浏览器有关(例如,如果您键入控制台中的“1+1”,所有者不会看到)。

除了在技术上可以跟踪用户对网站的一些(但不是全部)活动或更改这一事实之外,默认情况下,如果不以这种方式编码,则网站所有者无法看到您的内容正在使用您请求的网站版本。

【讨论】:

【参考方案2】:

javascript 不提供允许网页查看控制台中发生的一切的 API。所以回答你标题中的问题:不,那是不可能的。至少,不是直接的。

理论上,有很多方法可以检测是否运行了特定代码。例如,您可以封装原生的setInterval 函数,并在有人触发它时向服务器发送一些 AJAX 请求。

这是一个小例子:

(function() 
  const nativeSetInterval = window.setInterval;
  window.setInterval = (...args) => 
    console.log("Someone ran the setInterval function...");
    nativeSetInterval(...args);
  
)();
Open the console, be sure to select the right (stacksnippets.net) frame, and execute <code>setInterval<code>.

<code>setInterval(() => console.log('I run every second.'), 1000);</code>

然而,这种情况不太可能发生。更有可能的是,单击该按钮会触发对网站服务器的一些调用,该服务器具有一些日志记录。如果日志记录显示某个操作在很长一段时间内恰好每 5 秒执行一次,那么他们很容易得出这不是手动完成的结论。

【讨论】:

【参考方案3】:

据我所知,您无法直接查看用户是否正在输入和使用开发者控制台,也就是说,如果您每 5 秒单击一次按钮,您就可以检测到这种行为。因此,您无法直接看到人们在开发控制台中输入的内容和内容,但在某些情况下您可以间接看到

【讨论】:

以上是关于网站所有者可以查看控制台中运行的客户端吗?的主要内容,如果未能解决你的问题,请参考以下文章

你可以通过 Python 控制台交互地运行 PySimpleGUI 函数吗?

我们可以将IE控制台从开发人员工具保存到文件吗?

我可以控制 Docker 映像中绑定安装卷的所有者吗?

我可以在 blazor 中使用 Autorest 客户端吗

我可以从其他网站呈现表单吗

Web网站服务