
【免费下载链接】fqapp内容聚合 Android 客户端小说/短剧/漫剧/听书/漫画Flutter UI 进程内 Rust 核心无自建服务器、无需 root项目地址https://gitcode.com/gh_mirrors/fq/fqapp点击查看免费下载fqapp什锦铺是一款内容聚合 Android 客户端覆盖小说、短剧、漫剧、听书、漫画五类内容采用 Flutter UI 进程内 Rust 核心的架构无自建服务器、无需 root。它内置一个 loopback HTTP 适配器把/api/v1/*只读路由和/src/*缓存资源开放在127.0.0.1:18921让 Legado 书源、本地工具能直接复用 App 内部的签名、解密与分发管道不必自己实现任何上游协议。一条管道、两种入口fqapp 的 loopback 适配器是什么fqapp 的所有业务逻辑只有一份实现Rust 分发器。App 自己走 flutter_rust_bridge 的 FFI 直调外部客户端则走 loopback HTTP 适配器两者共用同一个dispatch入口源码见 rust/src/dispatch.rs 和 rust/src/server.rs。┌────────────────────────────────────────────┐ │ Flutter AppUI │ │ ApiClient → BackendTransport │ └───────────────┬────────────────────────────┘ │ flutter_rust_bridgeFFI进程内 ▼ ┌──────────────────────────┐ │ Rust 核心 fqapi_core │ 签名 · 解密 · 设备池 │ 统一分发器 dispatch │ └──────┬─────────────┬─────┘ │ │ HTTPS 请求上游 loopback │ ▼ 127.0.0.1:18921 上游 API ▼ Legado 书源 / 本机工具 /api/v1/* 只读路由 /src/* 缓存资源这个设计带来三个直接好处只读复用Legado 书源无需复刻签名算法Argus 等和设备池逻辑直接拿到归一化 JSON零部署不需要自建服务器不需要 root端口写死在 assets/config/config.json 的port: 18921安全分层读接口对任何本机客户端开放写接口仍要求每次启动生成的能力值capability如何找到本地接口地址并完成连通性自测打开 App 后进入「设置 → 服务」就是本地的 API 控制台实现见 lib/pages/api_service_page.dart看状态页面顶部的绿点表示 loopback 服务「运行中」并显示设备池数量来自/health抄地址本机地址形如http://127.0.0.1:18921点一下即可复制这是你拼书源 URL 的根地址点「自测」向/health发一次真实请求成功会提示「通了 · HTTP 200 · N 个设备」在电脑侧想验证连通性可以用 ADB 端口转发文档见 DEVELOPMENT.md 调试技巧一节adb forward tcp:18080 tcp:18921 curl http://127.0.0.1:18080/health返回类似{status:ok,devices:3}即说明整条管道就绪。提示/health不触达上游、不消耗设备轮换预算是判断「服务活着没有」最轻量的探针。Legado 书源可用的 fqapp 接口清单控制台页面默认收起一份接口参考展开后列出四条最常用的 GET 路由完整列表见 DEVELOPMENT.md 的「API 对接说明」用途路径说明搜索/api/v1/search/fanqie?query关键词关键词搜索返回归一化条目详情/api/v1/books/{book_id}书名、作者、简介、封面目录/api/v1/books/{book_id}/directory章节列表chapterListWithVolume格式正文/api/v1/chapters/{item_id}章节正文与插图几个对接时值得注意的约定响应信封成功是code200或code0失败为successfalse且带error信息{ }是变量book_id、item_id需替换成搜索结果里的实际 ID/src/*静态资源漫画图片、缓存媒体等走这个前缀支持 HTTP Range206 分段大文件从磁盘流式返回不占满内存实现与回归见 rust/tests/static_and_loopback.rs把 Legado 书源接到 fqapp3 步配置思路Legado 书源的核心是把「搜索→详情→目录→正文」四步映射到 HTTP 接口。接 fqapp 的思路非常直接根地址填设置页复制的本机地址http://127.0.0.1:18921同一网络其他设备则用下方 LAN 模式给出的http://手机IP:18921搜索步请求/api/v1/search/fanqie?query{{key}}从条目中取 ID 与标题目录与正文步依次请求/api/v1/books/{{id}}/directory与/api/v1/chapters/{{item_id}}因为路由是纯只读 GET、无参数签名要求Legado 无需任何特殊头部即可调用本机工具脚本、curl、自建聚合页同理。这也是适配器注释里明确写下的目标场景「External readers (Legado book sources, local tooling)」。安全设计fqapp 如何保证本机 API 不被滥用loopback 适配器虽然只绑127.0.0.1但仍实现了完整防护层全部用例在 rust/tests/loopback_guard.rs 中用真实 socket 回归Host 守卫每个请求的Host必须精确指向本监听器含端口防止 DNS rebinding——攻击者页面把自己的域名解析到127.0.0.1也读不到响应Origin 守卫携带Origin的请求必须来自本监听器挡住跨站表单 POST读开放、写受控读路由对任何本机客户端应答而以设备身份提交动作的写路由发评论、点赞、段评仍要求每次启动的能力值可通过/_session/token路径前缀、Authorization: Bearer或会话 Cookie 携带。同机的其他 App 无法冒用你的设备身份发帖请求体上限64 MiB超限直接 413且逐帧丢弃、不全量缓冲局域网共享同一网络的设备怎么读控制台里有一个「局域网共享」开关。开启后监听器绑定所有网卡同一 WiFi 下的设备可用http://手机IP:18921访问只读路由页面会列出检测到的局域网地址并附红色提示无密码、公共 WiFi 建议关闭。守卫在 LAN 模式下改为接受任意 IP 字面量但域名一律拒绝DNS rebinding 防护依然生效。常见问题fqapp 本地接口连不上或数据异常怎么办Q搜索或接口突然失败内容实时来自上游网站上游调整或网络波动都会临时影响。fqapp 没有自己的服务器无法绕过上游变化过一会儿重试即可。Q正文乱码、视频解不开一般是设备信息过期。清除应用数据后重开会自动重新注册也可以删除私有目录里的device_pool.json后重启。注意清除数据会同时删除阅读记录与缓存。Q403host not allowed是什么意思请求的Host头没有指向本监听器端口不对或用了域名。检查书源根地址是否包含正确端口且不要使用任何域名形式。Q写接口返回 401session required这是预期行为——发评论、点赞等设备绑定写操作需要 App 内部能力值外部工具只能使用只读路由。小结fqapp 的 loopback HTTP 适配器用一份业务实现同时服务 App 自身与外部生态Legado 书源、本机脚本共享同一条「签名 → 请求上游 → 解密 → 归一化」的管道而 Host/Origin 双层守卫和读写分离的能力值机制把安全边界划得很清楚。如果你想把番茄系内容接进自己的阅读器或自动化工具从「设置 → 服务」复制一个地址、请求一次/health就是最快的上手路径。赞分享【免费下载链接】fqapp内容聚合 Android 客户端小说/短剧/漫剧/听书/漫画Flutter UI 进程内 Rust 核心无自建服务器、无需 root项目地址https://gitcode.com/gh_mirrors/fq/fqapp点击查看免费下载相关推荐APK InstallerWindows 上的轻量级安卓应用安装工具APK InstallerWindows 上的轻量级安卓应用安装工具 APK Installer 是一款开源的 Windows 安卓应用安装程序负责解析 A桌面应用移动开发开发工具如何快速搭建实时数据管道开源CDC工具的完整实战指南 如何快速搭建实时数据管道开源CDC工具的完整实战指南 在当今数据驱动的时代实时数据处理已成为企业数字化转型的关键。Apache SeaTunnel作为数据集成ETL大数据批处理流处理数据同步变更数据捕获数据质量数据工程dio_test 共享测试包为 Dio 各 HTTP 适配器复用同一套端到端测试dio_test 共享测试包为 Dio 各 HTTP 适配器复用同一套端到端测试 导读 dio_test 是 Dio 仓库Dart/Flutter 最流行的网络后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考