python爬虫: 使用knn算法破解猫眼动态字体反爬

猫眼字体反爬

动态变化的字形使用阈值判断误差率较大,甚至看到有的老哥使用ocr去搞…,大概两个月前,第一次看到有大佬使用knn算法搞字体反爬(源码地址),听说效果不错,一直没有时间去尝试,不仅仅是没有时间,对于未知领域特别是机器学习,不知道从何搞起,但是遇到问题总得解决,今天逼着自己去搞

knn算法介绍

如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别
举个例子,你可以通过观察某位老哥交往的朋友,大概能了解到这个老哥是什么样的人,毕竟物以类聚,人以群分

具体实现流程

  1. 获取n套字体文件(越多越好),然后将所有字符对应的字形坐标信息保存到一个列表当中(注意做好字符与字形坐标的对应关系)
    在这里插入图片描述
  2. 使用knn算法训练数据, 通常情况下,拿到样本数据,先进行缺失值处理,然后取出特征值和目标值,再对样本数据进行分割,分为训练集和测试集,然后再对样本数据进行标准化处理,最后进行训练预测, 由于采集的字体数据不多(偷个懒,大家别学我),如果按随机分割的方式,训练集容易缺失某些字符,导致预测测试集的结果误差率较大,所以在此固定前40个样本为训练集,最后10个样本为测试集合,另外,多次测试发现,此处进行标准化,会影响成功率,所以不采用,另外k值取1, 也就是说,我判定当前样本跟离它最近的那个样本属于同一类型,即同一个字符,这个值取多少合适经过调试才知道,最后预测10个样本,包含了0-9 10个字符,成功率为100%
    在这里插入图片描述
    可以写个类
    在这里插入图片描述
  3. 获取一套字体,然后使用训练模型预测数据,拿到预测结果,还原网页内容,解析网页
    在这里插入图片描述
  4. 比对一下结果,都是对的哈,反爬工程师又要失眠了。。。
    在这里插入图片描述

最后

本文只讲字体反爬破解思路, 其他问题自行处理

虽然跟那位大佬一样都是用的knn算法,但是我使用的是sklearn这个库来实现的

码文不易,感谢微信打赏支持

源码地址
本人公众号不定期分享js/安卓逆向教程,感兴趣的可以关注一下!
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页