V2EX 13小时前
[问与答] 做了一个 poc,自己验证了一下 可以显示内容。这样反爬虫可以吗?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了一种利用Canvas技术对抗Web爬虫的方法,主要针对在线学习网站的题目和答案保护。核心思想是将文字转化为Canvas上的像素点,通过本地字库和点阵信息,结合随机化、打乱显示顺序等手段,增加爬虫破解的难度。文章详细描述了Python和TypeScript的实现细节,包括字库读取、点阵坐标计算、Canvas操作命令生成、以及JSON格式的存储和加载,最终实现一个无需服务器环境即可运行的防爬虫网页。

💡 **核心思路:** 网站通过Python生成Canvas绘图指令,将文字转化为像素点,而非直接提供文本内容,以此规避爬虫抓取。

🎨 **字库与点阵:** 使用本地字库获取文字的24x24点阵信息,将文字分解为点阵,为每个点生成Canvas绘制命令。通过不同的字库和对点阵的微调,增加破解难度。

🔄 **随机化与打乱:** 在字符间加入随机间隔,并打乱Canvas绘制命令的顺序,使得爬虫难以还原原始文本。例如,字符间的间隔是随机的1-3像素。

💻 **技术实现:** 使用Python处理文本,生成JSON格式的Canvas绘图指令;前端使用TypeScript和Node.js构建,读取JSON并在Canvas上绘制文字。前端项目包含完整的配置、目录结构和启动命令,可脱离服务器运行。

📐 **宽度控制:** Python脚本接收用户输入的宽度参数,用于控制Canvas的显示宽度,计算每个字符在Canvas中的坐标,确保文字的正确排布和换行。

目前做了一个在线学习的网站, 这种网站最大的本钱 就是各种题目和答案,如果是 web 服务,那么基本会被爬,想了一下 就算 我把来回请求加密了 被破解还是迟早的事情,

用 deepseek 本地生成了一个 poc , 用 canvas 来对抗爬虫 不知道 行不行,目前这些文字在本地被显示出来了,剩下的就是把这些像素做一下移动 在不影响用户的前提下 最大化地影响。

对抗思想就是这样,本地准备很多不同的字库,读取字库的点阵, 把要显示的内容 分解成很多点的写命令,然后把点命令替代文本, 客户端 web 读取到这个写命令,直接在一个 canvas 上把每个点画上去,这样就不知道具体的文字内容了。

如果用户要还原 需要把点阵的内容重新绘制出来,然后在字库里找,我们可以用很多不同的字库,减少被查出来的可能性,还有就是我们可以对字库里某个字的点阵做一些小的改动 比如随机地让某个点移动一定的位置,来让复原更困难。

deepseek 语句这样

使用 python3 和 ts 配合完成以下功能 python3 代码使用 utf8 编码 在源码内注明代码所有的功能模块化 所有的参数可以定义和配置 不能使用硬编码控制函数模块的大小 单函数不要超过 50 行

传入一个字符串 传入一个宽度 给 python3 ,python3 读取宋体字库,获取 24*24 点阵,将文字显示在一个传入参数宽度的 canvs 上,注意换行,比如传入宽度 40 那就在 40 24 + 50 像素宽度的 canvs 上显示,计算每个字符的每个点阵在 canvas 里的坐标,将所有的点阵坐标变成 canvas 的操作命令。注意每个字符之间可以加入 1-3 像素的随机间隔 比如第一个字是 A 第二个是我,这 2 个字符都是 24 24但是可以在这 2 个字符之间加一个 2 像素的间隔 让它们不是紧贴的 这个 50 就是 40 个字使用的间隔字符,由用户输入所有 40 个字符共享这个值。 需要随机 不要用平均值

字符串里有空格就空出空间,如果有回车 那么字符就提前回车。

以 json 格式保存在本地。 注意需要打乱显示顺序,将每个点显示命令的序列,正常的顺序可能是 先完整显示第一个字符的所有点阵 再显示第二个字符的所有点阵 ,也可能是先显示一行的所有像素 再显示第二行的所有像素要求将每个像素显示的顺序打乱随机顺序显示的 将命令保存为一个 json 字符串

创建一个本地 node 项目,使用 ts 开发 要求给出完整的项目配置 tsconfig 项目目录,各个文件的文件树 node 启动命令等要求最终 html 加本地编译好的 js 可以直接脱离 nginx node 环境直接运行显示。

项目的 html 将 json 文件读取后 在一个指定宽度的 canvas 上显示。这个宽度和 python3 的参数一样 就是 40*24+50 ,按照 json 命令顺序将字符显示在上面, 最后确认效果是需要的

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

防爬虫 Canvas Python TypeScript 字库
相关文章