考试周来袭,iwrite 英语教学平台禁止粘贴,程序员如何应对?

2024-06-11 12:08:58发布    浏览126次    信息编号:74909

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

考试周来袭,iwrite 英语教学平台禁止粘贴,程序员如何应对?

转眼间,假期已经过去快半年了

早上起床,看到考试周又到了,各科期中作业都在各自的平台上发布了,各种乱七八糟的科目让人烦不胜烦,首先这里

郑重声明:我的黑眼圈纯粹是因为熬夜学习造成的,和群交无关,欢迎大家和我交朋友。

以英语教学平台为例,补一下之前漏掉的英语作文,一点击输入框就弹出禁止粘贴的提示框,emmm,这都大学了,师生连这点基本的信任都没有吗?

不过,作为一个准程序员,这个问题对我来说并不难。编程的本质是处理信息,编程的意义是提高效率,编程的乐趣在于解决问题。既然今天遇到了这个问题,那就泡杯茶,慢慢解决这个bug吧。

为啥我粘贴不了?

首先我们要明白ctrl+c复制的内容为什么不能用ctrl+v粘贴呢?通过前端知识的学习,知道网页上的消息弹框和鼠标行为都是通过 来控制的。所以在网页上禁止粘贴,其实就意味着网页禁止鼠标右键的粘贴行为。

查了资料后发现还真是这样,下面这段是开启或者关闭网页某项功能的语句,很显然在这样的平台的Js文件中,paste函数是被当成false来处理的,如果你在网站开发中也想在自己的网页中添加这么恶心的功能,那么只要在Js代码中输入下面的代码就可以了。

script type=text/javascript
// 禁止右键菜单
document.oncontextmenu = function(){ return false; };
// 禁止文字选择
document.onselectstart = function(){ return false; };
// 禁止复制
document.oncopy = function(){ return false; };
// 禁止剪切
document.oncut = function(){ return false; };
// 禁止粘贴
document.onpaste = function(){ return false; };
/script

从技术角度来说,可以直接在前端页面找到 . = (){ false; }; 语句,将其返回值改为 true。但是大部分网页对鼠标都实现了动态 Js 事件,所以先否定了这个思路。那么只能通过禁用粘贴功能来跳过禁用粘贴的语句了。

开始修复错误

既然知道原因是因为粘贴功能被限制了,那么解决这个bug的思路就很清晰了,只要禁用浏览器,问题就解决了。

等等,真的禁用就这么简单吗?其实还真是,禁用就相当于把前端验证关了。编程界有一句话叫:前端验证防君子,后端验证防小人。就是说前端验证的安全性为0,而后端验证的安全性固若金汤。

前端验证一般是为了增加用户体验,但是禁止粘贴功能这种体验很隐蔽,很烦人;而重要的验证,比如登录用户名、密码等重要信息,则全部交给后端,通过后端技术进行验证,前者减轻了服务器压力,后者更加安全,两者结合起来,妙不可言。

举个例子,假设有一个简单的用户登录功能,我们只做了前端验证。那么用户可以通过浏览器控制台按F12键手动修改前端代码,手动更改前端验证规则或者直接关闭。这时候就算输入了错误的密码,也能登录成功。究其原因,还是缺乏更安全的后端验证。

幸运的是,禁用粘贴功能仅由前端内容控制。下面的方法通过禁用它解决了这个问题。

解决方案

首先,在需要粘贴的页面上按F12打开控制台

然后在控制台页面按F1打开控制台设置

在控制台设置页面上找到并选中该框。

此时该功能已被禁用,页面的粘贴功能已恢复,赶紧将自己的文章粘贴到这里吧。

提交后,我成功获得了81分的评分,所以我猜测该页面的计时功能并没有被机器评分考虑在内,所以大家可以放心使用。

结论

上面的解决方案其实适用于某些网站内容无法复制的情况,比如某网站,复制文字需要付费,通过禁用它,也可以复制大段文字。通过解决这个学习小问题,你会发现,无论是前端还是后端,其实都是很有意思的!

提醒:请联系我时一定说明是从奢侈品修复培训上看到的!