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

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

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

    网站上的图片不想让用户下载,又不想打水印影响图片美观,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  
    opengps
        201
    opengps  
       2018-09-19 15:21:12 +08:00
    手动翻页,目前最好的方案是啥?我看了好多没找到。。
    Norie
        202
    Norie  
       2018-09-19 15:31:36 +08:00 via Android
    JS Yes!
    sonyxperia
        203
    sonyxperia  
       2018-09-19 15:35:47 +08:00
    javascript 是万能的
    rebeccaMyKid
        204
    rebeccaMyKid  
       2018-09-19 15:40:38 +08:00
    @dallaslu 这个开发者工具不是只能直接看到 cat.png 么
    lmmortal
        205
    lmmortal  
       2018-09-19 15:42:19 +08:00 via Android
    @shintendo 可以屏幕录制视频 导入 ps,然后去掉时间轴 合并可见图层搞定
    snw
        206
    snw  
       2018-09-19 15:44:19 +08:00
    有没有人研究过汇丰银行电子回单的印章?


    这电子回单是个网页,我所知道的是印章图案是由像素点阵组成的,但没研究出为什么打印之后印章图像质量就变差了(无论纸质打印还是 PDF 打印)
    ZSeptember
        207
    ZSeptember  
       2018-09-19 15:55:14 +08:00
    @shintendo 很有想法的思路啊。感觉经验限制住了我的想象力。。
    KuroNekoFan
        208
    KuroNekoFan  
       2018-09-19 16:13:04 +08:00
    你说真的吗?我觉得#26 明明是开玩笑啊...
    zdnyp
        209
    zdnyp  
       2018-09-19 16:15:06 +08:00
    别的不多说,把网站放出来,看看能坚持多久图片被扒下来...
    vissssa
        210
    vissssa  
       2018-09-19 16:15:28 +08:00
    mark 一下
    leido
        211
    leido  
       2018-09-19 16:32:34 +08:00 via Android
    每秒截图 26 或者 32 张,图片叠加起来可破楼主办法。
    @KuroNekoFan
    opengps
        212
    opengps  
       2018-09-19 16:40:07 +08:00
    你如果真的用了这个高速切换的办法,那么会被误以为挖矿的,我曾经用 js 做过一个员工抽奖,cpu 消耗挺高的
    aChen8085
        213
    aChen8085  
       2018-09-19 16:41:43 +08:00
    好想看看最终效果
    leido
        214
    leido  
       2018-09-19 16:42:42 +08:00 via Android
    或者控制台可以在线改 js,破解方法千千万
    pkoukk
        215
    pkoukk  
       2018-09-19 17:03:24 +08:00
    楼主我觉得你是个人才。
    1、人眼虽然有视觉暂留,但是 24 帧是远远不够的,不信你可以试试
    2、cpu 消耗爆炸,没有几个人能跑得动你的网站。
    既然要求这么高了,还不如做个桌面软件去
    pkoukk
        216
    pkoukk  
       2018-09-19 17:03:59 +08:00
    另 PS:我觉得你的职位应该是即将挨打的产品经理
    night98
        217
    night98  
       2018-09-19 17:44:58 +08:00
    26 那个也不对啊,只要你前端能拼出来,人家也可以反推出来并根据资源拼出来这张图啊。
    Exin
        218
    Exin  
       2018-09-19 17:45:43 +08:00
    #26 @shintendo 应该是在说笑,乍看起来挺有道理所以大家都信了,但实际上不可行——

    大家常说的 24fps 只是让人眼感觉画面“流畅”的帧数下限,人眼有能力捕捉 24 帧的每一帧,才有可能将每一帧连接起来,在脑内产生画面的连贯性。而这里需要达到的效果其实是“足以让人眼感觉不到视觉残留”的帧数。应该是在百帧以上。

    不妨计算一下:
    假设这个帧数为 f,
    那么每经过 1 单位的时间,每单位区域应当在 1/f 时间以内不可见。
    故每一时刻画面都有 (f - 1) / f 的区域是可见的。
    当 f > 100, (f - 1) / f > 99% ,几乎整个画面都是可见的。

    因此这一方法不可行。
    xiangyuecn
        219
    xiangyuecn  
       2018-09-19 18:08:24 +08:00
    参考 #197 的 demo 挺屌的 不过稍微眼花,基本怎么消耗 cpu
    fengmumu
        220
    fengmumu  
       2018-09-19 20:14:54 +08:00
    加上按键检测,毕竟截图的的快捷键就那几个,如果发现快捷键被触发,就全局变色或者模糊,拼图的话是个好思路 的说 但是一旦图片多了真的比较消耗资源了,真想搞图片的咋都搞了,意见还是换个思路,利用起来别人的截图,毕竟堵不如疏
    owenqibyzw
        221
    owenqibyzw  
       2018-09-20 09:56:37 +08:00
    如果获取原图之后用 js 生成一张 60 帧的 gif 给用户看呢, 加上禁用下载, 也顺便可以解决 CPU 占用的问题... 不知道可不可行
    orm
        222
    orm  
       2018-09-20 10:02:19 +08:00
    如果是按照 26 楼的方式,利用人眼残影,组合的图片,先对电脑录屏,再把录制好的视频播放速度加到每秒 1000 帧,再从录屏视频中截图,这个可行吗?
    internelp
        223
    internelp  
       2018-09-20 10:57:31 +08:00
    这个方案能防止直接调试获取图片地址吗?
    gycgod16
        224
    gycgod16  
       2019-07-02 23:21:03 +08:00
    问题的重点是只防君子,不防小人。只要说的过去,劝得了大众和客户就行,
    gitHber
        225
    gitHber  
       2020-08-31 09:37:28 +08:00
    @lelsetsuna 好像是 drm 阻止的,但是不是很懂原理
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2820 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:24 · PVG 21:24 · LAX 06:24 · JFK 09:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.