V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
andybest
V2EX  ›  问与答

防止被采集,有什么方案可以对网页显示的文字做一下加密?

  •  
  •   andybest · 2015-04-24 12:50:58 +08:00 · 3512 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。
    当然这无法根本杜绝被采集,只是稍微增加一下采集难度而已
    不考虑搜索引擎收录
    最简单的例如后台输出 unicode 代码,前台 js 再动态转换为实际的文字
    各位有什么想法?
    21 条回复    2015-04-26 21:46:16 +08:00
    Daniel65536
        1
    Daniel65536  
       2015-04-24 13:21:20 +08:00   ❤️ 9
    比较彻底的一个组合是:
    1. 利用ttx和脚本生成一个打乱了字符glyph与unicode对应关系的字体。
    比如把 U+6211我 和 U+4F60你 替换,这样当输入“你”时,显示出来的字符是“我”,当输入“我”时,显示出来的字符是你。
    内容是 “你我” 的文字用这种字体显示出来是“我你”
    2. 用之前的随机替换码表加密你要显示的东西。
    3. 用web font加载这个字体。

    这样显示出来的内容和复制到的内容完全不相干,可以达到最佳的效果。采集者如果试图还原对应关系,只能手动录入这个对应关系。

    这个做法比直接转图片优秀的地方在于这玩意对html/css/js透明,可以轻松用css完成响应式设计。
    缺点么,每次要先下载个10多mb的字体算不算?

    //有一种传统的pdf加密技术就是这么做的。
    NewYear
        2
    NewYear  
       2015-04-24 14:14:01 +08:00   ❤️ 1
    百度知道的方法是,随机生成图片代替部分文字
    andybest
        3
    andybest  
    OP
       2015-04-24 14:32:34 +08:00
    @Daniel65536 谢谢,有没类似现成的程序?没有这么彻底的也可以,用于参考
    zealic
        4
    zealic  
       2015-04-24 14:38:05 +08:00
    WebGL
    clino
        5
    clino  
       2015-04-24 14:58:13 +08:00
    "最简单的例如后台输出 unicode 代码,前台 js 再动态转换为实际的文字"
    这个是木有问题的,做出来也不难,但是这种对搜索引擎不友好哈
    EchoChan
        6
    EchoChan  
       2015-04-24 16:23:41 +08:00
    @clino 那个360doc 怎么做到的?
    dong3580
        7
    dong3580  
       2015-04-24 16:34:41 +08:00
    @clino
    一点用都没有,有现成的框架可以直接得到想要的编码~~~并且这种方案对于搜索引擎也不好。

    @andybest
    加个302重定向,
    <meta http-equiv="refresh" content="3;url=http://xxx">
    可以稍微对付点小爬虫,要是真想爬你,那些小把戏没用的。不要做无谓的抵抗哈。
    clino
        8
    clino  
       2015-04-24 16:55:01 +08:00
    @EchoChan 360doc做到什么?

    @dong3580 我其实木有做过这种采集,但照理想还是有点用吧,应该用能跑javascript的采集方式才能拿到内容,木有内置浏览器的采集工具估计就会比较麻烦
    当然要js部分写得很动态或者混淆过,如果太固定的话应该也很容易搞定哈

    做这种采集一般都用什么工具阿?
    EchoChan
        9
    EchoChan  
       2015-04-24 18:09:21 +08:00
    @clino 360doc 里面的内容也不能复制,但是搜索引擎可以搜索到。
    clino
        10
    clino  
       2015-04-24 18:12:16 +08:00
    @EchoChan 不能复制但是你用查看源代码是可以看到的,这种没办法防采集吧?
    估计禁掉javascript就能复制了
    FrankFang128
        11
    FrankFang128  
       2015-04-24 18:23:42 +08:00 via Android
    用 CSS content
    processzzp
        12
    processzzp  
       2015-04-24 18:46:02 +08:00 via Android
    @EchoChan 我一般都是右键在Google中搜索选中的内容,然后直接复制搜索框。个人认为这么做意义不大,一下就能破解。
    ooh
        13
    ooh  
       2015-04-24 18:54:36 +08:00
    1.数据用ajax加载,数据请求带上验证
    2.直接发图片
    tabris17
        14
    tabris17  
       2015-04-24 18:59:30 +08:00
    用canvas输出文字
    auzeonfung
        15
    auzeonfung  
       2015-04-24 20:37:37 +08:00
    FLASH渲染文字
    Septembers
        16
    Septembers  
       2015-04-24 20:41:58 +08:00
    @Daniel65536 可以用HTML5 Application Cache解决字体每次加载的问题
    Daniel65536
        17
    Daniel65536  
       2015-04-24 21:32:08 +08:00
    @andybest 我知道有基于这个实现的pdf加密软件,但是没有流传出来,只有加密后的pdf流传出来了。许久前网上就有关于如何破解这种加密的讨论,基本费力不讨好。

    @Septembers 这种技术其实一般用在打包好的电子书、pdf、app里,如果放在网页上,除非网页特别有价值,否则还是比较反人类。因为面前有一半的浏览器在加载web font的时候block住加载进程。
    haiyang416
        18
    haiyang416  
       2015-04-24 21:56:46 +08:00 via Android
    见过用 table 分栏的,一段话分可能分别在不同 table 里,然后用 CSS 对齐,复制采集的文字都是乱序的,简直丧心病狂。
    xenme
        19
    xenme  
       2015-04-24 23:56:42 +08:00
    直接截图,然后OCR,比这些恢复步骤简单多了。
    至少现在印刷体文字的识别率非常高了。
    clino
        20
    clino  
       2015-04-26 21:00:48 +08:00 via Android
    @Daniel65536 把webfont 显示以后做ocr得对应关系以后再转我觉得比楼上直接 ocr更好
    Daniel65536
        21
    Daniel65536  
       2015-04-26 21:46:16 +08:00 via iPhone
    @clino
    ocr不一定很精确:
    ocr效果最好的中文字体是宋体方正书宋,这是因为国内书籍出版社一般用方正书版排版。
    第二好的是黑体方正某种黑,理由类似。
    第三名是启体方正启体简体,因为起点小说网vip章节用的他,各大更新组拼命改进技术也不过93%左右的识别率。
    剩下的字体识别率就非常堪忧了。不针对性改进,恐怕难以上50%。

    这种方法当然是有办法破解的,用不着ocr,你要是对字体技术有了解的话,应该能想到非常简单的解法,甚至也能想到解放的防御方法。毕竟你面对的这个加密文件的原文就摆在你面前啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5383 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:47 · PVG 15:47 · LAX 23:47 · JFK 02:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.