Skip to content

About

在网页输入车牌号,用户可以下载到对应本子的PDF文件。

Resources

Stars

51 stars

Watchers

0 watching

Forks

Latest commit

 

History

99 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

此项目已有升级版

https://github.com/TunaFish2K/jmcomic-web-client建议使用此版本。

禁漫下载器网页版

在网页输入车牌号,用户可以下载到对应本子的PDF文件。

部署与开发

git clone https://github.com/TunaFish2K/jmcomic-downloader-web --depth=1
cd jmcomic-downloader-web

后端

pnpm 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许可证开源。

About

在网页输入车牌号,用户可以下载到对应本子的PDF文件。

Resources

Stars

51 stars

Watchers

0 watching

Forks

Contributors

Languages