【问题标题】:Is there any way to detect Ctrl + S?有什么方法可以检测到 Ctrl + S?
【发布时间】:2021-11-04 16:05:43
【问题描述】:

我需要编写一个不允许用户查看代码的页面。 为了捕捉上下文菜单打开,我想使用 JS 事件。要打开网络控制台,我想使用这个:https://sindresorhus.com/devtools-detect/ 并关闭页面。如何赶上储蓄?抓到Ctrl+S就够了吗?

【问题讨论】:

  • “我需要编写一个不允许用户看到代码的页面。” 那是不可能的。我可以下载并使用 wget、curl 或 Postman 分析您的代码。
  • 即使你能捕捉到这些,想要获取代码的人也可以简单地从命令行使用curlwget。或者他们可以在浏览器访问页面时使用数据包捕获工具。
  • 在标题中写 css 是有可能的,但它很古怪而且非常有限。
  • sindresorhus.com/devtools-detect 不适用于浮动开发工具。打开开发工具,打开右上角的菜单,选择浮动窗口。
  • @lith.al 请修正你的问题标题,看起来你不是在问如何检测ctrl+s

标签: javascript html events browser savefiledialog


【解决方案1】:

不,捕获ctrl + s 只会解决用户使用键盘快捷键的情况(请务必记住它是 cmd+s 用于 Mac)。如果他们使用File Menu 或上下文菜单的“另存为”操作,他们仍将获得保存网页对话框。我从未听说过有什么方法可以诱捕它们。

你永远无法阻止用户看到你的代码,如果浏览器可以下载并执行它,用户就可以看到它,无论是通过curl、数据包嗅探器还是 DevTools。

您能做的最好的事情就是混淆您的代码,任何有足够技能的人都可以将其转换为非混淆代码。

【讨论】:

  • 用户无法使用 curl。这是密码
  • @lith.al 如果用户可以在浏览器中打开一个 URL,同一个用户可以用 curl 打开同一个 URL 并查看代码。
  • @jabba 不。用户可以在浏览器中打开 URL 并查看密码表单。插入密码ajax更改页面后。在 curl 中是无法插入密码的。
  • @lith.al 用户可以嗅探网络,他们会知道您的 AJAX 请求/响应的内容,他们可以调用 curl。相信我,你在试图保护客户端的应用程序时陷入了困境,众所周知,如果有人决心阅读你的代码,这种方法就行不通
  • @lith.al 你将如何处理像 Puppeteer、Selenium 或 PhantomJS 这样的脚本浏览器?您只需打开网站,输入凭据并将当前代码存储在文件中,而无需打开 DevTools。您将如何处理 Chrome 和 Firefox 中的远程调试?我可以在一个浏览器中打开一个网站,并通过远程调试端口与另一个浏览器连接。该网站甚至不知道第二个浏览器,但第二个浏览器可以读取代码。这不是高级黑客。这绝对是基本的网络调试。
【解决方案2】:

我们可以监听keydown。如果正在按下 ctrlKey 和 S 键,请执行此操作。 preventDefault 正在阻止打开保存页面对话框。

document.addEventListener('keydown', (e) => {
  if (e.ctrlKey && e.key === 's') {
    e.preventDefault();
    console.log('pressing ctrl+s')
  }
});

但是阻止用户查看您的代码?那是一个不同的故事。我们可以检测到 Ctrl+S,但不能阻止他人看到您的代码。

【讨论】:

  • 我想你错过了问题的重点:“如何捕捉保存?捕捉 Ctrl+S 就足够了吗?”我认为 OP 理解他们可以捕获 ctrl+s 但想知道他们是否可以阻止用户保存网页。最终,他们的目标是隐藏我们大多数人都无法理解的代码。
  • 它没有回答问题,如果您删除代码以“教”用户如何捕获ctrl+s,我将删除反对票,但在这种情况下,您的回答并没有说太多我会删除它。
猜你喜欢
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
相关资源
最近更新 更多