前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字体加密 | 字体加密初认识

字体加密 | 字体加密初认识

作者头像
咸鱼学Python
发布2019-10-16 10:04:11
6.1K0
发布2019-10-16 10:04:11
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python
字体加密初认识

不少网站都使用了字体库对数据进行加密,即页面源码中的数据与显示出来的数据不同。

实现的效果和昨天发布的那篇关于 X 薯中文网的效果类似,但是原理大不相同。

Python爬虫进阶必备 | X薯中文网加密分析

在字体加密的网站中用户也是无法直接进行复制网页内容的。

目前有使用字体加密的网站大概有下面这些:

代码语言:javascript
复制
58同城,起点,猫眼,大众点评,启信宝,天眼查,实习僧,汽车之家

既然这么多的网站都采用了字体加密,那么它一定是一个有效的反爬手段,作为爬虫工程师我们应该如何应对呢?

首先我们应该先了解一下什么是字体加密。

什么是字体加密?

网页字体是一个字形集合,而每个字形是描述字母或符号的矢量形状。

因此,特定字体文件的大小由两个简单变量决定:每个字形矢量路径的复杂程度和特定字体中字形的数量。

通俗一点,同一内容的网页字体每个字形应该都是大同小异的,我们可以通过比对字体文件的字形来确认映射的内容。

关于字体加密的描述文章实在太多了,个人建议还是看看 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 文件与类似上面的字体界面找出相同内容的映射规律(重点)
  • 在 Python 代码中把找出的规律实现出来,让你的代码能够通过这个规律还原源代码与展示内容的映射(这句话比较抽象,可以之后结合代码文章再读一遍)
字体解密相关资源

咸鱼这里直接上资源的链接。

一是查看字体的软件 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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字体加密初认识
  • 什么是字体加密?
  • 如何处理字体加密?
  • 字体解密相关资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档