很多网站都使用了字体库对数据进行加密,即页面源码中的数据与显示出来的数据不一样。html
实现的效果和昨天发布的那篇关于 X 薯中文网的效果相似,可是原理大不相同。web
在字体加密的网站中用户也是没法直接进行复制网页内容的。svg
目前有使用字体加密的网站大概有下面这些:字体
58同城,起点,猫眼,大众点评,启信宝,天眼查,实习僧,汽车之家
既然这么多的网站都采用了字体加密,那么它必定是一个有效的反爬手段,做为爬虫工程师咱们应该如何应对呢?网站
首先咱们应该先了解一下什么是字体加密。google
网页字体是一个字形集合,而每一个字形是描述字母或符号的矢量形状。加密
所以,特定字体文件的大小由两个简单变量决定:每一个字形矢量路径的复杂程度和特定字体中字形的数量。code
通俗一点,同一内容的网页字体每一个字形应该都是大同小异的,咱们能够经过比对字体文件的字形来确认映射的内容。orm
关于字体加密的描述文章实在太多了,我的建议仍是看看 Google 官方关于网页字体的文章。
https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/webfont-optimization?hl=zh-cn
接着是关于网页字体加密映射的原理图,下图来自谷雨解字:
https://guyujiezi.com/
在爬虫爬取页面的时候,页面中的代码是阴书,可是在人眼看到的是原文,这样的映射关系让爬虫没法顺利爬取到网站内容。
经过上面的字体加密原理图,咱们大概了解到字体加密的原理。
我推荐没有搞过字体加密的朋友找个比较简单的网站练手,网上写的比较多的例子是猫眼的专业版。
猫眼的字体解密文章很是多,建议没有接触过得朋友能够先本身动手试试,咸鱼也会在以后更新字体解密系列的文章。
下面是字体解密的大体流程:
先找到字体文件的位置,查看源码大概就是xxx.tff这样的文件
重复上面那个操做,将两个字体文件保存下来
用上面的软件或者网址打开,而且经过 Python fontTools 将 tff 文件解析为 xml 文件
根据字体文件解析出来的 xml 文件与相似上面的字体界面找出相同内容的映射规律(重点)
咸鱼这里直接上资源的连接。
一是查看字体的软件 FontCreator,支持 window 。
连接:https://pan.baidu.com/s/1tUznnSB3siI2rVY9Whv88A 密码:ygz9
二是打开字体的网站,适合 mac 系统的朋友使用。
先经过 cloudconvert 把字体文件转化为 svg 后再用 fontello 打开查看
http://fontello.com/ https://cloudconvert.com/ttf-to-svg
若是嫌弃上面转换太过麻烦能够用百度字体打开。
http://fontstore.baidu.com/static/editor/index.html
咸鱼推荐使用 FontCreator 以及百度字体。
打开后显示的样子与下图相似。
EOF