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

网站的加密方案

  •  
  •   hongye · 13 天前 · 1311 次点击

    有一个网站地址如下: http://xxfb.mwr.cn/sq_dxsk.html 直接看这个页面上中文都是正常的,但是如果我拷贝一些中文字段再粘贴发现就会乱码,比如页面上显示“珠江” 使用 ctrl + c 复制后,粘贴在本地的记事本上会变成 “䆔䂒”。请问这是用啥技术实现的啊?

    10 条回复    2024-09-04 08:36:20 +08:00
    jdkxnktkdkxod
        1
    jdkxnktkdkxod  
       13 天前
    特殊的字体,用来反爬的
    fulajickhz
        2
    fulajickhz  
       13 天前
    这种你试试 用 ublock 停止 javascript 说不定这功能就废了
    mringg
        3
    mringg  
       13 天前
    自己弄的字体库,一共 744 个字,自己做下映射吧
    scyuns
        4
    scyuns  
       13 天前
    好有意思 自定义了一个字典表
    78786381
        5
    78786381  
       13 天前
    502,看不到了
    hongye
        7
    hongye  
    OP
       13 天前
    500
        8
    500  
       13 天前   ❤️ 1
    要爬这个的话先请求 **http://xxfb.mwr.cn/sq_dxsk.html** 获取到 loadData() 里的 URL

    ```
    http://xxfb.mwr.cn/一级随机/二级随机
    ```

    **loadData()** 里面请求数据的 URL 是服务器动态生成的,虽然每次都不一样,但是又可以重复使用,不知道是不是忘了做频率限制,或者会偷偷后台统计?

    再从 URL 获取 JSON 数据,数据的格式是:

    ```
    "#UEO3kxleHI_1725353725381otltag䌙䅭#FontTag"
    ```

    对应

    ```
    "#{字体文件名}otltag{内容}#FontTag"
    ```

    这个字体文件只有 744 个字形,除去前后两个空白字形,有用的只有 742 个字形,可以根据字形顺序建立对照表;
    每次请求数据时服务器会动态偏移字体的 code point ,生成新的字体文件;
    根据观察每次生成的字体文件中字形顺序没有改变,而且每个字形的 code point 相差都是 2 ,所以只需要根据字体名称请求字体文件;

    ```
    http://xxfb.mwr.cn/ttf/{字体文件名}.ttf
    ```

    获取到第 1 个有用的字形的 code point ,也就是索引 1 处的 code point ,就可以根据字形顺序推导出其他字形的 code point ;

    最后把内容转换成 unicode 码位,把字形的 code point 转换成 16 进制,两边匹配一下就可以得到实际看到的内容了。
    500
        9
    500  
       13 天前
    不过用动态字体文件反爬,应当只用在金额、数量这种比较重要的数字信息上,把汉字放进去太影响性能和用户体验了
    hongye
        10
    hongye  
    OP
       12 天前
    @500 #8 感谢大佬👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   933 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:49 · PVG 03:49 · LAX 12:49 · JFK 15:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.