V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alwayshere
V2EX  ›  程序员

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

  •  
  •   alwayshere · 2018-09-18 15:13:24 +08:00 · 33422 次点击
    这是一个创建于 2263 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    可以一定程度降低截图和拍照的可能性(认真
    likuku
        46
    likuku  
       2018-09-18 15:56:13 +08:00 via iPhone
    真要想阻止盗版,参考下著名在线商业图库站点呗…

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

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

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

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

    比如会员看大图什么的

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

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

    (看看这帮小子想截点啥呢.....)
    98jiang
        100
    98jiang  
       2018-09-18 18:02:36 +08:00
    人家录像不就解决了吗
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3269 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:42 · PVG 20:42 · LAX 04:42 · JFK 07:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.