- 逆向 SpadeA(黑桃A) PlayAuth 混淆,从 spade_a 还原 AES-128 内容密钥
- 实现 cenc-aes-ctr MP4 解密(senc 逐样本 CTR + stsd entry 修复),实测可播放
- 新增 /video/proxy/{key} 代理:稳定 key + 磁盘缓存(二次命中提速 130x)+
http.ServeContent 支持 Range/206/seek 流式播放
- /video 接口新增 output(url/proxy,默认 proxy) 与 quality(max/720p/档位key) 参数,
可由 config fanqie.video.* 配置默认值;无匹配清晰度时明确报错
- 代理映射复用 audio_cache 存储,抽取 loadMediaProxyEntry 共用;挂接 7 天缓存清理
- deploy.sh 新增 --sync-nginx:备份→重写→校验→失败自动回滚,同步视频代理段配置
125 lines
3.7 KiB
YAML
125 lines
3.7 KiB
YAML
# 番茄小说API服务配置文件
|
||
|
||
# 服务器配置
|
||
server:
|
||
port: "40180" # 监听端口
|
||
host: "0.0.0.0" # 监听地址
|
||
access_key: "" # 访问密钥,为空则不启用验证(用于 /status)
|
||
rate_limit_qps: 0 # 每 IP 每秒请求上限(令牌桶,突发 10),0=不限制
|
||
|
||
# 请求日志(只记元数据与错误摘要,不存响应体;在 /status 页"最近请求"展示)
|
||
# 注意:日志时间显示与"近 7 天请求"统计依赖 .env 中的 TZ 时区
|
||
request_log:
|
||
enabled: true
|
||
retention_days: 7 # 日志保留天数,自动清理
|
||
|
||
# 番茄小说配置
|
||
fanqie:
|
||
# 算法类型: "gorgon" 或 "8404"
|
||
# gorgon: Gorgon算法
|
||
# 8404: 备用算法
|
||
algorithm: "gorgon"
|
||
|
||
# 签名方法: "sign2" 或 "sign4"
|
||
# sign2: 仅Gorgon签名
|
||
# sign4: X-Gorgon + X-Ladon + X-Argus 完整签名
|
||
signature: "sign4"
|
||
|
||
# 内容处理配置
|
||
content:
|
||
# 是否移除图片(默认false,保留图片)
|
||
remove_images: false
|
||
|
||
# 是否移除图片描述(默认false,保留描述)
|
||
remove_image_desc: true
|
||
|
||
# 是否移除空行(默认true,移除空行)
|
||
remove_blank_lines: true
|
||
|
||
# 是否移除HTML标签(默认false,保留HTML)
|
||
remove_html_tags: true
|
||
|
||
# 是否移除章节名(默认false,保留章节名)
|
||
remove_chapter_title: true
|
||
|
||
# 是否添加段落缩进(默认true,添加两个全角空格)
|
||
add_paragraph_indent: true
|
||
|
||
# 段落间使用双换行(true=\n\n, false=\n)
|
||
double_newline: true
|
||
|
||
# 是否启用段评功能(默认true,启用段评)
|
||
enable_review: true
|
||
|
||
# 视频处理配置
|
||
video:
|
||
# 输出模式:proxy / url
|
||
# proxy: 返回本地解密代理URL /video/proxy/{key}(已解密,可直接播放,推荐)
|
||
# url: 返回原始CDN链接(内容为 CENC 加密,需自行解密)
|
||
output_mode: "proxy"
|
||
|
||
# 默认清晰度:max(最高档)/ 360p/480p/540p/720p / 档位 key(video_1..N)
|
||
# 留空返回全部清晰度;/video 接口的 quality 参数优先于此配置
|
||
quality: "max"
|
||
|
||
# 解密后视频的磁盘缓存(同一视频重复播放直接读本地文件,无需重新下载解密)
|
||
cache_enabled: true
|
||
cache_path: "./video_cache"
|
||
|
||
# 漫画处理配置
|
||
manga:
|
||
# 输出模式:proxy / data_uri / url
|
||
# proxy: 返回本地代理URL /manga/image/{itemID}/{index}(图片已解密,推荐)
|
||
# data_uri: 返回 data:image/jpeg;base64,/9j/4AAQ...
|
||
# url: 返回原始图片URL数组(不可用:链接404且内容加密)
|
||
output_mode: "proxy"
|
||
|
||
# 缓存配置
|
||
cache:
|
||
# 是否启用正文内容缓存
|
||
enabled: true
|
||
|
||
# 存储后端:sqlite | postgres
|
||
backend: postgres
|
||
|
||
# SQLite数据库文件路径(backend 为 sqlite 时使用)
|
||
sqlite_path: "./cache.db"
|
||
|
||
# PostgreSQL连接配置(backend 为 postgres 时使用)
|
||
# 敏感值(密码等)建议放 .env,见 .env.example;环境变量优先于此处配置
|
||
postgres:
|
||
host: "127.0.0.1"
|
||
port: 5432
|
||
user: "postgres"
|
||
password: ""
|
||
database: "fanqie"
|
||
sslmode: "disable" # disable | prefer | require
|
||
|
||
# Redis缓存(启用后正文缓存与音频代理缓存走 Redis,统计数据与设备池仍在 SQL 库)
|
||
redis:
|
||
enabled: true
|
||
host: "127.0.0.1"
|
||
port: 6379
|
||
password: ""
|
||
db: 1
|
||
|
||
# 是否启用正文内容缓存自动清理
|
||
cleanup_enabled: true
|
||
|
||
# 正文内容缓存清理时间(秒),0表示不自动清理
|
||
cleanup_seconds: 86400
|
||
|
||
# 设备密钥池配置
|
||
device_key_pool:
|
||
# 是否启用设备密钥池
|
||
enabled: true
|
||
|
||
# 初始化设备数量
|
||
initial_size: 20
|
||
|
||
# 最小设备数量(低于此数量自动补充)
|
||
min_size: 10
|
||
|
||
# 最大设备数量
|
||
max_size: 30
|