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

650bcfa25f90639ed55f7dc36d74b066.png

目录

THE BEGIN

一 什么是字体反爬

二 如何解密

1.人工解密

2.工具解密

三 建立映射关系

四 解密


THE BEGIN

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

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

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

1048ddf3b5c90d7abc0da18b13a0c07b.gif

一 什么是字体反爬?

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

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

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

e1dec2bcf78a4dd21e5a3a995aaa36b4.png

e1615c8564763343b9bed7511e4c1b0f.png

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

d16e320be8a6178cb2426b50eba74ced.png

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

二 如何解密

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

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

424f0bca1193573866002f89b7f133fc.png

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

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

1. 人工解密

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

4aeba2bc333fad269ad1bbaa5876045b.png

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

2.工具解密

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

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

2c52c73abaf01f48c0db38c65c93bfb4.png

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

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

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

三 建立映射关系

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

35058b34aca12d7fa83c432f8b363a01.png

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

65d60cd4c06a121e10118dc241faf273.png
第一次替换

d3acb5942cac087e2d2461e1db090c0d.png
第三次替换

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

f02cdcd6e0e4199f4ec97955cb0741cf.png
部分代码

四 解密

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

8273293f41aecd6983aadd5cf8ff2f51.png

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

7502e1f27303ade34cd6d946ebb28169.png

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

4216836bd750aba414630a3a18e42b20.png

最后

爬虫不易

前端工程师也不易

大家记得要文明爬虫

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

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

19ef20c78d57c1c9a47a4d110bd95bc0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ECS云资源可视化--资源概览

摘要: 随着越来越多的业务接入云计算,云上拥有的各类资源也越来越多,用户如何时时对其拥有的各类资源进行统计分析成为一个难题。ECS控制台针对这一问题,推出资源概览功能,目前支持实例和存储两种云资源的统计和分析功…

工作流实战_03_flowable 流程模板部署

由于群里有些朋友对这个flowable还不是 很熟悉,在群里的小伙伴的建议下,师傅(小学生05101)制作一个开源的项目源码,一共大家学习和交流,希望对有帮助,少走弯路 如果有不懂的问题可以入群:633168411 里面都是…

为物联网而生:高性能时间序列数据库HiTSDB商业化首发!

摘要: 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。 先跟大家聊一…

kafka系统设计开篇

戳蓝字“CSDN云计算”关注我们哦!来源 | 靳刚同学MQ(消息队列)是跨进程通信的方式之一,可理解为异步rpc,上游系统对调用结果的态度往往是重要不紧急。使用消息队列有以下好处:业务解耦、流量削峰、灵活扩展…

工作流实战_04_flowable 流程的模板的图片和xml显示

由于群里有些朋友对这个flowable还不是 很熟悉,在群里的小伙伴的建议下,师傅(小学生05101)制作一个开源的项目源码,一共大家学习和交流,希望对有帮助,少走弯路 如果有不懂的问题可以入群:633168411 里面都是…

成功使用机器学习技术的3个技巧

摘要: 本文讲述了3个针对机器学习的小技巧,相信对正在学习机器学习的朋友有所帮助机器学习、自然语言处理(NLP)和认知搜索技术正以高速率被采用,这并不稀奇。随着组织努力创造价值,增强客户体验,遵守严格的规定并使自己…

Spring精华问答 | 如何集成Spring Boot?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们一起来看看关于Spring的精华问答吧。1Q:如何在自定义端口上运行Spring Boot应用程序?A:为了在自定义端口上运行Spring…

Andrew Ng深度学习课程笔记

摘要: 本文对Andrew Ng深度学习课程进行了大体的介绍与总结,共包括21个课程。我最近在Coursera上完成了Andrew Ng导师关于新深度学习的所有课程。Ng在解释术语和概念方面做得非常出色。例如,Ng指出,监督深度学习只不过是一种多维曲…

工作流实战_05_flowable 流程定义的挂起与激活

由于群里有些朋友对这个flowable还不是 很熟悉,在群里的小伙伴的建议下,师傅(小学生05101)制作一个开源的项目源码,一共大家学习和交流,希望对有帮助,少走弯路 如果有不懂的问题可以入群:633168411 里面都是…

技嘉注入usb 3.0工具_技嘉怎么安装win10系统 技嘉安装win10系统步骤【图文介绍】...

技嘉笔记本性能配置高端,质量一流,技嘉科技在主板方面也及其出色,因此自身生产的电脑配置也相当专业。若要用技嘉 安装win10系统 要怎么做比较快呢?最简单的方法便是用u盘装系统了,u盘装系统可谓是傻瓜式一键装机,让装…

为什么深度学习没有取代传统的计算机视觉?

摘要: 深度学习大潮为什么淹没传统的计算机视觉技术?听听大牛怎么说~这篇文章是受到论坛中经常出现的问题所创作的:深度学习是否可以取代传统的计算机视觉?这明显是一个很好的问题,深度学习(DL)…

赋能网安生态通信服务器操作系统,紫光展锐打造操作系统生态,赋能万物互联智能时代...

本周,以“象由芯生科技服务人民”为主题的2020紫光展锐市场峰会重磅开启,广大生态合作伙伴共聚一堂,共话数字世界新未来。在今天举办的“操作系统OS研讨会”上,来自紫光展锐工程一线的架构师带来了一场整个操作系统领域的饕餮盛宴…

如何利用秒级监控进行mongodb故障排查

摘要: 在我们平时的数据库使用当中,监控系统,作为排查故障,告警故障的重要辅助系统,对dba、运维、业务开发同学进行问题诊断、排查、分析有着重要的作用。并且一个监控系统的好坏,也很大程度上影响了能否精…

工作流实战_06_flowable 流程定义的删除

List item 由于群里有些朋友对这个flowable还不是 很熟悉,在群里的小伙伴的建议下,我师傅(小学生05101)制作一个开源的项目源码,一共大家学习和交流,希望对有帮助,少走弯路 如果有不懂的问题可以入群:63316…

百度Q2智能云增长强劲;据悉史上最大 AI 芯片诞生!中兴与奇瑞成立合资公司一起加快开发5G汽车……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 华为推出旗下第一款可穿戴智…

python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程

笔者思虑再三还是决定选择图文(因为百家的视频发布画质真不怎么样【囧】)。 笔者学习编程的时间也挺长的,因为业余,因为时间不多,各种原因,自学编程的路特别难走。然后笔者发现,自己能为小白贡献…

从事数据科学前必须知道的五件事儿

摘要: 本文讲解了从事数据科学前应该了解的五件事情,主要是关于学习数据科学时候应该注意的一些事项。目前,人工智能行业非常火热,对应的数据科学分析岗位需求也非常大。很多程序员纷纷转行从事人工智能相关岗位,那么对…

工作流实战_07_flowable 流程定义查看流程图和xml

由于群里有些朋友对这个flowable还不是 很熟悉,在群里的小伙伴的建议下,我师傅(小学生05101)制作一个开源的项目源码,一共大家学习和交流,希望对有帮助,少走弯路 如果有不懂的问题可以入群:633168411 里面都…

这项技术:华为、BAT要力捧!程序员:我彻底慌了... ​

人工智能离我们还遥远吗?海底捞斥资1.5亿打造了中国首家火锅无人餐厅;阿里酝酿了两年之久的全球首家无人酒店也正式开始运营,百度无人车彻底量产。李彦宏称,这是中国第一款能够量产的无人驾驶乘用车。而阿里的这家无人酒店&#x…

手把手教你理解卷积神经网络

摘要: 卷积神经网络是一种识别和理解图像的神经网络。本文将从不同的层次来介绍卷积神经网络。手把手教你理解卷积神经网络(一)本文将继续为你介绍关于卷积神经网络的知识。为了保持文章的简洁性和全面性我将为你提供研究论文的链接&#xff…