- 🎨 界面:Material Design 3 · 深色 / 浅色 / 跟随系统
- 🖼️ 浏览:随机推荐 / 热门排行 / 最新上架 / 分类 / 标签词云;封面错峰预取 + 多层缓存,滚动丝滑
- 🔍 搜索:关键词与「车牌号」解析;语言 / 标签 / 全彩多选筛选器;结果与滚动位置保留
- 📖 阅读:原尺寸解密还原(无横线瑕疵)、恒预加载;详情页预览墙
- ⬇️ 下载:PDF / ZIP / 7z(AES-256,支持加密文件名)/ tar.gz;图像质量四档(解密后按原格式存档)
- 🚇 隧道:WARP(内置 usque 内核)与 Tor(独立插件:obfs4 / WebTunnel / Snowflake 桥,可手动配置)
- 🧩 插件化架构:重组件(如 Tor 隧道)以独立 APK 分发,主包保持精简
- 🛡️ 隐私:隐私模式(数据存应用私有目录)、屏蔽标签、隧道实时仪表
前往 Releases 下载:
| 文件 | 说明 |
|---|---|
jinmanji-<版本>.apk |
应用主体 |
jinmanji-tunnel-tor-plugin-<版本>.apk |
Tor 隧道插件(可选;需要 Tor 模式时安装) |
建议安装顺序:先装插件,再装主体(两者需使用同一签名构建)。
需要:JDK 17+、Android SDK(platform 35 / build-tools 34.0.0)。
git clone https://github.com/jinmanji/jinmanji-app.git
cd jinmanji-app
./gradlew assembleDebug # 或:sh build.sh产物:
app/build/outputs/apk/debug/app-debug.apk— 应用主体plugin-tor/build/outputs/apk/debug/plugin-tor-debug.apk— Tor 隧道插件
推送代码或标签不会自动构建,只有两种方式会触发:
- 在 GitHub 上发布 Release 时(推荐)
- 在 Actions 页面手动 Run workflow
触发后 Actions 会自动:
- 编译两个 APK
- 依据「上一标签..当前标签」的提交记录生成更新说明
- 将说明补全进 Release(保留手写部分)并附带上传 APK
详见 .github/workflows/release.yml。
签名:CI 通过仓库 Secrets(
JINMANJI_KEYSTORE_BASE64/JINMANJI_STORE_PASSWORD/JINMANJI_KEY_ALIAS/JINMANJI_KEY_PASSWORD)装载固定密钥签名,与本地构建保持一致,各版本可互相覆盖安装;未配置时会退化为临时调试签名(不同构建互不兼容)。
app/ # 应用主体(UI / 网络 / 下载 / 内置 WARP 隧道)
plugin-tor/ # Tor 隧道插件(独立 APK:tor + lyrebird + snowflake)
- 本项目采用 GNU GPL-3.0 开源,详见 LICENSE
- 第三方组件清单与灵感来源:THIRD_PARTY_NOTICES.md
本项目为非官方第三方客户端,仅供学习与技术研究使用;请勿用于任何商业用途或违反当地法律法规的行为。请自行评估并承担使用风险。
📜 更新历史(点击展开)
- v0.1.0 — 首页:随机推荐 / 热门排行 / 最新上架;分类浏览(总/月/周/日榜 + 最新);主题设置(跟随系统 / 浅色 / 深色)
- v0.1.1 — 修复:页眉双重留白;"换一批"/刷新加载反馈 + 本地洗牌;分类 0 计数隐藏;首屏提速(域名与 /setting 改为后台异步);官方图片域名(/setting 下发);新增文件日志(/Android/media/com.mobai.jm/mobai.log)
- v0.2.0 — 完整阅读功能:本子详情页 → 章节目录 → 阅读器(懒加载 + 恒预加载后 5 页 + 图片乱序解码);页眉 64→48dp、页脚 80→52dp 精简;"换一批"仅在池变化时二次刷新
- v0.2.1 — 修复:阅读页标题与状态栏重叠;阅读提速(乱序参数改后台不阻塞、API 强制 HTTP/1.1、缩短超时、域名故障记忆);图片改用 reader.html 同款多 CDN 分流 + 失败自动轮换线路
- v0.2.2 — 修复严重bug:图片解密分段数的哈希输入应为【不带扩展名】的文件名(与官方 jmcomic 一致:md5(photoId + "00001") 而非 md5(photoId + "00001.webp"));14/14 实测样本吻合
- v0.3.0 — 新增:搜索页(关键词/「jm车牌号」快速解析)、本地收藏(详情页♥ + 独立管理页)、整本下载(离线可读)、本子详情持久化缓存(秒开 + 断网可看目录)、缓存管理(开关/已用大小/一键清除)、阅读器任意缩放(双指 1x~5x + 双击);优化:域名故障隔离(连续失败自动跳过 5 分钟)、图片域名启动测速分流、首页板块独立加载、取消协程误报修复
- v0.4.0 — 新增:PDF 下载(独立线性队列 + 2 并发 + 保存到 Download + 前台通知进度/队列)、详情页升级(语言国旗、官方 Material Symbols link 图标、右下角收藏 FAB、开始阅读/下载、内容预览墙、标题两行)、PDF 下载路径可配置、日志级别可配置(默认错误)、随机推荐独立页(12/页分页)、标签词云、收藏支持 tag(长按标签收藏/收藏页手动添加)、三重预加载缓存(首页/章节列表/下一章);修复:阅读缩放越界露白(边界限制)、搜索结果返回丢失(状态保留)、首页缓存优先秒开
- v0.4.1 — 修复:全局返回键处理(随机页/词云页/下载页不再直接退出;非首页标签返回先回首页;App 级兜底);随机页/词云页系统栏适配;FAB 不再遮挡导航键且收藏后变红;通知点击跳转「我的下载」;新增:我的下载页面(进度条/打开位置/分享/删除/批量选择/强制终止)、预览图点击直达阅读该页、随机推荐多页翻页(每页数量可在设置调整,默认24)、设置页整理
- v0.5.0 — 新增:搜索历史(长按多选批量删除、可清空);浏览历史页面(排序 / 多选批量删除·批量收藏·取消收藏 / 设置可关闭记录);收藏页与历史页排序(时间或标题 · 正序或倒序,默认时间倒序);下载任务封面预览图 + 下载时间(Unix 时间戳动态转换,旧记录不显示);首页点按刷新(隐藏刷新按钮,已在首页再点首页标签 = 刷新)。修复:返回后列表位置丢失(导航重构:主界面常驻 + 覆盖层堆叠,首页/搜索/收藏/分类/随机页位置全保留);详情页预览图“横线”问题(改为先解密再缩放);搜索框提示词改为“请输入……”
- v0.5.1 — 新 Logo 上线:采用「方案A · 半墨半白」(粗圆环 + S 形波浪分界 + 左墨右白),替换全部图标资源:自适应图标(前景/背景/单色主题图标)+ 5 档密度后备图标;背景色 #F7F4EE
- v0.5.2 — 修复阅读页图像“横线”问题(JM1468527 第11页案例实测:先缩放到 1080 再解密会产生平均 3px、最大 8px 的接缝错位;现改为新 PageLoader:原图下载→原尺寸解密→再缩放,并带页磁盘缓存(可在“清除缓存”中清理);详情页预览同步改用同一加载器)
- v0.5.3 — 预览“一次下载、双重缓存”:详情页预览下载的原图 raw 直接入页缓存(阅读器免二次下载)+ 缩略图存盘(*.jpg 小文件,重访详情页秒开、无需再解码原图);修复“清除缓存”对嵌套目录删除不彻底(deleteRecursively)
- v0.5.4 — 新增:首页屏蔽标签(设置→通用,多关键词,标题/作者/分类命中即隐藏);数据导入/导出(.json,多选 收藏/历史/系统配置,合并式导入、向下兼容);开发者模式(连点关于页“禁漫姬”5 次开关;“已用缓存”仅开发者模式显示)
- v0.6.0 — 新增(开发者模式·实验性网络):SNI 切片(ClientHello 分段,位置/间隔可调);SNI 绕过·置空;DoH(默认 https://.gl.doh.tw/,含配置与“测试”按钮);ECH(实验:DoH 查 HTTPS 记录后反射注入,取决于设备 TLS 栈);清除 DNS 缓存。JmApi 与 Coil 全链路生效,设置变更即时重建连接
- v0.7.0 — 实验性网络大更新(开发者模式):MASQUE 标准客户端(内置 usque 内核 ≥ Android arm64,实测 warp=on):一键注册 Cloudflare WARP 免费账号(注册全程走 DoH 优先)、导入/导出 MASQUE 连接信息(.json)、连接开关(全 App 流量经本地 SOCKS5 隧道接管,动态代理即时生效)、通道测试(warp=on 验证);DoH 升级为四模式:关闭 / 遵循系统 / 增强(失败自动降级)/ 完全(失败终止连接,Error 日志)
- v0.7.1 — 修复 WARP 注册 404:设备密钥登记必须用 PATCH 方法(此前误用 POST);已用等效脚本对 CF API 全流程实测通过(POST /reg → PATCH → 200,key_type 成功切换 secp256r1)
- v0.7.2 — 修复 MASQUE 内核启动报“Failed to get private key”:私钥需为 SEC1 格式,此前写入的是 PKCS8(SEC1 转换函数有 bug);现改为直接构造 SEC1(与 Go 字节级一致,已用等效脚本验证:重建字节 == 原样本,且 usque 解析通过);对旧版残留配置给出“重新注册”提示
- v0.7.3 — 语言国旗全面化(所有封面卡片右上角:首页/搜索/分类/收藏/历史/随机页通用,封面缺失自动回退);搜索页筛选器(语言:全部/🇨🇳/🇯🇵/🇺🇸/🇰🇷 + 🌈全彩,按标题关键词智能匹配,显示筛后计数);详情页作者名点击→搜索该作者作品、长按→复制;提速:首屏后封面后台预取 + Coil 内存缓存扩容至 35%
- v0.7.4 — 修复开启 WARP 后全线“SOCKS: Host unreachable”(根因:usque 默认 DNS 超时 2s 在隧道内大量误失败,实测 --dns-timeout 10s 后 3/3 成功);新增:连接后自动“隧道预热”(首个业务请求不再超时)、设置项「启动时自动连接」
- v0.8.0 — 大更新:搜索筛选器改为下拉对勾多选(无 emoji、可自定义筛选词≤16 字符、支持更多语言);搜索页状态全局保留(切标签不重搜、含滚动位置);全站分页条支持点击跳页(随机/首页最新/搜索/分类);首页新增“分类速览”快捷入口(含自定义);分类页支持自定义分类/tag(基于搜索 API);新增内置极简浏览器(开发者模式):请求走 WARP/DoH、默认禁截屏(可关)、支持用户脚本(GM_* 兼容)、收藏/下载/历史(时间排序);文案精简;修复 MASQUE 状态“已连接·已连接”重复
- v0.8.1 — 内置浏览器大修:拦截不再吞重定向(3xx+Location 透传,URL栏/相对链接正确);按 Content-Type 传 charset;下载改为流式写入(大文件不再爆内存);WebView 常驻组合 + 记录页覆盖层(不再卸载重载页面);记录页左上角返回修正;进入时按当前网络设置重建客户端;新增 64MB 磁盘缓存、停止/刷新按钮、主框架错误页(可重试)、三方 Cookie 与混合内容兼容
- v0.8.2 — 浏览器修复第二轮:返回/前进时地址栏实时同步(doUpdateVisitedHistory);Cookie 逐条写入 CookieManager(多 Set-Cookie 逗号拼接损坏 Cookie 链——Cloudflare 质询无法通过的关键原因);UA 去掉 "wv" 标记(Cloudflare/Google 对应用内 WebView 的降级识别);新增浏览器网络模式菜单(自动/直连/强制隧道)便于逐站排查
- v0.8.3 — MASQUE 抗封锁升级:内核换用 main 分支(支持 TCP/HTTP2 回退);自动换线梯(QUIC 主端点 → TCP+友好SNI → QUIC 备用 IP → TCP 备用线路,成功线路优先重试);新增设置项「传输模式」(自动/仅QUIC/仅TCP);实测记录:网络对 WARP 端点全面干扰时(QUIC 超时/TCP reset)此梯可自动选择可用通道
- v0.8.4 — 聚焦优化:移除内置浏览器(不再维护);国旗识别升级为字符脚本级(假名→🇯🇵、谚文→🇰🇷、纯拉丁→🇺🇸、纯汉字→🇨🇳,中日英韩本子都显示正确国旗);首页屏蔽修复(随机推荐页现同步过滤 + 添加即时提示);提速:详情预览墙预热前 15 页缩略图(滚动不空白)、图像并发 3→4、首页封面预取收敛为 6 张(不再抢占带宽)、列表稳定键;抗封锁:换线梯升级(备用端点从 3 个池中随机 + TCP 双 SNI 池轮换)
- v0.8.5 — 国旗/全彩判定升级为标签级:后台静默抓取 /album 的真实 tags(中文/日本語/English/한국)校准,准确率大幅提升,顺带预热详情页;修复「已连接·已连接」(线路名不再重复前缀);修复 WARP 下搜索超时(API 读超时 8→14s、调超时 10→18s,失败时提示隧道繁忙可重试)
- v0.8.6 — 搜索卡死修复:域名重试每域名都要等满超时(原 5 域名 × 18s ≈ 90 秒转圈)→ 现 WARP 下最多试 2 个域名、直连 3 个;新增 40 秒硬性上限兑底(超时显示可点重试);旧结果保留(再次搜索时旧网格不消失,顶部细进度条提示);失败时网格顶部显示「⚠ 点此重试」横幅;加载文案区分「正在通过 WARP 隧道搜索…」
- v0.8.7 — 新增隧道仪表:页眉右上角实时 HUD(延迟 ms · 实时速度 ↓ · 累计流量 Σ;每秒刷新、每 4 秒测延迟,点击看详情);流量统计基于 OkHttp 实际读取字节(仅隧道运行时计数,持久化累计);设置 → 实验性网络 → MASQUE 新增「隧道流量」行(累计/本次/点击清零)
- v0.8.8 — 五连修:①图像加载提速——OkHttp Dispatcher 并发上限 5→24/主机(上限 96)、Coil 关闭淡入缩短感知延迟;②缓存命中率——跨 CDN 域名共享缓存键(同图不同域名同一缓存);③隧道延迟——延迟探测改用持久连接(此前每次重握手导致读数虚高 2-5 秒)、探测顺带保活隧道、备用端点池 +1;④屏蔽修复(真正根因):此前只匹配标题/作者/分类,但现在支持真实标签(TagStore 校准的 tags)参与屏蔽,屏蔽词非空时自动加大标签后台校准量;⑤随机推荐大池化——随机池+最新+排行去重合并后按页抽取,各页不再“同一批只换顺序”
- v0.8.9 — 心跳隐形化(回应流量特征顾虑):探测间隔随机抖动(前台 612s、高负载自动降到 1530s、后台 45~75s 慢保活);App 前后台自适应(经 Activity 生命周期);速度采样保持每秒且零发包(纯本地计数)——心跳在隧道内部加密,对外只是普通 QUIC 长连接活跃而已
- v0.8.10 — 新增随机 SNI:每次连接从 SNI 列表随机抽取(QUIC/TCP 全线路生效),默认
speed.cloudflare.com;设置 → 实验性网络 → 「隧道 SNI」可手动维护多个 SNI 域名(本地校验、去重、持久化) - v0.9.0 — 体验/隐私大版:DoH 默认端点展开为随机子域+随机路径(避开 /dns-query 特征);新增隐私模式(默认开,数据存应用私有目录,自动迁移旧数据;开关在开发者区);新增HUD 开关(默认开,控制按钮在开发者区);传输模式 QUIC 优先(QUIC 全试完才降 TCP;预热失败先重试一次);手动修改隧道连接信息(JSON 编辑器);隧道流量清零改为二次确认;文案全面精简(去括号/去冗长解释,“MASQUE” 更名“隧道”)
- v0.9.1 — 封面加载深度提速(参考 Mihon 扩展与 PixEz 实践):①图片 CDN 启用 HTTP/2 多路复用(旧强制 H1.1);②图床健康探测——启动后实测各图片域名延迟并排序,死域名自动出局;③失败换域重试——单图加载失败自动轮换其他图床(最多 2 次)并降级故障域名;④首页/搜索/分类/随机全部错峰预取(首屏即预取 12~27 张,滚动到哪都有图);⑤列表封面 fallback 改用
_3x4小图(体积约大图 1/10);⑥详情缩略图 RGB_565 解码(内存减半、更快) - v0.9.2 — 启动门控 + 并发可调:①「启动时自动连接隧道」开启时,启动先连隧道,成功后才加载资源;失败直接停在错误页(停止加载),可重试或跳过直连;②设置新增「图片并发数」(0=自动,1..512,运行时即时生效):图片与 API 共享动态调度器,详情缩略图并发跟随(上限 32 保护内存);③封面/预取全面使用小图
_3x4 - v0.9.3 — 修复自动注册的
endpoint_v6提取 bug([v6]:0解析后残留]的问题);新增连接信息自动矫正:存量坏配置在下次启动/导入时自动修正(括号/端口残留清洗),并补齐 endpoint_v6 默认值 - v0.9.4 — 真正的提速大招(实测定位:TCP 连接仅 5ms 但 TLS 握手要 ~1 秒,复用连接后 TTFB 仅 ~0.3s):①JmApi 也启用 HTTP/2 多路复用(一次握手承载全部 API/图片请求,彻底告别“每请求一次 1 秒握手”);②共享连接池 32 连接 / 10 分钟保活(API 与图片共用,二次访问几乎零握手);③调研结论:CDN 无
cdn-cgi缩放、页面图无缩略变体(实测 502)、IPv6/v4 速度相同——真正的杠杆就是“握手复用” - v0.9.5 — 隧道预热升级:连接成功后除了 API 主机,顺带预热图片主机(HEAD 一张封面)——实测隧道内 DNS 偶发 i/o timeout,首个图片请求可能卡 10s+,预热后首屏封面不再踩坑;隧道+SNI 伪装(如 recaptcha.net)下,内层 SNI 对外不可见,握手干扰被隐藏,本版的连接复用收益更大(实测复用 0.53s vs 新建 2.56s)
- v0.9.6 — 修复搜索卡死回归(根因:v0.9.4 给 API 开 H2 踩中历史“h2 假死”坑)+ 弹底:①API 默认回到 H1.1,新增「HTTP/2 实验」开关(默认关,切换即时生效);②apiGet 加 18 秒总预算 + 单次尝试剩余预算封顶(彻底杜绝无限转圈);③修复双刷:换一批改为单段刷新(只在网络结果返回后跳一次);④隧道下自动跳过 SNI 切片/置空(内层包不被看到,切片反而拖慢);⑤隧道 DNS 池 +1(8.8.8.8)
- v0.9.7 — PDF 瘦身(不降画质):自研流式 PDF 写入器替换 Android PdfDocument(后者把每页无损重编码为 Flate,体积常为原图 5~10 倍)→ 改用 JPEG DCTDecode 嵌入:默认「视觉无损(q97·原始分辨率)」,另有「最高(q100)」与「压缩(q90·宽≤1240)」档位;逐页编码即时释放位图(峰值内存≈单页);设置 → 下载 → 「PDF 图像质量」
- v0.10.0 — 大版本:①四 bug 修复:随机页作者名点击跳搜索(App 导航接线)、随机页改「单次洗牌+顺序分页」(同批内不同页零重复,换一批才换新顺序)、HomeStore 加载异常导致“重试永久失灵”的卡死修复、屏蔽标签全量校准强化(有屏蔽词时对首页/搜索/分类/随机全量拉真标签,不再只校准前几排);②下载系统大升级:下载前弹窗可勾选「以后不再弹出」;自定义格式(PDF / ZIP / 7z / tar.gz)、PDF 档位/压缩级别(储存~极限六档)在弹窗内直选;7z 支持 AES-256 密码(固定/随机;随机密码可「写入文件名」或「二级压缩包(内附解压密码.txt)」;7z 自动加密文件名);压缩包内为无损图(API30+ WebP 无损,低版本 PNG);③封面加载占位动画(呼吸式闪烁块);④封面墙标题两行;⑤诊断信息收进开发者模式
- v0.10.1 — 修复:从随机页/历史等覆盖层进入详情后,点 tag/作者跳搜索被覆盖层挡住的问题(跳转时自动关闭覆盖层);下载设置弹窗重构为「设置行 + 候选选择器」(不再挤成一坨,选择项以候选弹窗呈现)
- v0.10.2 — 修复 7z 压缩级别报错(
LZMA2 dictionary size must be at least 4 KiB根因:库把 Integer 选项当作“字典大小”而非级别,改用LZMA2Options对象传参,已 JVM 实证);下载模式/压缩模式改到设置页:设置 → 下载 新增「下载格式 / 压缩级别 / 压缩包密码 / 固定密码 / 随机密码方式」;下载弹窗简化为摘要+「以后不再弹出」 - v0.10.3 — 导出/压缩进度可视:下载完成后的 PDF 合并、压缩包生成阶段新增逐页进度(列表页进度条 + 状态文案「导出中 x/y」、详情页状态、通知栏进度同步)
- v0.10.4 — 修复“压缩包转换后比原图还大”:根因是源本身为有损 WebP,无损重编码必然膨胀 3~8 倍;新增「压缩包图像质量」三档(视觉无损 WebP q95 默认 / 原图无损 / 压缩优先 q80),视觉无损档体积≈原始甚至更小;下载缓存复用:阅读缓存(page_cache)或手动下载过的页面,下载时直接复用本地原始字节,不再重复下载(日志显示缓存命中数)
- v0.10.5 — 新增「原图直存」档位(压缩包图像质量):完整保留站点原始文件,不解密、不转换、体积=源文件、导出最快;压缩包内附「说明.txt」(含乱序加密提示与缺失页统计);界面摘要同步显示
- v0.10.6 — 「解密后按原始格式存档」做实:压缩包图像质量重命名为「视觉无损(解密后·同格式)/ 像素无损(解密后)/ 压缩优先(解密后)/ 原样直存(不解密)」;逐文件按源扩展名输出(源 jpg → 输出 jpg,源 webp → 输出 webp),不再统一转换
- v0.11.0 — 隧道插件体系首发:新增独立插件 APK「禁漫姬·Tor 隧道」(com.mobai.jm.plugin.tor,~18MB:tor 0.4.9.12 + lyrebird[obfs4/WebTunnel] + snowflake-client);主体新增「隧道模式:WARP / Tor(插件)」,支持手动粘贴网桥行(obfs4/webtunnel/snowflake),引导进度实时显示;插件与主体采用手工 Binder 协议 + 签名级权限(仅同签名可绑定),进程隔离、独立升级;流量路由统一出口(WARP=18080 / Tor 插件=18081)
- v0.12.0 — 品牌调整:应用更名「禁漫姬」;包名(applicationId)改为
com.jinmanji.app(全新应用身份,旧版「禁漫姬」数据不迁移);全新 Logo 全套图标(自适应/单色/圆形/全密度);插件更名「禁漫姬·Tor 隧道插件」v0.2.1(含图标;内部包名仍 com.mobai.jm.plugin.tor,签名级权限机制不变;已更新拉起主体的新包名) - v0.13.0 — 搜索升级:排序(最新 / 最多观看 / 最多图片 / 最多爱心)、时间筛选(今日 / 本周 / 本月 / 指定年月)、筛选补足自动扫描(不再出现连续空页);阅读器新增横向翻页模式(全局记忆)
- v0.13.1 — 筛选面板改为可滚动底部抽屉,解决选项超出屏幕无法选择的问题
- v0.14.0 — 评论区查看:详情页「评论」按钮 + 独立评论页(翻页 / 剧透遮罩 / 点赞数,只读)
- v0.15.0 — 全局崩溃兜底:崩溃提示页(独立进程保活)+ 自动复制崩溃信息到剪贴板 + 引导至 jinmanji.com 反馈 + crash.log 落盘
- v0.15.1 — 开发者模式新增「模拟崩溃」自测:双击立即随机触发一种真实崩溃(NPE / 越界 / 除零 / 类型转换 / 并发修改 / 状态断言)
- v0.15.2 — 崩溃页文案精简;崩溃报告中异常无消息时不再显示 null,并附反馈地址落款