先声明一下,本次分享仅用于技术交流。
爬虫与反爬虫可谓相爱相杀。
背景
以前做的一个小项目需要用到电影票房的数据,市面上商业api也不太好用,最终选择了猫眼专业版。最近发现通过接口获取到的数据都是乱码,默念“mmp”,很清楚猫眼又升级了反爬虫技术。最近两年可以说见证了猫眼专业版反爬虫技术的全过程,也是一次比一次难应付。
分析
不同于以往,本次猫眼采用了对关键数据使用woff字体呈现的方案,通过爬虫获取到的数据都是.
这样的,代表1.01。刚开始还异想天开的认为,还好也就10个数字,只要匹配好对应关系就大功告成。但是很快就被猫眼的技术打脸了,虽然woff字符只有10个,分别与10个数字对应,但是每次获取到的数据中woff字符都是不一样的,就像是每次都对10个数字随机加密,每次靠肉眼匹配对应关系简直就是痴人说梦。
探索
“遇到的任何困难都不是第一个碰到”,带着这样的信念,很快就在网上找到一些蛛丝马迹,网上有很多关于woff字符转成图片的技术实现。站在巨人的肩膀上,很自然的就想到了只要使用飞桨实现数字识别,就可以将woff字体转换为数字。
方案
- woff字体转图片
- 使用PaddleHub或PaddleOCR或baidu-aip实现数字识别,得到woff字符与数字的对应关系
扩展
- woff文件导出为xml文件,如
font.xml
- woff文件中的字符保存为图片,如
1.jpg
安装相关第三方包
1 | # !pip install fontTools |
引入相关包
1 | import re |
实现Woff2Text类
1 | # woff = Woff2Text(url, tp='aip', option) |
1 | class ReportLabPen(BasePen): |
应用
1 | header = { |
- 本文作者: 燕清
- 本文链接: http://eshop88.cn/2021/02/01/paddle/使用飞桨PaddleHub破解woff加密的反爬技术/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!