添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

猫眼字体反爬

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

knn算法介绍

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

具体实现流程

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

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

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

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

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

猫眼字体反爬动态变化的字形使用阈值判断误差率较大,甚至看到有的老哥使用ocr去搞…,大概两个月前,第一次看到有大佬使用knn算法搞字体反爬(源码地址),听说效果不错,一直没有时间去尝试,不仅仅是没有时间,对于未知领域特别是机器学习,不知道从何搞起,但是遇到问题总得解决,今天逼着自己去搞knn算法介绍如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别举... 首先在源码中找到加密的 字体 文件,(像这种加密 字体 一般是通过加载本体 字体 库文件上传到前端,数字才能显示出来,一半 字体 文件也会加载到源码中)。 在通过 字体 编码解码模块对 字体 文件进行编码解码操作, 可以得到一对映射关系,这里看的不是很明白,可以借助High-Logic FontCreator软件看明白 然后简历一个初始的字典映射: 因为每次刷新页面这个 字体 库文件都会变化,所以需要每次把 字体 库正则提取 然而网页上显示的是数字’9.5’,这其实是一种 扒机制– 字体 字体 ,就是网站将一些关键字替换为网站自己的 字体 ,这样在网页上 字体 会正常显示,但是当 取下来的时候,经过 字体 加密的字符都是乱码的,无法查看。 应对这种 ...
KNN 算法 及其用 KNN 解决 字体 关于 KNN 算法 概要简介原理 KNN 算法 Python 实现 KNN 解决 字体 web-font介绍例子最后 关于 KNN 算法 K最近邻( kNN ,k-NearestNeighbor)分类 算法 是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。 kNN 算法 的核心思想是如果一个样本在特征空间中的k个...
环境:Windows7 + Python 3.6+Pycharm2017 目标: 猫眼 电影票房、汽车之家 字体 的处理 —全部文章: 京东 爬虫 、链家 爬虫 、美团 爬虫 、微信公众号 爬虫 字体 、Django笔记、阿里云部署、vi\vim入门---- 前言: 字体 ,也是一种常见的 技术,例如 猫眼 电影票房,汽车之家,天眼查等网站。这些网站采用了自定义的 字体 文件,在浏览器上正常显示,但是 爬虫 抓取下来的数据要...
【为什么学 爬虫 ?】        1、 爬虫 入手容易,但是深入较难,如何写出高效率的 爬虫 ,如何写出灵活性高可扩展的 爬虫 都是一项技术活。另外在 爬虫 过程中,经常容易遇到被 爬虫 ,比如 字体 、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习 爬虫 能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的 爬虫 程序,无论大小,总体来说可以分成三个步骤,分别是:网络请求:模拟浏览器的行为从网上抓取数据。数据解析:将请求下来的数据进行过滤,提取我们想要的数据。数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为 爬虫 的多样性,在 取的过程中可能会发生被 、效率低下等。因此我们又增加了两个章节用来提高 爬虫 程序的灵活性,分别是: 爬虫 进阶:包括IP代理,多线程 爬虫 ,图形验证码识别、JS加密解密、 动态 网页 爬虫 字体 识别等。Scrapy和分布式 爬虫 :Scrapy框架、Scrapy-redis组件、分布式 爬虫 等。通过 爬虫 进阶的知识点我们能应付大量的 网站,而Scrapy框架作为一个专业的 爬虫 框架, 使用 他可以快速提高我们编写 爬虫 程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式 爬虫 让多台机器帮助你快速 取数据。 从基础 爬虫 到商业化应用 爬虫 ,本套课程满足您的所有需求!【课程服务】 专属付费社群+定期答疑
文章仅源自个人兴趣爱好,不涉及他用,侵权联系删 上一次简单罗列了 字体 的前世今生(https://mp.csdn.net/console/editor/html/105490137) 本文就进行实战分析 url:https://maoyan.com/boar...
这几天 取58租房信息的时候意外发现了它是一个 字体 的网站,所谓的 字体 就是网站将一些关键字替换为网站自己的 字体 ,这样在网页上 字体 会正常显示,但是当 取下来的时候,经过 字体 加密的字符都是乱码的,根本无法查看 如图所示:  为了能够更加清除的知道什么是 字体 ,我们直接上图看一下。  大家看一下,很明显的就能发现我们正常浏览能够看到数据,但是当我们打开Elements面板定位到对应元素上时发现竟然不是我们在页面上看到的数据,而是一些特殊的符号。我们按Ctrl+F直接看看页面源码,   是不是很奇怪,竟然是一些编码。这个就是 字体 ,这里的 字体 都是自定义的 字体 ,在CSS3之前.........
好的,我可以帮你回答这个问题。 KNN 算法 是一种简单的机器学习 算法 ,可以用于分类和回归问题。下面是手写数字识别的 KNN 算法 Python 实现: 首先,我们需要导入必要的 Python 库: ``` python import numpy as np import matplotlib.pyplot as plt 接下来,我们需要定义一个函数来计算两个向量之间的欧几里得距离: ``` python def euclidean_distance(x1, x2): return np.sqrt(np.sum((x1 - x2)**2)) 然后,我们需要定义一个 KNN 分类器类: ``` python class KNN : def __init__(self, k=3): self.k = k def fit(self, X, y): self.X_train = X self.y_train = y def predict(self, X): y_pred = [self._predict(x) for x in X] return np.array(y_pred) def _predict(self, x): distances = [euclidean_distance(x, x_train) for x_train in self.X_train] k_indices = np.argsort(distances)[:self.k] k_nearest_labels = [self.y_train[i] for i in k_indices] most_common = Counter(k_nearest_labels).most_common(1) return most_common[0][0] 在这个 KNN 类中,我们有三个方法: - `__init__`:初始化 KNN 分类器,指定 K 的值。 - `fit`:将训练数据和标签保存到分类器中,以便后续预测 使用 。 - `predict`:对测试数据进行预测。 - `_predict`:对单个测试数据进行预测。 最后,我们可以 使用 MNIST 数据集进行测试: ``` python from mnist import MNIST mndata = MNIST('./mnist/') X_train, y_train = map(np.array, mndata.load_training()) X_test, y_test = map(np.array, mndata.load_testing()) knn = KNN (k=3) knn .fit(X_train, y_train) y_pred = knn .predict(X_test) accuracy = np.sum(y_pred == y_test) / len(y_test) print("Accuracy:", accuracy) 这个步骤可能需要一些时间来运行,因为 MNIST 数据集中有很多图像。最后,我们可以得出预测的准确性。
解决pyppeteer导航超时问题: pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 30000 ms exceeded 32842 解决pyppeteer导航超时问题: pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 30000 ms exceeded Iris122_: 请问asyncio是什么定义? pyppeteer: 解决OSError: Unable to remove Temporary User Data的报错问题 牛,感谢大佬