目录

THE BEGIN

一 什么是字体反爬

二 如何解密

1.人工解密

2.工具解密

三 建立映射关系

四 解密


THE BEGIN

网页数据爬取可以简单分为三步:抓取页面,分析页面,存储数据。其中第一二步最为头疼,因为每个站点各有特色,你要不断检查网页结构寻找其规律,更不用说现在各种各样的反爬虫手段了。

一般来说,大多数网站会从三方面反爬虫:用户请求,如请求头检测;用户行为,如限制IP短时间频繁访问;网站加载方式,如Ajax异步加载。

今天来看看另一种常见反爬手段:字体反爬。

一 什么是字体反爬?

在这里有一个例子【实习僧】

大学生找实习求职招聘网站 | 实习僧​www.shixiseng.com

进入官网,打开开发者模式,可以观察到关键信息在页面上显示正常,但是源码是乱码

在这里,源代码中展示的并不是纯粹的数字,而是在页面使用了font-face定义了字符集,并通过unicode去映射展示。这对于正常访问的用户没有影响,因为浏览器会加载css中的font字体为用户渲染好,而对于爬虫来说却极其不友好,因为爬取下来的关键信息都是乱码。这在一定程度上起到了反爬虫的作用,因为数据被加密了!

那么,对于这种字体反爬该怎么处理呢?

二 如何解密

正如前文所说,反爬是通过字符集建立映射关系,将正常信息加密成一串乱码。那么首先,我们要找到这些映射关系在哪。

右键查看网页源码,查找font-face,可以看到字体信息密密麻麻一长串。

这些,就是我们所需要的信息了,接下来就是如何解密了。

在这里有两种方法可以解密

1. 人工解密

这种方法最简单,如果需要寻找的字符映射不多(如获取薪资,只有数字0-9)则可以通过观察网页寻找字符映射关系。当样本足够多时,你就可以自己建立一个映射表。

不过这种方法不能长期使用,网站一旦更新字体映射就会失效,需要重新找规律。

2.工具解密

把上面的font-face这一段字符串爬取出来,可以看到这些字体源是用了base64加密,可以用base64库进行提取,把提取后的字体文件保存到shixi.ttf中。(ttf是字体的一种类型)

ttf文件无法直接打开,可以用软件FontCreator打开,然后查看每一个字符对应的编码。

这里我们可以看到该网站加密了数字,字母、中文,足足100个,像第一种方法手动找规律肯定是行不通的。

当然,还有万能的python库,fontTools,可以用python代码来操作ttf文件。

这里我们用这个库来进行字体解密

三 建立映射关系

ttf文件无法直接打开,我们可以将其转换成xml文件,并观察有没有什么规律。

观察,cmap结点下存在对应关系,code所示即为网页上源码形式。但是用getBestCmap()函数获取后又变成十进制的数了,所以需要用hex()函数将10进制整数转换成16进制,以字符串形式表示成原来的行。另外第一行的map没有用,需要删除才能继续解析。

第一次替换

第三次替换

到此还没结束,观察站点,每个数据都有前缀&#x,所以我们还需进行前缀替换。至此,映射关系就建立好了。

部分代码

四 解密

得到映射关系后,我们就可以用映射表对获取到的HTML源码进行清洗替换,之后就可以用爬虫正常爬取数据了。

这里观察页面结构,中规中矩,可以考虑用Beautiful Soup爬虫库进行爬取

之后,就得到我们想要的数据了,清洗汇总就可以进行进行数据分析了。

最后

爬虫不易

前端工程师也不易

大家记得要文明爬虫

也欢迎大家关注我的公众号【数据自留地】

每周更多爬虫、数据分析干货

前端电子表数字字体_爬虫:如何优雅应对字体反爬相关推荐

  1. js拆字_分图程序 _制作个人字体_手写字制作ttf字体方法

    js拆字_分图程序 _制作个人字体_手写字制作ttf字体方法 前言 FontForgeBuilds制作ttf FontForgeBuilds制作个人字体 Adobe_Fireworks_CS5批量转换 ...

  2. 【爬虫进阶】常见的反爬手段和解决方法(建议收藏)

    爬虫进阶:常见的反爬手段和解决思路 1 服务器反爬的原因 2 服务器常反什么样的爬虫 3 反爬虫领域常见的一些概念 4 反爬的三个方向 5 常见基于身份识别进行反爬 5.1 通过headers字段来反 ...

  3. Python爬虫技巧!网站有反爬?我们有selenium!

    Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. 文章最后有免费的Python资料,获取方式,关注头条号,私信回复资料获取下载链 ...

  4. truetype字体怎么转换成普通字体_如何创建自己的字体和编辑TrueType字体 | MOS86

    Wouldn 在这篇文章中,我显然,付费的程序往往具有更多的功能和更好的界面来处理字体,但也有一些很好的免费的. 免费字体编辑器 Let有几百万字体可以在线下载或购买,所以如果你 创建新字体的最简单方 ...

  5. matplotlib的默认字体_浅谈matplotlib默认字体设置探索

    控制默认字体的设置 根据官方文档https://matplotlib.org/tutorials/text/text_props.html#default-font可知: The base defau ...

  6. css 中文文字字体_使用CSS的网络字体

    css 中文文字字体 CSS | 网络字体 (CSS | Web fonts) Web fonts allow people to use fonts that are not pre-install ...

  7. 链家网页爬虫_爬虫实战1-----链家二手房信息爬取

    经过一段机器学习之后,发现实在是太枯燥了,为了增添一些趣味性以及熟练爬虫,在之后会不定时的爬取一些网站 旨在熟悉网页结构--尤其是HTML的元素,ajax存储,json:熟练使用pyspider,sc ...

  8. 一入爬虫深似海,反爬技术你知多少?

    文章目录 1. 习惯性唠叨点啥 2. 什么造就了爬虫 3. 为什么要反爬虫 4. 反反爬虫的权重 5. 高级的反爬手段 6. 爬虫的发展方向 7. 致谢 1. 习惯性唠叨点啥   最近很久一段时间没有 ...

  9. 五 Pathon爬虫之抓包与反爬以及反爬解决方案

    一 介绍 1.1 服务器反爬的原因 爬虫占总PV(PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv)比例较高,这样浪费钱(尤其是三月份爬虫). 三月份爬虫是个什么概念呢?每年的三月份我们会 ...

最新文章

  1. 062_JavaScript异常
  2. TensorFlow------学习篇
  3. 深入理解Spark 2.1 Core (七):Standalone模式任务执行的原理与源码分析
  4. 专业学习频道,欢迎关注数锐学堂
  5. 关于Java的十件事
  6. java什么时候创建进程,Java创建进程
  7. 扫描式SSD用于公式检测,代码已开源
  8. extract进程 oracle,OracleGoldenGate系列:Extract进程的恢复原理
  9. ASP.NET第三方控件网站
  10. source ./ 和 . 的区别
  11. pdf在线翻译_网页版pdf转换器|pdf转换word免费
  12. 利用爬虫和微信机器人自动刷甘肃教师学苑学分
  13. Wifi密码破解之二:利用wps漏洞穷举PIN码破解wifi密码
  14. mysql 测试数据生成器_8个免费的测试数据/样本数据生成器
  15. 【信号与系统】复习总结笔记
  16. 牛客每日练习----mxh与冰红茶的故事,mengxiang000的龙,组合数问题二
  17. A,B,C,D,E五个人在某天夜里去捕鱼
  18. 大数定律和中心极限定理
  19. 云迁移实践:VMware虚拟机迁移到腾讯云
  20. wireshark学习笔记

热门文章

  1. Hbase 预写日志WAL处理源码分析之 LogCleaner
  2. 福建品品香茶业有限公司业务迁移上云
  3. 一文理解 K8s 容器网络虚拟化
  4. 淘票票首次公开小程序开发秘籍,踩过坑才知道怎么走!
  5. 图片安全检测和数据跨境复制,规避违规风险
  6. 瓜子二手车在 Dubbo 版本升级、多机房方案方面的思考和实践
  7. 如何在Kubernetes集群动态使用 NAS 持久卷 1
  8. Dubbo下一站:Apache顶级项目
  9. 英特尔助力完善AI人才培养,携手微软共促地球可持续发展
  10. 第 11 个“世界备份日”刚过,《Veeam 2021 数据保护报告》为你解读全球数据备份现状