面试官:怎么禁止用户复制?

前言

今天在刷知乎,看到一篇非常棒的文章,想复制其中一段给妹子,结果提示“禁止转载内容不支持复制”,开玩笑,这点小伎俩能拦得住我?于是起身打开笔记本电脑尝试起来,不看不知道,一看有门道。顺手写篇文章记录下。

面试官:怎么禁止用户复制我们网页中的内容

青铜段位:阻止默认事件法

包括但不限于阻止copy事件,mouse事件(阻止选区产生),阻止key事件(阻止键盘操作)等等。

document.addEventListener('copy', e => {
    e.preventDefault()
})

例子:blog.csdn.net/secketl/art… 未登录的csdn

面试官挑眉:"用户按F12禁用JavaScript,阁下又当如何应对?"

黄金段位:CSS 幻术

本质上就是用css让用户无法区选到对应的内容,从而不能产生复制。

.anti-copy {
    user-select: none;
    -webkit-user-select: none; 
    position: relative;
}
.anti-copy::after {
    content: "已启动防复制结界";
    position: absolute;
    right: -120px;
}

面试官微笑:"我在控制台删掉::after伪元素,阁下幻术不攻自破,并且无法区选用内容的户体验实在太差了"

钻石段位:字符映射

这就是我今天遇到的知乎的方案。通过字体文件对字体做映射,实现展示出来的内容和实际dom的内容不一致。

真实的DOM内容就是一串乱序的中文,所以即便你通过了复制的方式拿到的内容也是无意义的内容。

似乎知乎会对特定文章生成一个字体映射的包,通过这种方式可以有效的阻止用户复制粘贴该内容。

例子:知乎禁止转载文章。

面试官思索许久:"我只要拿到映射的字体包,把乱序的内容复制出来,再进行映射处理,阁下如何应对"

王者段位:自定义渲染

内容选区等都进行自定义渲染,接管所有操作。

该例子通过svg绘制内容,区选的实际上是svg绘制出来的,并且接管了选区等绘制。

例子:WPS 在线文档

面试官面露难色:"那我只能截图AI识图了"

:我***的,这工作我不要了。

后续

HR:恭喜你通过了我们的面试,你期望薪资多少?

:招聘上写15-20k,我要个18k不过分吧?

HR:这样吧,公司这边只能给到15k,我希望你能和公司一起成长,并不是看重眼前的工资。

:我先考虑考虑。(要不是行情不好,这饼我是一点都不想吃)

(技术大厂,15-35K的机会不香吗?)

——转载自:土豪码农

#面试时最害怕被问到的问题#
全部评论
这个场景导师很常见啊,有的面试就爱问场景题
点赞 回复 分享
发布于 01-31 19:08 陕西
我好像很久以前在掘金看到过类似的文章
点赞 回复 分享
发布于 01-28 17:50 湖北

相关推荐

01-27 14:49
门头沟学院 Java
它回复 短期内(1-3年):不太可能被完全取代Java后端开发涉及的东西太复杂了——系统架构、业务逻辑、性能优化、安全性、与其他系统集成、处理遗留代码、在各种约束下做权衡。这些需要深度理解业务、技术债务、团队协作,AI现在还做不到这个程度。但你的工作方式会被彻底改变:写常规代码的部分会被大幅加速 - CRUD操作、单元测试、重复性代码模式,AI已经能写得很好调试和理解代码会更快 - 你可以让AI解释复杂的遗留代码初级开发者的价值会下降 - 如果你的工作主要是"按需求写简单接口",那风险较大真正的威胁不是AI直接替代你,而是:会用AI的开发者替代不会用的 - 一个熟练使用AI工具的开发者可能顶三个传统开发者公司需要的开发者总数可能减少 - 如果团队效率提高3倍,可能就不需要那么多人了你应该做什么?现在就开始深度使用AI工具 - GitHub Copilot、Claude、Cursor等,让它们成为你日常工作流的一部分往上走 - 系统架构、技术决策、业务理解这些更难被替代别只会写代码 - 理解业务价值、能跟非技术人员沟通、能做技术决策的人更安全保持学习 - 新技术、新框架,AI也在进化,你也得跟着进化同意这个观点,与AI接轨,保持同步!
当你问AI“你会取代我的...
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务