css数字字体反爬的解决方案
方案
使用Tesseract-OCR识别
步骤
- 使用selenium请求页面
- 定位到需要识别的元素
- 对元素进行截图
- 使用tesseract-ocr进行识别
优点
- 简单,有现成的工具
- 适用范围广,可适用于汉字
缺点
- 元素定位后的截图准确性的问题
- ocr识别受干扰线影响较大
- ocr识别的准确性问题
- ocr识别及图片处理的性能问题
使用点阵模板文件映射
步骤
- 使用工具生成点阵模板xml文件,(css的demo及fonteditor在线工具,css的demo可以生成带有Unicode及对应的点阵列表;fonteditor在线工具用于填写unicode对应的值,该部分需要手工处理)
- 使用http请求获取网页数据(使用selenium会导致unicode不能识别)
- 使用正则表达式获取需要解析的unicode及woff/ttf文件
- 使用css的demo方法获取unicode对应的值
优点
- 识别率十分高
- 性能较高
缺点
- 步骤较为复杂
- 准确性比较依赖对比算法
- 一般只用于数字字体识别
对比
- 对于数字字体反爬来说,两个方案的准确率都很高,相对来说,方案2的准确性会比方案一的高
- 方案一的稳定性受图片、ocr等影响,是不可控的,方案二只受对比算法影响,相对来说是可控的
- 方案一使用截图的方式,某些情况下元素的坐标点与实际不相符,问题会比较棘手,方案二必须使用正则表达式的方式获取,也会导致获取到不需要的数据,但一般来说,unicode字符前肯定有统一的className
- 方案二只能把页面当作字符串处理,会失去selenium处理页面的特性
demo地址
https://github.com/YeomanM/css.git