先说说我之前爬某电影分级网站时遇到的防爬机制。挺有意思的。
爬数据时遇到的问题先说说我爬数据时遇到的问题。看图:
页面正确显示分数为9.5。按F12打开调试模式。当您找到这个元素节点时,您会发现显示了两个框架。然后你打开源代码,发现是一串乱码。
页面显示正常的数字,但是在源代码中显示乱码。肯定是网站采用了反爬虫机制,有意思!
反爬虫机制原理我们来分析一下这个反爬虫机制的原理。
做过web前端开发的人都知道,显示帧一般是引用字体文件造成的,那么这个网站的反爬虫机制会和字体文件有关吗?
刷新页面并找到对字体文件的请求:
我们手动下载这个字体文件,并用字体编辑工具打开它:
虽然我不太懂字体文件的原理,但据我所知,它其实是一个字符和数字之间的映射文件。例如,字符E282对应于数字9,字符F11B对应于数字5。
现在让我们来看看源代码中的乱码:
你看到什么线索了吗?
是的,它们不是乱码,而是字体文件中的字符一一对应!
根据通信,乱码“⊙:。 # xf11b”对应数字9.5,和页面显示的一模一样。
总结一下这个反爬虫机制的现象,页面显示正常数字,但是源代码显示乱码;这种反爬虫机制的工作原理是通过字体文件建立乱码和数字的映射关系。