实现用自定义字体来反爬

网络爬虫

浏览数:1,176

2019-5-10

研究过自定义字体反爬后动手实现一遍

准备

1.准备一个字体库,本案例使用的字体库本墨悠圆的链接:http://www.zhaozi.cn/html/fonts/china/benmo/2019-02-01/25085.html为输入方便重命名成:bmyy.ttf

2.从字体库提取字符需要用到fonttools

fonttools安装:

pip install fonttools

使用方法:

pyftsubset <字体文件> --text=<需要的字形> --output-file=<输出>

还有些其他工具,见资料:https://github.com/fonttools/fonttools

提取数字1234567890作为要加密的字符:

pyftsubset D:\font\bmyy.ttf --text=“1234567890”

注意命令在CMD执行的,会在字体相同文件夹生成一个提取出来的字体bmyy.subset.ttf 

对字体修改

网站只能上传svg格式,需要把ttf转成svg,链接:https://cloudconvert.com/ttf-to-svg

http://fontello.com/创建字体,将svg直接拖入网页

选择0~9字符

选customize codes对字符重新编码

unicode可以随便改,但需要记住unicode和数字的对应关系

预览见数字上面一栏,修改完成后下载新字体,字体在font文件夹里。

fontello其他用法见:https://github.com/fontello/fontello/wiki/How-to-create-my-own-font

测试

自定义的新字体,数字用unicode替代了

用@font-face要定义字体的名称如new_font,然后定义字体文件的url。

<style>
@font-face { font-family:'new_font';
  src: url('D:/font/new_font.woff') ,url('D:/font/new_font.eot'); /* IE9 */ }
.new_font 
{
  font-family:myFirstFont;
}
</style>

写一个html事例

<html>
    <head>
        <title>new font</title>
        <meta charset="utf-8" lang="zh">
        <style>
            @font-face { 
                font-family: 'new_font'; 
                src: url('D:/font/new_font.woff') 
            }
            .new_font { font-family: "new_font"; }
        </style>
    </head>
    <body>
        <div>
            <span class="new_font">啦啦啦&#xe800;&#xe801;&#xe802;&#xe803;&#xe804;&#xe805;&#xe806;&#xe807;&#xe808;&#xe809;</span>
        </div>
    </body>
</html>

在浏览器上显示正常

右键检查,数字部分变成方块

 

作者:神一样了