andybest
V2EX  ›  问与答

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

  •  
  •   andybest · Apr 24, 2015 · 4015 views
    This topic created in 4069 days ago, the information mentioned may be changed or developed.
    当然这无法根本杜绝被采集,只是稍微增加一下采集难度而已
    不考虑搜索引擎收录
    最简单的例如后台输出 unicode 代码,前台 js 再动态转换为实际的文字
    各位有什么想法?
    21 replies    2015-04-26 21:46:16 +08:00
    Daniel65536
        1
    Daniel65536  
       Apr 24, 2015   ❤️ 9
    比较彻底的一个组合是:
    1. 利用ttx和脚本生成一个打乱了字符glyph与unicode对应关系的字体。
    比如把 U+6211我 和 U+4F60你 替换,这样当输入“你”时,显示出来的字符是“我”,当输入“我”时,显示出来的字符是你。
    内容是 “你我” 的文字用这种字体显示出来是“我你”
    2. 用之前的随机替换码表加密你要显示的东西。
    3. 用web font加载这个字体。

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

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

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

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

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

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

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

    这种方法当然是有办法破解的,用不着ocr,你要是对字体技术有了解的话,应该能想到非常简单的解法,甚至也能想到解放的防御方法。毕竟你面对的这个加密文件的原文就摆在你面前啊。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 14:41 · PVG 22:41 · LAX 07:41 · JFK 10:41
    ♥ Do have faith in what you're doing.