打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JavaScript奇技淫巧:网页内容防复制

https://www.toutiao.com/article/7210335653983191612/?log_from=da8f0627becd7_1688455687538

很多时候,我们不希望自己网页上的内容被复制,比如原创内容、小说、文章等等。

在网页前端,使用JavaScript编程,似乎有不少防复制方法,比如:禁用copy事件、禁止鼠标右键菜单,等等。

但本文要介绍的,不是这些常用的方法,而是把文字变成canvas画布,画出的文字是不能被复制的。

效果展示

如下图所示,从网页中复制文件时,其中有些字是无法选中的。

复制后再粘贴,会发现缺失了一些文字:

技术原理

在指定的文字容器中,将某些文字转化成大小与文字相同的canvas(画布),并将文字画在canvas上,形成了文字+图片的组合。如此,选择文字时,图片无法选中,便实现了防复制的效果。

源码

<html>

<body>

<p id="p1">

JShaman是专业的JavaScript代码混淆平台,用于JS加密、JS混淆。<br>

</p>

<script>

//将指定文字换成canvas

function word_2_canvas(target, word,index){

var c1 = document.createElement("canvas");

//Canvas的大小

c1.width = 20;

c1.height = 20;

c1.id = "c"+index;

document.body.appendChild(c1);

var t1 = document.getElementById("c"+index).outerHTML;

c1.id = "";

document.getElementById(target).innerHTML = document.getElementById(target).innerHTML.replace(word, t1)

}

//以canvas上画出文字

function vanvas_fill_word(word,index){

var c2;

c2 = document.getElementById("c"+index).getContext("2d");

//字体和大小

c2.font = '16px Microsoft YaHei';

//在Canvas上绘制文本

c2.fillText(word, 1, 18);

}

word_2_canvas("p1","淆",1);

word_2_canvas("p1","加",2);

word_2_canvas("p1","台",3);

vanvas_fill_word("淆",1);

vanvas_fill_word("加",2);

vanvas_fill_word("台",3);

</script>

</body>

</html>

安全性提升

在上面的JavaScript源码中,可以看出哪些文字被转化成为了图片,为了防止源码分析进而被反制,可以用JShaman进行JavaScript源代码混淆加密,加密后的代码中文字等关键信息可以被隐藏。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
javascript表单验证大全,
canvas重画,解决重影问题
用flash javascript实现网页中复制数据功能 - WEB标准网站设计心得 - ...
HTML5 canvas drawImage() 方法 缩放
利用canvas将网页元素生成图片并保存在本地
QQ空间背景图片代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服