前端网站隐形水印的实现+zero-width-detection

前端实现水印效果的多种方案 本文介绍了几种前端水印方案,大家可以根据具体项目选择适合的方法来实现水印效果。在这个示例中,我们创建了一个Canvas元素,并使用JavaScript来绘制水印。你可以根据需要配置水印的文本、字体、颜色等属性,并使用库提供的方法进行初始化和加载。这种方法适用于需要在整个页面或特定元素上添加水印的情况,且不需要通过Canvas来绘制水印。在这个示例中,我们使用SVG(可缩放矢量图形)来创建水印。使用CSS来添加重复水印的方法是将水印图片作为背景图片,并使用。在这个示例中,我们创建了一个包含水印的容器元素。 阅读详情

1.将字符串转成二进制
函数:

// 每个字符转为二进制,用空格分隔
    const textToBinary = username => (
      username
      .split('')
      // charCodeAt 将字符转成相应的 Unicode 码值
      .map(char => char.charCodeAt(0).toString(2))
      .join(' ')
    );

textToBinary(“教师节快乐”)
在这里插入图片描述
2.将0,1转为零度字符串:

1 转换为 \u200b 零宽度字符(zero-width space)
0 转换为 \u200c 零宽度断字符(zero-width non-joiner)
其他(空格) 转换为 \u200d 零宽度连字符 (zero-width joiner)
最后使用 \ufeff 零宽度非断空格符 (zero width no-break space) 作为分隔符

const binaryToZeroWidth = binary => (
  binary.split('').map((binaryNum) => {
    const num = parseInt(binaryNum, 10);
    if (num === 1) {
      return '\u200b'; // \u200b 零宽度字符(zero-width space)
    } else if(num===0) {
      return '\u200c'; // \u200c 零宽度断字符(zero-width non-joiner)
    }
    return '\u200d'; // \u200d 零宽度连字符 (zero-width joiner)

  }).join('\ufeff') // \ufeff 零宽度非断空格符 (zero width no-break space)
);

3.最终程序:

const encode = username => {
  const binaryUsername = textToBinary(username);
  const zeroWidthUsername = binaryToZeroWidth(binaryUsername);
  return zeroWidthUsername;
};

4.转化

在这里插入图片描述
直接复制可以用unicod查看

5.解密

const zeroWidthToBinary = string => (
  string.split('\ufeff').map((char) => { // \ufeff 零宽度非断空格符 (zero width no-break space)
    if (char === '\u200b') { // \u200b 零宽度字符(zero-width space)
      return '1';
    } else if(char === '\u200c') { // \u200c 零宽度断字符(zero-width non-joiner)
      return '0';
    }
    return ' ';
  }).join('')
);
const binaryToText = string => (
  // fromCharCode 二进制转化
  string.split(' ').map(num => String.fromCharCode(parseInt(num, 2))).join('')
);
const decode = zeroWidthUsername => {
  const binaryUsername = zeroWidthToBinary(zeroWidthUsername);
  const textUsername = binaryToText(binaryUsername);
  return textUsername;
};

参考:
https://github.com/umpox/zero-width-detection

python 将视频的图片转为字符

# coding: utf8
import cv2 as cv
import os
import time
# 替换字符列表
ascii_char = list(r"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
char_len = len(ascii_char)
# 加载视频
cap = cv.VideoCapture('video.mp4')
while True:
    # 读取视频每一帧
    hasFrame, frame = cap.read()
    if not hasFrame:
        break
    # 视频长宽
    width = frame.shape[0]
    height = frame.shape[1]
    # 转灰度图
    img_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    # 缩小图片并调整长宽比
    img_resize = cv.resize(img_gray, (int(width / 10), int(height / 10)))

    text = ''
    # 遍历图片中的像素
    for row in img_resize:
        for pixel in row:
            # 根据像素值,选取对应的字符
            text += ascii_char[int(pixel / 256 * char_len)]
        text += '\n'
    # 清屏
    os.system('cls')  # mac是'clear'
    # 输出生成的字符方阵
    print(text)
    # 适当暂停一下
    time.sleep(0.03)
给你的web页面添加盲水印,附带检盲水印方案 应用场景 在一些敏感系统有的时候我们为了防止别人截图或追溯图片源头是谁发的。我们需要在页面上埋下我们的隐形水印。 开始做 埋水印 github上有很多水印的js插件,download下来一个改一改,源码见最后附录。 引入WaterMark js模块, 初始化waterMark.init(0) // 0: 默认出现显性水印和隐形水印。 1 只要隐性水印初始化waterMark.init(0) ... 阅读详情

相关推荐

[JavaScript]使用opencv.js实现基于傅里叶变换的频域水印(隐水印)

通过了解频域水印的相关知识,我理解了频域水印就是先将图片进行傅里叶变换,得到频域图,然后将水印文字加到频域图中,在将频域图转换回去得到加了频域水印的图片。

m0_51691879的博客 3271

H5实现隐形水印的一些思路

背景 最近公司有这样一个需求,H5在用户截图的时候是否能在截取的图片上携带用户信息和公司信息,以实现产品产权的追踪和定位

博哥的二进制世界 3870

浅谈前端水印

又是一个有关安全的问题。 一般情况下,我们说的水印是指图片角落上的平台用户名水印。类似于下方图片上的这种,通常只要将图片上传到平台上,平台就会在图片上嵌入水印,当然,有些平台也会提供设置是否需要显示这种水印的开关,或者设置保存的时候才会加上水印。 明水印 这种水印的实现其实是比较简单的,就是将两张图片合成一张,或者是直接在原图上绘制内容就行了: <img id="pic" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f3c3c98.

专注前端领域方向的内容 1539

前端明水印到隐水印你了解了吗

水印的目的是为了防止信息泄漏,保护版权,在很多网站里都有用到了水印,水印真的只是看到的这么简单吗?

qq_44197554的博客 6049

【电驱动】永磁同步电机工作原理及分类

永磁同步电机工作原理及分类

星Yeah 的博客 7321

CANdelaStudio实战:如何用19服务快速编辑DTC快照数据(附Excel模板)

本文详细介绍了在CANdelaStudio中利用19服务高效编辑DTC快照数据的进阶技巧。通过导出DTC池至Excel进行批量编辑,结合‘Copy from DTC Pool’功能实现配置复用,并分享了构建自定义Excel模板与字段映射的实用方法,帮助工程师将繁琐的手动配置转化为工程化的批量处理,大幅提升诊断数据库开发效率。

weixin_29230773的博客 190

隐藏式水印了解一下?你以为加水印很麻烦?

是一个基于 Canvas 的水印工具,主要用于浏览器环境下水印添加。它不仅支持 Vue 2、Vue 3,还能在 React 项目中使用,非常轻量且易于集成。提供了强大而简洁的水印解决方案,让开发者在网页上轻松添加水印。无论你需要显性水印还是隐形水印,这款工具都能满足需求。如果你正好需要这样的工具,赶快试试吧!

brizer的博客 1907

eNSP-Pro配置又丢了?手把手教你用导出功能防患于未然

本文详细介绍了eNSP-Pro配置防丢失的全套方案,包括运行时内存、虚拟存储设备和宿主机文件系统的配置存储机制,以及多维度备份策略和特殊场景下的恢复技巧。通过优化保存流程、自动化定时导出和版本化管理,帮助网络工程师有效防止配置丢失,提升工作效率。

weixin_42665725的博客 239

前端水印实现:可见水印与隐形水印

本文介绍前端水印实现方案,包含可见与隐形水印技术。可见水印采用Canvas/SVG实现全屏平铺,通过MutationObserver防止删除;SVG方案适配高DPI屏幕更清晰。隐形水幕通过LSB隐写术将信息嵌入像素最低位,实现溯源功能。文章还提供Vue指令封装方案,并指出前端水印的局限性:需配合后端权限控制,仅适用于警示和低级别溯源。最后总结了常见问题的解决方案,如DPI适配、防删除、事件穿透等。该方案适用于需要版权保护或信息溯源的Web应用场景。

hugeNO1的博客 256

告别DLTS的模糊地带:手把手教你用拉普拉斯深能级瞬态光谱(LDLTS)精准揪出半导体缺陷

本文详细介绍了拉普拉斯深能级瞬态光谱(LDLTS)技术在半导体缺陷检测中的高分辨率解决方案。相比传统DLTS,LDLTS通过拉普拉斯变换和正则化算法,将分辨率提升至1meV,有效解析复杂重叠缺陷谱,适用于硅、GaN等材料的精确缺陷分析。文章涵盖LDLTS原理、系统搭建、测量流程及工业应用案例,为半导体工艺优化提供强大工具。

weixin_29238147的博客 193

S7-1500与WinCC GroupDisplay组显示的高效配置指南

本文详细介绍了S7-1500 PLC与WinCC GroupDisplay组显示功能的高效配置方法,涵盖报警状态配置、WinCC端组显示控件设置及常见问题排查。通过实战案例和优化建议,帮助工程师快速掌握工业自动化项目中报警信息可视化的关键技术,提升生产线监控效率。

weixin_29292535的博客 440

信息隐藏-图像盲水印实现

相关知识 目前水印大抵可分为两种,可见和不可见,可见水印大多用来标记或声明版权,或防盗用冒用,但在影院等场景下,可见性水印会极大影响用户体验,所以产生了盲水印的概念。 盲水印即看不见的水印,多使用信息隐藏技术实现,基于空域或频域隐藏秘密信息,在不影响用户的感官体验下嵌入信息,且只有通过特殊的提取器才可提取。这种技术目前应用十分广泛,前些年的阿里月饼门似乎就是用了该技术,相当多的公司都采用这种方法来给外泄的秘密资料找到泄密者。但信息隐藏技术到底是一门年轻的学科,关于盲水印现成的实现方法还不是太多。 工具 虽然

写代码的小阿帆的博客 2825

CSAPP performance lab

CSAPP 深入理解计算机系统的performance Lab

weixin_46091531的博客 1249

前端HTML透明度的变化展示

前端HTML透明度的变化展示 效果图: 该图片透明度opacity从0.2装换为1的效果 代码 下面展示 代码: 鼠标移入:透明度为1,文字上浮 可以直接运行,只需要更换相应图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.

阿拉斯加头头的博客 526

Python 爬虫实战:爬取万方数据文献信息

本文介绍了基于Python爬虫技术合规获取万方数据文献信息的方法。通过分析万方数据的请求机制与反爬策略,采用requests库结合Session维持合法会话,实现了文献标题、摘要、作者等核心元数据的提取。文章详细讲解了Token验证、动态请求构造、JSON数据解析等关键技术,并提供了完整可运行代码。同时强调严格遵守《万方数据知识服务平台用户协议》,控制请求频率,仅限学术研究使用。该方案为万方数据文献信息获取提供了标准化解决方案,支持数据清洗、结构化存储及后续分析应用。

2503_91057718的博客 2132

【CASS精品教程】035:南方CASS7.1台阶画法案例大全

摘要:本文详细介绍了南方CASS7.1软件中5种台阶工具的使用方法,包括普通台阶、有边台阶、L型台阶、U型台阶和不规则台阶。重点说明各类台阶的绘制步骤和注意事项,如绘制方向(从右下角逆时针连接4个点)、台阶方向标识(白色边为下边)、台阶数自动生成不可更改等特性。同时指出高版本CASS可能存在操作差异,并配以多张示意图直观展示各类台阶的绘制过程和效果,为使用CASS7.1绘制建筑台阶提供了实用指导。(148字)

智慧空间实验室 2920

Vue3自定义指令之前端水印功能实现

前端实现水印功能

在路上`的博客 2110

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

​探秘 Web 水印技术

Web 水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印),本文将分别予以介绍,带你探秘 web 水印技术。

Huangjiazhen711的博客 1159

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

解决URL出现ZERO-WIDTH SPACE的情况

出现的现象: 一般封装的请求器报出类似于因为地址解析错误不能执行请求的错误,而打印出来的请求地址肉眼看来是正确的。这时候就应该考虑是不是出现了“没有宽度的空格”这种情况了。 出现的原因: 一般是从其他地方复制过来的一段文字(如Word,MarkDown),粘贴上之后就可能会有多一个ZERO-WIDTH SPACE的情况,它肉眼看不见。 解决方法: 对 url 进行 encodeURI(u...

显磊的博客 4183

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PDF.js特殊字体、水印加载不出来问题解决

问题描述:用PdfViewer在线阅读部分pdf文件时,部分文字加载不出来,浏览器network网络请求下locale.properties、GBK-EUC-H.bcmap这两个文件报404错误。 问题可能原因: 1.viewer.js文件内的PDFJS.cMapUrl这个字体文件路径配置错误 PDFJS.cMapUrl = '/Content/pdf.js/web/cmaps/'; PDFJS.cMapPacked = true; 2.IIS的MIME问题,像.bcmap、.svg、.woff、

qq_42434923的博客 7242

前端vue实现页面加水印文字 单个页面所有页面加水印(更新版)

在页面水印的组件化实现中,我们可以采用Vue的自定义组件方式来实现。通用水印可以定义为一个独立的Vue组件,单个页面的水印可以通过在对应页面的Vue组件中引入该通用水印组件来实现。前端vue实现页面加水印文字, 可以实现系统所有页面加水印,也可以单个页面加水印, 可更改水印颜色, 下载完整代码uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?// 第一个参数:水印文字 第二个参数: 加水印的底图,默认body 给所有页面加水印, 第三个参数:水印颜色。

chenchuang0128的博客 1206

前端水印生成方案(网页水印+图片水印)

参考链接 不能说的秘密——前端也能玩的图片隐写术 阮一峰-Mutation Observer API lucifer-基于KM水印的图片网页水印实现方案 damon-网页水印明水印前端SVG实现方案 前端水印生成方案 前段时间做某系统审核后台,出现了审核人员截图把内容外泄露的情况,虽然截图内容不是特别敏感,但是安全问题还是不能忽视。于是便在系统页面上面加上了水印,对于审核人员截图等敏感操作有一定的提示作用。 网页水印生成解决方案 通过canvas生成...

JineD的博客 7102

如何防止水印被恶意删除或者隐藏?

继上篇Vue3 实现网页背景水印功能我们了解了常见的网页水印功能是如何实现的,懂原理的都知道水印是通过在网页中添加代码绘制 DOM 元素覆盖在原有的网页上而来的,一旦你打开浏览器中的元素审查,可以通过删除元素或者在元素的样式上操作属性值,就可以用来临时屏蔽水印。为了防止作弊,我们可以利用接口 MutationObserver 对DOM元素进行监听。如果你对监听的元素进行样式属性的设置,或者...

太空编程 1752

你知道隐水印是什么吗?

隐水印技术是一种将秘密信息(如文本、图像、音频、视频等)嵌入到数字载体(如图像、音频、视频文件)中的方法,旨在使信息的存在难以察觉。其核心思想是通过微小的、不易察觉的改变来隐藏信息,而非传统加密的不可读性。常见技术包括最低有效位(LSB)替换、频域变换和统计特性修改。隐水印的主要应用包括版权保护、内容认证、隐藏通信、指纹识别和数据完整性校验。尽管隐水印与数字水印有时混用,但前者更强调信息的隐藏,后者则范围更广,可能包含可见水印。隐水印面临的挑战包括鲁棒性、不可见性、容量和安全性。总体而言,隐水印在数字版权管

lagrahhn的博客 1295

前端水印实现指南

前端水印是一种在网页内容上叠加半透明文字或图片的技术,主要用于版权保护、防截图和溯源追踪。以下是几种常见的前端水印实现方式及其优缺点分析。

liangshanbo1215的博客 3161

隐形水印嵌入技术详解

1235
上一篇: 非本质扩张,平凡扩张与中心扩张暂记
下一篇: “宏观经济学”练习题1
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值