https://github.com/TunaFish2K/jmcomic-web-client建议使用此版本。
在网页输入车牌号,用户可以下载到对应本子的PDF文件。
git clone https://github.com/TunaFish2K/jmcomic-downloader-web --depth=1
cd jmcomic-downloader-webpnpm run worker:dev # 开发
pnpm run worker:deploy # 部署pnpm run dev # 自动启动后端与前端在部署后端后,需要你在Github Fork这一仓库。
在Cloudflare面板创建Page,使用这一仓库。
将根目录设置为/page,框架预设选择React,构建命令填写pnpm run build。
设置环境变量VITE_BACKEND_URL为Worker的地址。然后部署。
分为部署为Cloudflare Pages的React前端和部署为Cloudflare Worker的后端。
一个Cloudflare Worker,负责与禁漫服务器通信获取本子内容,解密相关数据,传输给客户端。
抄袭JMComic-Crawler-Python中以客户端API方式与禁漫通信的代码,获取图片URL,photoId和scrambleId。
将这些数据发给客户端。
使用React构建,负责与后端通信,获取上述数据解码,算出切片数量,使用切割拼接来解密。 将解密的图片拼接为PDF。变为文件下载给用户。
- 实现与禁漫服务器的通信
- 实现请求时参数的生成
- token相关
- 默认cookie
- 使用
set-cookie-parser解析传来的Set-Cookie - 生成默认cookie的头数据
- 使用
- 实现通用的返回数据解密
- 实现可用域名的动态获取
- 实现获取章节的数据(标题,图片列表,scrambleId)
- 获取数据
- 获取scrambleId
- 实现请求时参数的生成
- 实现后端接口
- 提供车牌号,标题,标签,图片链接,
scrambleId
- 提供车牌号,标题,标签,图片链接,
- 实现前端
- 与后端通信的接口
- 根据图片数据解密图片
- 计算切片数量的算法
- 用offscreen canvas重新拼接(web worker毙掉了)
- 实现生成PDF功能(密码功能毙掉了)
- 用户界面与上述代码的对接
- 表单1,负责填写车牌号,执行查询
- 表单2,表单1成功查询的情况下,提供下载并生成pdf的按钮
- 界面美化
- 修缮
- 后端限流(借助cloudflare waf,不用自行实现)
- 前端下载图片的进度显示
- 支持以CBZ格式或ZIP格式(内容一样)下载
- 引入zip模块
- 文件的打包
- 图片内容
- ComicInfo.xml的生成
- 选择导出方式的ui
- 加入提示不支持动图(不计划实现),实现跳过动图的功能
- 实现图片资源拉取的限流
- 引入模块plimit
- 在下载部分使用plimit
- 实现流式打包与下载
- 打包的进度显示
本项目全程在学习和抄写https://github.com/hect0x7/JMComic-Crawler-Python项目。(欸嘿)
本项目以MIT许可证开源。