目前做了一个在线学习的网站, 这种网站最大的本钱 就是各种题目和答案,如果是 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 命令顺序将字符显示在上面, 最后确认效果是需要的