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

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

  •  
  •   alwayshere · 87 天前 · 15053 次点击
    这是一个创建于 87 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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

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

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

    因此这一方法不可行。
        219
    xiangyuecn   86 天前
    参考 #197 的 demo 挺屌的 不过稍微眼花,基本怎么消耗 cpu
        220
    fengmumu   86 天前
    加上按键检测,毕竟截图的的快捷键就那几个,如果发现快捷键被触发,就全局变色或者模糊,拼图的话是个好思路 的说 但是一旦图片多了真的比较消耗资源了,真想搞图片的咋都搞了,意见还是换个思路,利用起来别人的截图,毕竟堵不如疏
        221
    owenqibyzw   86 天前
    如果获取原图之后用 js 生成一张 60 帧的 gif 给用户看呢, 加上禁用下载, 也顺便可以解决 CPU 占用的问题... 不知道可不可行
        222
    orm   86 天前
    如果是按照 26 楼的方式,利用人眼残影,组合的图片,先对电脑录屏,再把录制好的视频播放速度加到每秒 1000 帧,再从录屏视频中截图,这个可行吗?
        223
    internelp   86 天前
    这个方案能防止直接调试获取图片地址吗?
    1  2  3  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2140 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 21ms · UTC 04:49 · PVG 12:49 · LAX 20:49 · JFK 23:49
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1