有没有一种方法, js 阻止用户截图? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
alwayshere
V2EX    程序员

有没有一种方法, js 阻止用户截图?

  alwayshere 2018 年 9 月 18 日 36047 次点击
这是一个创建于 2718 天前的主题,其中的信息可能已经有所发展或是发生改变。

网站上的图片不想让用户下载,又不想打水印影响图片美观,js 已经阻止了右键保存和拖拽,但是用户一截图又相当于保存图片了,有没有什么方法可以阻止用户截图?

第 1 条附言    2018 年 9 月 18 日
阻止用户对着屏幕拍照没意义,那样拍出来的照片就不是高清照片而是“枪版照片”了
第 2 条附言    2018 年 9 月 19 日
感谢各位的冷嘲热讽,此题正确答案出来了,#26 楼是标准答案,在#26 楼基础上,我准备后端用 imagick 把图片打乱,前端用 css sprite 拼凑,js setInterval 显示残缺的图像,时间间隔随机,但必须控制显示帧数在 24 帧以上,这样几乎可以屏蔽绝大部分用户截图了
225 条回复    2020-08-31 09:37:28 +08:00
1  2  3  
fishliu
    1
fishliu  
   2018 年 9 月 18 日
没有
hasbug
    2
hasbug  
   2018 年 9 月 18 日   1
需求有点可怕,无法实现的,截图属于桌面软件和系统的事情了,不属于浏览器宿主环境的动作,拦截不了。
glouhao
    3
glouhao  
   2018 年 9 月 18 日 via Android
或许需要个什么病毒
hasbug
    4
hasbug  
   2018 年 9 月 18 日   7
监听快捷键,一按就关掉页面
opengps
    5
opengps  
   2018 年 9 月 18 日   23
这个需求不像是技术人员提出的
Qlccks2
    6
Qlccks2  
   2018 年 9 月 18 日   4
假设这个实现了,下个需求就变成了组织用户手机拍照了吧。
singerll
    7
singerll  
   2018 年 9 月 18 日 via Android
把用户截图键扣了。
neptuno
    8
neptuno  
   2018 年 9 月 18 日 via Android
上帝给用户的截图键,,,,你怎么能阻止呢
metrxqin
    9
metrxqin  
   2018 年 9 月 18 日   1
这一届程序员真不行,连跟随用户手机壳变换 APP 主题都做不到。
scg16
    10
scg16  
   2018 年 9 月 18 日   1
鼠标点住 5 秒,阅后即焚。
af463419014
    11
af463419014  
   2018 年 9 月 18 日   17
我认为可以再加个功能,js 阻止用户对着屏幕照相
misaka19000
    12
misaka19000  
   2018 年 9 月 18 日
做不到的,就算你能禁止用户截图,用户还是能读取显存里面的数据
fuye
    13
fuye  
   2018 年 9 月 18 日
再加个需求:js 阻止用户打开手机拍照功能
jadec0der
    14
jadec0der  
   2018 年 9 月 18 日
说到底,这是用户的电脑,还是你的电脑?
AV1
    15
AV1  
   2018 年 9 月 18 日
我跟你说,你认为做到的“已经阻止了右键保存和拖拽”,只是防初级小白用的,很轻松就能破。
adeweb
    16
adeweb  
   2018 年 9 月 18 日 via iPhone
可以试试这样:浏览器激活时,监听截图的快捷键事件,onpressdown 时用临时图片覆盖;若浏览器失焦,图片也用临时图片覆盖,再激活时再恢复。
我没试过。
mokeyjay
    17
mokeyjay  
   2018 年 9 月 18 日   2
提供一种思路不知道行不行:检测到页面失去焦点时,显示一块黑色遮罩层遮住整个页面
mnhkahn
    18
mnhkahn  
   2018 年 9 月 18 日
可以换一种思路,通过 js 在页面里面加水印信息
HeyWeGo
    19
HeyWeGo  
   2018 年 9 月 18 日   2
然后用户直接 print to pdf~
weizhen199
    20
weizhen199  
   2018 年 9 月 18 日
打水印咯,然后注册用户,手机绑定用户。。。之类的才给高清无码咯
GuryYu
    21
GuryYu  
   2018 年 9 月 18 日
@mokeyjay 现在的有的截图软件有延时截图功能, 可以在保持焦点的情况下截图
LxExExl
    22
LxExExl  
   2018 年 9 月 18 日
没有一个能打的

如果技术能做到 就不需要 NDA 和各种协议性文件了
viator42
    23
viator42  
   2018 年 9 月 18 日   3
DMM 的做法是只要浏览器窗口失去焦点就把图片盖住,没法调截屏软件
ostholz
    24
ostholz  
   2018 年 9 月 18 日
CMD SHIFT 4 哈
binaryify
    25
binaryify  
   2018 年 9 月 18 日
@mokeyjay 控制台一打开啥都看到了
shintendo
    26
shintendo  
   2018 年 9 月 18 日   56
高速随机开 /关图片的像素点,每一时刻屏幕上显示的都是不完整图像,靠用户的视觉残影看图。
qwertty01
    27
qwertty01  
   2018 年 9 月 18 日
@DOLLOR 小白还是占了多数的
orangeade
    28
orangeade  
   2018 年 9 月 18 日
android 有 API 可以禁止截图,不知道 Chrome 有没有开放给 web
keventseng
    29
keventseng  
   2018 年 9 月 18 日
阻止截图之前,请先解决用另一部手机拍照的可能性。
编写程序开启摄像头监控,当画面出现类似手机、相机等设备时,自动爆炸……(手动狗头
xjvf
    30
xjvf  
   2018 年 9 月 18 日
又来骗我钱?
orancho
    31
orancho  
   2018 年 9 月 18 日 via Android
DRM API 了解一下
liuxey
    32
liuxey  
   2018 年 9 月 18 日
截图工具千千万,防不住,阅后即焚吧
kY8mbXW833Lu28xn
    33
kY8mbXW833Lu28xn  
   2018 年 9 月 18 日 via Android
占楼同问,有没有办法阻止用户拍照,图片一拍照就相当于保存图片了,滑稽:)
AV1
    34
AV1  
   2018 年 9 月 18 日 via Android   4
我觉得,现有最好的方法是,在图片上加一些不影响看图的隐形水印,记录用户的实名信息。如果将来图片遭到非法使用,可借助这些隐形水印,反过来追查滥用的源头。并告知用户这点,也有震慑作用。
jowan
    35
jowan  
   2018 年 9 月 18 日   1
你的右键屏蔽方法已经阻止了一大部分小白
剩下来的都是真想要图的 你要相信 他们有一万种方法来荡你的图
截图工具 N 多种啊 各种快捷方式还不一样 有的是浏览器插件 而且绝大部分还支持点击按钮截图
这让我想到了 每当有新电影上映时第二天网上流传的各种抢先版 各种录制(:滑稽
jason19659
    36
jason19659  
   2018 年 9 月 18 日
不让用户看就不能下载和截图了
likuku
    37
likuku  
   2018 年 9 月 18 日 via iPhone
能被看到即被盗图,不放图 /关闭网站,只做线下体验服务就可了。

只要你放出来客户可以在线看到足够大的图,大不了我弄个 5K 显示器全屏浏览加系统级截屏。

即便系统截屏还不行,那么还可以 HDMI 线旁接专业视频采集卡 2 采集盒,常见民用产品采集 4K 信号轻松。
nearhan
    38
nearhan  
   2018 年 9 月 18 日   3
换个思路:用 js 阻止老板截图(掩耳盗铃大法),手动滑稽:)
t6attack
    39
t6attack  
   2018 年 9 月 18 日
“阻止用户对着屏幕拍照” 其实是有意义的。
你以为那些渣画质 “澳门神话大赌场”是怎么来的?镜头对着屏幕“破解”来的。
vvvivvv
    40
vvvivvv  
   2018 年 9 月 18 日
拦截快捷键没什么卵用,用个定时截图工具就能破解,每隔一秒自动截图,不需要按任何键,而且浏览器也不会失去焦点
Junichi
    41
Junichi  
   2018 年 9 月 18 日
要不这样 必须让鼠标在图片的随意一个像素点上以 0.5s/次的频率一直点击,不点击就不显示?
SorcererXW
    42
SorcererXW  
   2018 年 9 月 18 日
@scg16
@adeweb
@mokeyjay
启动截图的瞬间, 截图软件会直接锁定屏幕图像, 等不到页面作出反应
img src="https://cdn.v2ex.com/gravatar/3b198446b72d1e5a3b0090f106a75f3c?s=48&d=retro" class="avatar" border="0" align="default" alt="sampeng" data-uid="19005" />
    43
sampeng  
   2018 年 9 月 18 日   9
alert("请注意!!!已定位您的物理住址,截图会有核弹头打击")
xenme
    44
xenme  
   2018 年 9 月 18 日 via iPhone
而且拖拽可以直接在新窗口显示图片,没有 js,直接右键另存了
psychoo
    45
psychoo  
   2018 年 9 月 18 日
图片要按住某一个键盘上的按键才显示
或者加强,要鼠标位于图片上方且按住键盘按键才显示

可以一定程度降低截图和拍照的可能性(认真
likuku
    46
likuku  
   2018 年 9 月 18 日 via iPhone
真要想阻止盗版,参考下著名在线商业图库站点呗…

或者,低清在线预览,高清只卖博物馆级艺术纸印制带钞票级别防伪印记和序列号并限量版的复制品(当前摄影艺术品销售就是这个模式简化版)
ReVanTis
    47
ReVanTis  
   2018 年 9 月 18 日
yiqiao
    48
yiqiao  
   2018 年 9 月 18 日
加水印就完事啦
likuku
    49
likuku  
   2018 年 9 月 18 日 via iPhone
@psychoo 专业截屏软件,很早就支持自动截屏+隐藏鼠标光标
povvoq
    50
povvoq  
   2018 年 9 月 18 日 via Android   2
每次显示图片的 1/4,频率达到 24 帧以上,看起来是静止的图片其实一直在闪。截图的瞬间只能看到 1/4(其实我也不懂 js 不知道能不能做到辣)
moln
    51
moln  
   2018 年 9 月 18 日
还用截图吗?图片在路由器就拿到了
tuzcwish
    52
tuzcwish  
   2018 年 9 月 18 日
就算你阻止截屏了你还能阻止审查元素?
sanggao
    53
sanggao  
   2018 年 9 月 18 日
直接给你禁用 js,有啥用?
sanggao
    54
sanggao  
   2018 年 9 月 18 日
复制图片路径,在新窗口打开 你还能管得了?
zdnyp
    55
zdnyp  
   2018 年 9 月 18 日
应该是伪需求,禁止用户截取的目的是防止用户盗图?
1、对于需求原图、高清保真的,增加下载的限制条件,操作方法很多,具体看你的目的
2、如果能接受截图的,估计也不是啥专业搞的,个人爱好随他去了
可以多关注技术流派的...目前应该没有什么办法“在给用户查看权限,却不让其下载”的方法,某八戒网发个需求,分分钟原图到手...
另外加水印简单粗暴
wclebb
    56
wclebb  
   2018 年 9 月 18 日
https://chrome.google.com/webstore/detail/nnjjahlikiabnchcpehcpkdeckfgnohf
搞定,什么?截图?设计师才不会做这种「有损图片」的事的……
shiny
    57
shiny  
PRO
   2018 年 9 月 18 日
怎么阻止用户 ctrl+p
xianxiobo
    58
xianxiaobo  
   2018 年 9 月 18 日
看了楼上的回复,感觉好像还真的可以,人的视觉是有缺陷的,可以利用人的视觉缺陷这方面来做。
zhangyichent
    59
zhangyichent  
   2018 年 9 月 18 日
@DOLLOR 是不是再上个链 2333
javascr1pt
    60
javascr1pt  
   2018 年 9 月 18 日
要不,干脆别显示得了
qiayue
    61
qiayue  
PRO
   2018 年 9 月 18 日
windows 系统一直自带一键截屏功能,只要按下键盘的 PrtSc 键就可以全屏截图,这个你禁止不了吧
murmur
    62
murmur  
   2018 年 9 月 18 日
还不如好好研究数字水印
PulpFunction
    63
PulpFunction  
   2018 年 9 月 18 日   1
只有左手键盘按着 esc f12 和截图快捷键 等等 最好五个
右手按着鼠标左键 右键以及滚轮

才给显示图片
longyujin9
    64
longyujin9  
   2018 年 9 月 18 日
要不只显示鼠标周围多少像素的内容,鼠标移到哪就显示哪,这样用户就没法完整的截图了(逃
youxiachai
    65
youxiachai  
   2018 年 9 月 18 日
想想..js 可以突破浏览器...这不就是木马了吗...
lzvezr
    66
lzvezr  
   2018 年 9 月 18 日 via iPhone
感觉你已经做的够多了,普通用户保存不了就可以了
真的你做出来超 NB 的东西,我外接一个采集卡就行了,你总不能拦截显示设备的电信号吧?
dingyi342555
    67
dingyi342555  
   2018 年 9 月 18 日 via Android
我录屏
Telegram
    68
Telegram  
   2018 年 9 月 18 日 via iPhone   1
f12 就 gg
Mohanson
    69
Mohanson  
   2018 年 9 月 18 日 via Android
f12, 禁用 js
Telegram
    70
Telegram  
   2018 年 9 月 18 日 via iPhone
干脆你自己做个 app,用来浏览你的图片,这样就可以轻松实现,用 js,玄。

参考 netflix 的截图黑屏功能
bolide2005
    71
bolide2005  
   2018 年 9 月 18 日   1
@shintendo #26 破解方法:在 1 秒内截 24 张图,然后叠加
cjpjxjx
    72
cjpjxjx  
   2018 年 9 月 18 日
@pkokp8 多截几张,合并一下可破
panda
    73
panda  
   2018 年 9 月 18 日 via Android
视频都阻止不了下载,何况截图。
Ayun
    74
Ayun  
   2018 年 9 月 18 日
你只要有图,我 F12 都能把你给拿下来
其实最好的方法就是给游客看的图片打水印或清晰度不是很高
然后注册成为会员就可以查看高清无码大图
rocketman13
    75
rocketman13  
   2018 年 9 月 18 日
你是外星来的产品吧。。。。
Sapp
    76
Sapp  
   2018 年 9 月 18 日
其实你的阻止右键保存都是不靠谱的,最靠谱的还是打水印,真那么在乎水印丑的公司也不至于干出这种事。
CODEWEA
    77
CODEWEA  
   2018 年 9 月 18 日
我提供一个 让用户必须打开摄像头 然后 ai 识别到摄像头就自动关闭
F281M6Dh8DXpD1g2
    78
F281M6Dh8DXpD1g2  
   2018 年 9 月 18 日
这东西防君子不防小人的,最不济我去浏览器缓存里面找......
wangxiaoaer
    79
wangxiaoaer  
   2018 年 9 月 18 日 via Android
一看就是技术人员思维,喜欢钻牛角尖。

目前的 Js 屏蔽复制等一定程度已经满足需求了,极客不在讨论范围内的,领导也不关心。
andylsr
    80
andylsr  
   2018 年 9 月 18 日
截图快捷键难到不都是自定义的么 你知道用户会设什么样的快捷键???
whypool
    81
whypool  
   2018 年 9 月 18 日
从产品设计规避

比如会员看大图什么的

另外,js 不是万能的
phpcxy
    82
phpcxy  
   2018 年 9 月 18 日   1
交钱给马化腾,QQ 截图检测到是你的网站就自动发出 FBI warning
wulin
    83
wulin  
   2018 年 9 月 18 日
产品经理思路广 233
xmgit
    84
xmgit  
   2018 年 9 月 18 日
还是用缩略图吧,或者模糊到一定程度
付费账户,才输出高清 url
gluttony
    85
gluttony  
   2018 年 9 月 18 日
网页改成 Electron。Electron 的 API - win.setContentProtection(enable) 可以阻止小白用户截屏。
hoythan
    86
hoythan  
   2018 年 9 月 18 日
打上不可见的数字水印
holystrike
    87
holystrike  
   2018 年 9 月 18 日
@phpcxy 难道还要播放另一家公司那荡气回肠的音乐?
sambawy
    88
sambawy  
   2018 年 9 月 18 日
开发外设,只能用特殊的眼镜才能看到图片
pecopeco
    89
pecopeco  
   2018 年 9 月 18 日
我泰拳九段,你出招吧
DoveAz
    90
DoveAz  
   2018 年 9 月 18 日 via Android
成立法务部门
BinRelay
    91
BinRelay  
   2018 年 9 月 18 日 via Android
你就算把本地截图禁用了 我开个虚拟机用宿主机截图怎么办 难道你网站还能跳出三界外
Nostalgiaaaa
    92
Nostalgiaaaa  
   2018 年 9 月 18 日
之小时候玩红警盗版,安装包有一句话:安装盗版软件您的机器可能会执行自毁程序,吓得我点击安装就跑下楼了。这个同理,搞点水印写句标语:您对图片的任何不正当利用我们都会通过技术手段追踪到您,我们有实力强大的法律团队等等 balabala
ShundL
    93
ShundL  
   2018 年 9 月 18 日
浏览器有焦点时,监听截图快捷键,失去焦点或鼠标时,骚操作隐藏页面或弹层提示?
lee88688
    94
lee88688  
   2018 年 9 月 18 日 via Android
@mokeyjay 这个肯定不行,截图按键并不能让页面失焦
fulvaz
    95
fulvaz  
   2018 年 9 月 18 日
可惜 Clipboard 还处于实验阶段

不然实现还是有可能的,只是不太实用
yhxx
    96
yhxx  
   2018 年 9 月 18 日
真想要你的图片,页面上做的再多,抓个包也拿到了
防小白你做的已经够了
ShundL
    97
ShundL  
   2018 年 9 月 18 日
@ShundL 自评 还是有一万种方法截到图。。。
lee88688
    98
lee88688  
   2018 年 9 月 18 日 via Android
@liuxey 调试模式下都能解决,感觉没什么比较好的方法让他们看不到
jsthon
    99
jsthon  
   2018 年 9 月 18 日
开个玩笑!劫持 Ctrl+Alt+A 快捷键,做一个假的截图界面,然后把用户框选的内容发送到服务器。

(看看这帮小子想截点啥呢.....)
98jiang
    100
98jiang  
   2018 年 9 月 18 日
人家录像不就解决了吗
1  2  3  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2899 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 86ms UTC 14:42 PVG 22:42 LAX 06:42 JFK 09:42
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86