Git Product home page Git Product logo

18-comic-finder's Introduction

禁漫天堂下载器

使用GitHub Actions的禁漫天堂爬虫🤡

java这门语言能让小项目变成中项目, 中项目变成大项目 🤡

没什么牛逼的地方, 就是春节假期图一乐🤡

想当初我也是立志成为一位优雅的C#er, 结果现在想要做一个新项目居然首先用java🤡

刚刚暂时不方便打字,但是现在我不禁想问问大家, 是不是应该点一个Star⭐❓


希望大家使用的时候要注意下, 每一次使用爬虫下载都是对禁漫天堂的持续性访问, 所以尽量不要一次性添加太多本漫画, 这样会对禁漫天堂服务器带来比较持久的压力, 最好挑到喜欢的再选择下载, 谢谢🤞

⚠因为下载器是根据网页结构进行分析的, 如果禁漫天堂的页面进行了更新, 很可能会下载失败, 所以当使用过程中发现报错,下载失败,缺章漏页, 请提交issue通知我更新代码.

更新记录

更新日期 更新内容
2023/02/16 17:00 compiler-plugin更新到3.10.1版本,surefire-plugin更新到3.0.0-M9
2023/02/14 17:00 感谢@AragonSnow提供的最新图片切割算法, 大家情人节看漫快乐👀
2023/01/27 17:00 支持遇到反爬虫五秒盾时自动切换域名
2023/01/24 17:00 同步跟进quarkus框架到3.0.0.Alpha3版本,surefire-plugin更新到3.0.0-M8
2022/12/8 11:00 同步跟进quarkus框架到3.0.0.Alpha2版本.
2022/11/15 17:00 支持直接将.webp格式转换为.jpg格式, 以免腾不出手的各位每次都双击打开下一张.
2022/11/15 17:00 同步跟进quarkus框架到3.0.0.Alpha1版本.
2022/11/05 21:00 修复由于不支持TLSv1.3导致握手失败问题.
2022/10/25 11:00 同步跟进quarkus框架到2.13.3.Final版本.
2022/10/13 17:00 同步跟进quarkus框架到2.13.2.Final版本.
2022/10/7 17:30 抛弃切割判断算法, 因为我已经找到需要切割和不需要切割的分界线了, 判断相似度已经没有意义了, 版本升级到5.1.0, 起飞🦽.
2022/10/7 14:30 优化切割判断算法, 抛弃原有的每一张图判断一次切割规则, 现在通过随机某一张图片判断整章漫画是否需要切割, 现在可能一章中有某一页是错的, 但是大部分都应该是正确的.
2022/10/7 01:00 同步跟进quarkus框架到2.13.1.Final版本.
2022/10/6 17:00 支持下载单页大于300张图的漫画功能.
2022/10/6 01:00 祝大家国庆节假期快乐🧻.
2022/10/6 01:00 程序退出判断变得更加宽松, 避免缺少部分图片导致程序等待.
2022/10/6 01:00 项目经过部分重构, 变得更难看懂了, 升级版本号到5.0.0🦽.
2022/10/6 01:00 同步跟进quarkus框架到2.13.0.Final版本.
2022/10/6 01:00 放弃使用graalvm22.2.0, 升级项目到jdk19.
2022/8/12 01:00 由于前端水平太低, 不懂得如何判断某一章节是否需要切割, 所以最终使用了差异值哈希算法进行相似性校验, 绕远路才是我的最短捷径!🦽.
2022/8/7 13:00 修复章节名称以点结尾时文件夹命名出错问题.
2022/8/7 12:00 修复下载单章漫画报错问题.
2022/8/7 11:40 升级graalvm到22.2.0.
2022/8/7 11:20 升级支持下载webp格式的漫画.
2022/8/7 11:15 同步跟进quarkus框架到2.2.11.2.Final版本.
2022/4/15 11:15 尝试将Graalvm升级到22.0.0.
2022/4/15 11:10 同步跟进quarkus框架到2.8.0.Final版本,因为广州疫情,现在被封在管控区,但是放假太舒坦了,先让我享受一阵放假生活,bug后面再修.🦽
2022/3/31 11:00 修复新版漫画页面样式变更导致下载失败问题.
2022/3/24 12:00 同步跟进quarkus框架到2.8.0.CR1版本.
2022/3/18 11:20 同步跟进quarkus框架到2.7.5.Final版本.
2022/3/4 11:20 同步跟进quarkus框架到2.7.4.Final版本.
2022/3/4 11:20 同步跟进quarkus框架到2.7.3.Final版本.
2022/2/25 10:50 同步跟进quarkus框架到2.7.2.Final版本.
2022/2/13 21:33 同步跟进quarkus框架到2.7.1.Final版本.
2022/2/6 11:33 同步跟进quarkus框架到2.7.0.Final版本.
2022/2/1 12:33 新的一年里祝各位LSP身体健康, 合家欢乐, 虎年大吉😘.
2022/1/28 09:33 同步跟进quarkus框架到2.6.3.Final版本.
2022/1/19 23:09 修复当漫画高度除以分块数取整为0时导致的保存图片失败问题.
2022/1/15 21:26 修复当漫画高度除以分块数非整数时缺失像素导致画面断层问题.
2022/1/14 11:05 同步跟进quarkus框架到2.6.2.Final版本.
2021/12/21 10:10 同步跟进quarkus框架到2.6.1.Final版本.
2021/12/21 10:10 同步跟进quarkus框架到2.6.0.Final版本.
2021/12/21 10:10 同步跟进quarkus框架到2.5.4.Final版本.
2021/12/13 15:10 同步跟进quarkus框架到2.5.2.Final版本.
2021/12/3 11:15 同步跟进quarkus框架到2.5.1.Final版本.
2021/11/25 17:15 同步跟进quarkus框架到2.5.0.Final版本.
2021/11/8 15:30 同步跟进quarkus框架到2.4.1.Final版本.
2021/11/7 01:10 恭喜EDG获得英雄联盟S11全球总决赛冠军🎉重铸LPL荣光, EDG义不容辞!👏.
2021/10/29 10:38 尝试将jdk升级到Graalvm17.
2021/10/13 16:47 2.3.0的quarkus插件有问题,无法读取到配置的settings.xml文件,所以升级到框架2.4.0.CR1.
2021/10/10 14:30 同步跟进quarkus框架到2.3.0.Final版本, 升级程序版本号为4.0.0.
2021/10/10 14:30 修复本地运行时日志编码打印非UTF-8导致乱码问题.
2021/10/10 14:00 终于修复了禁漫天堂cloudflare验证问题,现在可以正常使用了.
2021/9/12 13:49 同步跟进quarkus框架到2.2.2.Final版本.
2021/9/10 13:38 感谢@calject大佬提供的最新图片切割算法💕, 现在终于可以正确切割最新的章节了👏.
2021/8/10 16:47 同步跟进quarkus框架到2.1.1.Final版本.
2021/7/28 10:40 同步跟进quarkus框架到2.0.3.Final版本.
2021/7/01 10:40 热烈祝贺我党成立100周年🙌, 希望诸位LSP看漫之余不忘初心牢记使命🎉.
2021/7/01 10:30 同步跟进quarkus框架到2.0.0.Final版本.
2021/5/31 10:43 提交3.1.0 release版本.
2021/5/26 15:40 修复由于访问频率过高提示禁漫娘被你玩壞啦 ??ヽ(??Д`)??休息一分鐘後會好限制访问导致的爬取失败, 禁漫天堂从接口层面加了访问速度限制之后, 下载会不可避免地变慢, 因为每次触发限制都最少要一分钟才能重新访问.
2021/5/15 18:34 周末突然发现禁漫天堂又撤掉了Cloudflare 5秒盾, 程序又能直接通过github action使用了, 不需要添加cookie.
2021/5/9 17:30 由于禁漫天堂最近加了Cloudflare 5秒盾反爬虫, 暂时需要在配置文件中添加cookie才能爬取, 请根据下方说明添加cookie, 后续我看看用什么方法绕过拦截.
2021/4/13 14:30 添加触发action的限制, 只有修改了downloadPath.json文件才会触发action, 修改其他文件则不触发.
2021/3/27 14:04 v3.0.0 放弃springboot框架, 换成使用响应式框架quarkus, 感觉应该是更快了的.
2021/2/25 15:16 v2.0.0 重大更新, 支持直接使用Github Action自动爬取漫画, 不需要本地部署, 直接输入漫画url然后等待Github Action爬取完成然后下载压缩包即可.
2021/2/18 22:15 v1.2.0支持下载整本只有一章的无章节漫画.
2021/2/18 16:35 添加下载单独某个章节的功能.
2021/2/18 15:38 确保配置文件中配置为空时程序能够正常识别.
2021/2/17 20:51 修复由于章节列表格式不规范导致的获取章节名称失败.

GitHub Action使用方法

v2.0.0之后现在支持直接使用Github Action进行下载, 不需要手动部署了.

Github Action是微软收购github之后推出的CI/CD工具, 你可以理解为这是一台微软免费给你白嫖的2核7G内存的服务器, 每次提交代码都可以触发运行一次服务器.

现在程序支持提交代码之后直接通过这个服务器帮你下载完成漫画, 然后打成一个压缩包, 提供给你下载.

感谢微软, 微软大法好🙌

通过以下步骤即可在GitHub Action上运行程序

  1. 点击图中fork按钮, fork一份我的项目给你自己.image.png 如果你以前fork过一次, 然后我提交了代码对bug修复, 但是你不懂得如何将我的修复代码合并到你的仓库, 那你可以直接删掉你的仓库, 重新fork一次.
  1. 进入/src/main/resources/downloadPath.json, 点击箭头所指的编辑按钮,对该文件进行编辑, 注意使用github action模式的时候只需要修改这个json文件, 其他任何文件都不需要修改, 也不要提交pull request到上游来. image.png

  2. 按照json格式填入漫画链接, 如果要下载一本, 那格式为(注意英文双引号) :

    [
      "https://18comic.vip/album/180459"
    ]

    如果要下载两本或者多本, 格式为(注意英文逗号) :

    [
      "https://18comic.vip/album/180459",
      "https://18comic.vip/album/182168"
    ]

    注意尽量不要一次性添加太多漫画, 否则下载起来时间要很久, 压缩包也会很大, 并且添加的链接要是直接能访问到禁漫天堂的网站, 而不是各种镜像站, 根据禁漫天堂的公告板提示, 你所添加的漫画域名应该来自以下2个 :

    https://18comic.vip (最好直接使用这个, 把你的漫画链接域名直接更换成这个就可以了.)

    https://18comic.org (如果.vip无法使用, 则尝试使用这个.org站点)

    添加完成之后, 点击下方提交按钮 :

    image.png

  3. 提交完成之后进入Actions页面查看程序运行状况 :image.png

    image.png

    绿色说明运行成功, 黄色说明正在运行, 红色说明运行失败. 运行成功之后, 点击对应的任务 : image.png

    点击箭头所指的finder-result压缩包文件, 即可下载已经打包好的爬虫图片, 注意下载这个压缩包的时间取决于你访问github的速度, 如果没有科学上网可能需要下载很久.

本地打包

  1. 安装jdk19.

  2. 安装maven.

  3. 下载源代码并且修改application.properties文件中的以下几个配置 :

    • comic.download.path : 下载到本地的目录
    • comic.proxy.host : 科学上网的ip
    • comic.proxy.port : 科学上网的端口
comic.download.path=C:\\Users\\jiayao\\Pictures
comic.proxy.host=127.0.0.1
comic.proxy.port=10808

4.执行mvn clean package 得到最后的jar包

如果直接下载我提供的jar包, 无法手动编辑jar包内的properties文件, 请在jar包所在的目录新建一个config文件夹, 在里面新建一个application.properties文件, 然后粘贴并且修改上述几个参数.

运行程序

程序现在支持两种运行模式, 作为单次运行的前台模式, 和作为持续运行服务的后台模式

前台模式

前台模式是指程序完成下载任务之后会自动关闭, 通过读取代码中的downloadPath.json文件内的链接, 或者启动时传入参数来进行下载, 每一次下载都要运行一次程序.

如果有条件手动打包程序, 则进入/src/main/resources/downloadPath.json目录, 按照json格式填入漫画链接, 如果要下载一本, 那格式为 :

[
  "https://18comic.vip/album/180459/"
]

如果要下载两本或者多本, 格式为(注意逗号) :

[
 "https://18comic.vip/album/180459/",
 "https://18comic.vip/album/182168"
]

前台模式与后台模式都支持下载整本漫画或者单独某个章节.

添加数据之后, 打包, 然后在确保已经有jdk19之后, 命令行中进入jar包所在的目录, 执行java -jar ./*.jar 即可按照前台模式运行程序, 程序会自动下载json文件中的所有漫画 , 当下载完成之后, 程序会自动退出.

如果没有条件打包程序, 但是有条件运行程序, 例如只装了jdk19但是没有安装maven等, 那就直接下载我提供的jar包, 按照前面说所方法在jar包所在的目录新建一个config文件夹, 在里面新建一个application.properties文件, 粘贴并且修改上述几个参数, 然后命令行进入jar所在的目录, 执行java -jar ./*.jar 漫画路径1 漫画路径2 ,例如 java -jar ./*.jar https://18comic.vip/album/180459 , 这时候这本漫画就会被下载, 多本漫画请用空格隔开.

后台模式

后台模式是指程序将会作为一个服务持续运行, 通过等待接口请求来下载漫画, 每一次请求接口就会进行一次下载, 程序完成下载后不会自动关闭.

程序打包或者下载我提供的jar包, 然后在确保已经有jdk19之后, 命令行中进入jar包所在的目录, 执行java -jar ./*.jar -s(注意-s参数)即可按照后台模式运行程序 , 当下载完成之后, 程序会继续等待服务.

运行程序之后打开浏览器, 在地址栏输入 :

http://localhost:7788/finder/download?homePage=你想要下载的漫画主页

即可开始下载整本漫画, 例如

http://localhost:7788/finder/download?homePage=https://18comic.vip/album/177680

如果想要下载单独的某一个章节, 只需要输入对应的章节主页即可, 例如

http://localhost:7788/finder/download?homePage=https://18comic.vip/photo/211115

项目特点

  • 使用quarkus框架
  • 支持github actions
  • 没有用到爬虫库, 纯用hutool对html页面进行切分.
  • 多线程异步爬虫.
  • 对2020-10-27之后的反爬虫图片进行了反反爬虫处理.

TODO

  • 使用jdk19的虚拟线程改造程序
  • 支持github action
  • 支持单独下载某个章节而不是每一次都下载完整的一本漫画.
  • 支持下载整本只有一章的无章节漫画.
  • 通过指定外部配置文件来覆盖内部配置文件, 对于直接下载jar包的用户不需要先解压修改配置文件后再压缩回去.

鸣谢列表

  • @AragonSnow : 提供了新版禁漫天堂前端切割算法.
  • @lizongcong : 提供了只有更新json文件才会触发action的建议.
  • @calject : 提供了新版禁漫天堂前端切割算法.
  • @Yiyi-philosophy : 提供了直接将.webp转换为.jpg的建议.

18-comic-finder's People

Contributors

buiawpkgew1 avatar jiayaoo3o avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

18-comic-finder's Issues

下载缓慢

ERROR [io.git.jia.fin.ser.TaskService] (vert.x-eventloop-thread-1) 发送请求[https://18comic.vip/album/337391]->发现cloudflare反爬虫验证, 正在进入重试:[We are checking your browser...]
在开始下载的时候卡住

反爬蟲問題,使用本日的版本,在local端與Github Action也一樣

如題,下載你已經Build好,放在Release的finder-5.1.0-runner.jar使用時遇到反爬蟲錯誤。
看到近期你有對反爬蟲做處理,所以我有把今天20230214的原始碼版本clone下來,並做 mvn clean package 拿到.jar檔之後再用來執行,剛開始有看到切換網址,後來還是遇到反爬蟲,執行到最後沒下載完就結束執行了。
截圖 2023-02-14 下午6 45 31

也嘗試使用Github Action執行腳本,結果執行時間過短,把執行完生出來的finder-result.zip載下來解壓縮後,發現內容是不完整的,估計也是和local端一樣的狀況。
此外Githug Action有跳警告,警告如下:

build
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

畫面擷取於 2023-02-14 18 49 53

简体繁体判断

建议,在切割的时候加上简体和繁体的切割标识判断,因为经过本地调试,发现我抓到的内容都是简体字,但是程序里面的判断条件是繁体字,各位刘德华可以看情况修改
大佬也可以直接加个判空啊啥的,如果为空就换个关键字去匹配切割。
最后说一句大佬威武!!!

特定漫畫頁數錯亂

針對編號242124的漫畫下載
有間歇性的圖片斷斷續續的狀況
已經嘗試三次都是如此

workflow 在编译阶段报错,不能成功进行下去

在 build with maven 这一步报错:

Error: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project finder: Fatal error compiling: error: invalid target release: 17 -> [Help 1]
Error:
Error: To see the full stack trace of the errors, re-run Maven with the -e switch.
Error: Re-run Maven using the -X switch to enable full debug logging.
Error:
Error: For more information about the errors and possible solutions, please read the following articles:
Error: [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Error: Process completed with exit code 1.

一键执行下载

@echo off、
chcp 65001
cd src\main\resources
set /p url="输入要替换的网址:"
echo [ >downloadPath.json
echo "%url%" >>downloadPath.json
echo ] >>downloadPath.json
cd /d %~dp0
call mvn clean package
cd /d target
chcp 936
java -jar finder-4.0.0-runner.jar

将上面的内容复制到txt文件中,然后更改后缀为bat,将这个文件放入作者源代码的第一级目录下,然后可以将快捷方式发送到桌面运行,或者直接运行,只要在弹出了cmd窗口中输入你想要下载的网址即可,目前只支持单个网址

是不是网站反爬升级了?

本来用的科学上网服务器访问会跳转到cloudflare, 然后又换了个服务器还是不行,找了几个代理试也一样,但用浏览器翻墙可以正常访问,很奇怪,是不是反爬升级了

禁漫娘好像升级了反爬虫,全是五秒盾提示

大概从前几天开始吧,下载全部不成功:

1.我尝试过 Github Actions:

五秒盾

2.我尝试过本地打包+Cookies(不要意思cmd有乱码):

五秒盾

好像都无法绕开五秒盾了。是否得等几天再试试呢?

好几个Annotation报错

image
几个接口貌似已经不用了,另外还有一个应该是download fail,不知道有没有关联

有些漫画超过500张图的,只能下载500张图

有一些漫画超过500张图,浏览时第一页显示500张图,后面的需要点第2页或第3页这样看,下载时只能下载第一页的500张图。哪怕把第2页、第3页的地址添加到下载中也没用,只会下载第1页的那500张图。

錯誤訊息且無result

有些漫畫會出現此錯誤訊息並且沒有result產生
No files were found with the provided path: /home/runner/work/finder. No artifacts will be uploaded.

一直没搞懂这个科学代理怎么配置

是需要云服务器的Ip和端口,还是本地有代理节点就可以了,但是本地代理只是填写节点的ip和端口就能代理了吗,我不太懂,反正我没有试成功,还是只要向教程里一样写就可以了

下载6个小时也没下完一个,有报错

[INFO]
[INFO] --- quarkus-maven-plugin:2.8.0.CR1:build (default) @ finder ---
Warning: [io.quarkus.resteasy.reactive.server.deployment.QuarkusServerEndpointIndexer] Quarkus detected the use of JSON in JAX-RS method 'io.github.jiayaoO3O.finder.controller.ComicController#download' but no JSON extension has been added. Consider adding 'quarkus-resteasy-reactive-jackson' or 'quarkus-resteasy-reactive-jsonb'.
[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building uber jar: /home/runner/work/18-comic-finder/18-comic-finder/target/finder-4.0.0-runner.jar
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 4504ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.177 s (Wall Clock)
[INFO] Finished at: 2022-03-30T00:47:45Z
[INFO] ------------------------------------------------------------------------

emmmmm

我尝试了几个,还是有切割的问题,是我的问题吗?

小白教程贴

经过我坚持不懈地尝试和一些浅薄的知识,我终于成功使用了本地部署,关于action,作者已经讲地很清楚了,我只讲本地部署的自己打包的方式。
别的都没什么好说,就是科学代理方面,首先你要有一个自己的节点,和一个代理软件,软件会有代理端口,不同代理端口对应不同的代理协议,作者这里的科学上网的端口就是软件的代理端口,比如说我使用的就是winxray,它的代理端口如下
image
,这里测试了好像不能使用sock端口,就使用了Http的端口,就成功了,如果代理软件在本机,host就是127.0.0.1,如果在局域网的其他服务器上,就要开启软件的局域网代理功能,winxray是这样的,
image
然后Host就变成代理软件所在的局域网ip,理解是这样,但是我没有测试局域网,大概是这个意思,等下我再去试一下后台模式

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.