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

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

  •  
  •   alwayshere · Sep 18, 2018 · 38298 views
    This topic created in 2978 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
    opengps
    Sep 19, 2018
    201
    手动翻页,目前最好的方案是啥?我看了好多没找到。。
    Norie
    Norie
    Sep 19, 2018 via Android
    202
    JS Yes!
    sonyxperia
    sonyxperia
    Sep 19, 2018
    203
    javascript 是万能的
    rebeccaMyKid
    rebeccaMyKid
    Sep 19, 2018
    204
    @dallaslu 这个开发者工具不是只能直接看到 cat.png 么
    lmmortal
    lmmortal
    Sep 19, 2018 via Android
    205
    @shintendo 可以屏幕录制视频 导入 ps,然后去掉时间轴 合并可见图层搞定
    snw
    snw
    Sep 19, 2018
    206
    有没有人研究过汇丰银行电子回单的印章?


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

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

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

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