说下我以前爬某电影评分网站时遇到的反爬机制吧,感觉还挺有趣的。
爬数据时遇到的问题首先来说说我在爬数据时遇到的问题,看图:
页面上正确显示了评分为9.5,按F12打开调试模式,找到该元素节点时发现显示的是两个框框,再打开源码发现是一串乱码。
页面数字显示正常,在源码中却显示乱码,可以肯定该网站肯定采取了反爬虫机制,有点意思!
反爬虫机制原理下面分析一下这个反爬虫机制的原理。
做过web前端开发的人知道显示框框一般都是由于引用了字体文件引起,那么这个网站反爬虫机制会不会跟字体文件有关呢?
刷新一下页面,发现一个字体文件的请求:
我们手动将这个字体文件下载下来,使用字体编辑工具打开:
虽然我不是太懂字体文件的原理,但是按我的理解其实就是一个字符和数字关系映射文件,例如字符E282对应数字9、字符F11B对应数字5。
现在我们再来看一下源码里的乱码:
有没有看出什么端倪?
是的,它们并不是什么乱码,而是而字体文件里的字符一一对应的!
根据对应关系可以推断出乱码“.”对应数字9.5,正好和页面上显示的是一致的。
总结这个反爬虫机制的现象是页面显示数字正常,但是源码里显示乱码;这个反爬虫机制的工作原理就是通过字体文件将乱码和数字建立好映射关系。