• 请不要在回答技术问题时复制粘贴 AI 生成的内容
alwayshere
V2EX  ›  程序员

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

  •  
  •   alwayshere · Sep 18, 2018 · 36625 views
    This topic created in 2800 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Sep 18, 2018
    阻止用户对着屏幕拍照没意义,那样拍出来的照片就不是高清照片而是“枪版照片”了
    Supplement 2  ·  Sep 19, 2018
    感谢各位的冷嘲热讽,此题正确答案出来了,#26 楼是标准答案,在#26 楼基础上,我准备后端用 imagick 把图片打乱,前端用 css sprite 拼凑,js setInterval 显示残缺的图像,时间间隔随机,但必须控制显示帧数在 24 帧以上,这样几乎可以屏蔽绝大部分用户截图了
    225 replies    2020-08-31 09:37:28 +08:00
    1  2  3  
    opengps
        201
    opengps  
       Sep 19, 2018
    手动翻页,目前最好的方案是啥?我看了好多没找到。。
    Norie
        202
    Norie  
       Sep 19, 2018 via Android
    JS Yes!
    sonyxperia
        203
    sonyxperia  
       Sep 19, 2018
    javascript 是万能的
    rebeccaMyKid
        204
    rebeccaMyKid  
       Sep 19, 2018
    @dallaslu 这个开发者工具不是只能直接看到 cat.png 么
    lmmortal
        205
    lmmortal  
       Sep 19, 2018 via Android
    @shintendo 可以屏幕录制视频 导入 ps,然后去掉时间轴 合并可见图层搞定
    snw
        206
    snw  
       Sep 19, 2018
    有没有人研究过汇丰银行电子回单的印章?


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

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

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

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