[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80162":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},80162,"VerPadProxy","wangver721\u002FVerPadProxy","wangver721","Bypass browser limits on restricted tablets using manual HTTP proxies. A lightweight Android-hosted framework for seamless PDF, video (HLS), and audio playback. (利用手动 HTTP 代理绕过受限平板的浏览器限制。一个运行于安卓宿主上的轻量级框架，实现 PDF、视频 (HLS) 和音频的无缝播放。)",null,"Python",51,6,4,1,0,42.54,"MIT License",false,"main",true,[],"2026-06-12 04:01:26","# VerPadProxy（基于 mitmproxy 的个人媒体中枢）\n\n\u003Cdiv align=\"center\">\n\n![version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-v1.1.0-blue) ![python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10%2B-3776AB) ![mitmproxy](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmitmproxy-%E2%89%A510-7e57c2) ![license](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green) ![platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-Windows%20%7C%20Android%20Termux-lightgrey)\n\n**在受限网络环境里，把「可配置的 HTTP 入口」升级为可控的本地阅览台**\n\n*面向具备 Wi‑Fi 手动代理能力的终端（例如部分 **受限的教育平板**），由 **安卓宿主设备**（Termux \u002F root 可选）承载 mitmproxy Addon，将指定主机流量改写为本仓库提供的 Web UI。*\n\n\u003C\u002Fdiv>\n\n---\n\n## 目录\n\n- [定位](#定位)\n- [免责声明与合规边界](#免责声明与合规边界)\n- [痛点与适用画像](#痛点与适用画像)\n- [系统全景：概念拓扑](#系统全景概念拓扑)\n- [请求链路：从浏览器到本地文件](#请求链路从浏览器到本地文件)\n- [PDF：多级渲染兜底流水线](#pdf多级渲染兜底流水线)\n- [视频：兼容性探测 → HLS 实时转码 → 进度条对齐](#视频兼容性探测--hls-实时转码--进度条对齐)\n- [字幕：内封 \u002F 外挂协同策略](#字幕内封--外挂协同策略)\n- [音乐：沉浸式播放与后台悬浮窗](#音乐沉浸式播放与后台悬浮窗)\n- [安全与会话治理](#安全与会话治理)\n- [管理面板：用户探针 \u002F 转码任务](#管理面板用户探针--转码任务)\n- [模块与仓库地图](#模块与仓库地图)\n- [快速开始 · 桌面侧（Windows）](#快速开始--桌面侧windows)\n- [快速开始 · 安卓宿主（Termux）](#快速开始--安卓宿主termux)\n- [环境变量参考](#环境变量参考)\n- [媒体目录约定](#媒体目录约定)\n- [能力矩阵（特性开关）](#能力矩阵特性开关)\n- [延伸阅读](#延伸阅读)\n\n---\n\n## 定位\n\n本项目是一套 **HTTP(S) 透明改写层**：在客户端已配置 **HTTP 代理** 的前提下，将被劫持域名下的浏览会话，替换为自建的 **PDF \u002F 音视频 \u002F 图文阅览与上传管理界面**，媒体实体存放在宿主文件系统的 `payload\u002F` 树中，由 `redirect_addon.py` 动态编排响应。\n\n---\n\n## 免责声明与合规边界\n\n- 本项目 **仅供学习研究与个人合规自用**。\n- **禁止**用于规避授权控制、渗透测试未授权目标、干扰考试或教务系统、以及任何违反当地法律法规与机构规章的行为。\n- 仓库内默认主机名、密码仅为占位演示；**上线前务必替换**为你的环境与强口令。\n- 因使用本项目产生的后果由使用者自行承担，贡献者与维护者不承担连带责任。\n\n---\n\n## 痛点与适用画像\n\n| 维度 | 说明 |\n|------|------|\n| **客户端约束** | 部分 **受限的教育平板** 仅开放浏览器与有限的网络策略，但往往允许配置 **Wi‑Fi 手动 HTTP 代理**。 |\n| **宿主侧能力** | **安卓设备** 可通过 Termux 运行 Python 生态与 `mitmdump`；若具备 root，还可辅助热点网关诊断与持久化脚本（可选）。 |\n| **体验目标** | 在同一「可被允许的入口」内完成：PDF 分页阅览、视频（含高阶编码）可观可看、音乐与封面、图片与文本、上传下载与权限细分。 |\n\n---\n\n## 系统全景：概念拓扑\n\n下列示意图描述 **两种典型组网**：热点直连（安卓设备作接入点）与局域网共存（平板与安卓设备在同一上游 LAN）。端口以默认 `2345` 为例。\n\n```mermaid\nflowchart TB\n  subgraph 客户端侧[\"客户端侧（示例：受限的教育平板）\"]\n    B[\"系统浏览器 \u002F WebView\"]\n    PxyCfg[\"Wi‑Fi：手动 HTTP 代理\"]\n    B --- PxyCfg\n  end\n\n  subgraph 无线接入[\"无线接入层\"]\n    AP[\"安卓设备 · 个人热点\\n(逻辑接口常见 ap0 \u002F wlan 协同)\"]\n    LAN[\"上游局域网 AP\\n(安卓设备与平板同网段场景)\"]\n  end\n\n  subgraph 宿主运行时[\"安卓宿主 · Termux 运行时\"]\n    MD[\"mitmdump\\n监听 0.0.0.0:2345\"]\n    ADD[\"redirect_addon.py\\n(+ user_auth.py)\"]\n    FS[\"payload\u002F\\nPDF · 视频 · 音乐 · …\"]\n    MD --> ADD --> FS\n  end\n\n  PxyCfg -->|\"HTTP 流量走代理\"| MD\n  B -->|\"关联至热点 SSID\"| AP\n  B -->|\"或关联至同一 LAN\"| LAN\n  AP --- MD\n  LAN --- MD\n\n  style 客户端侧 fill:#1a1a2e,color:#eee\n  style 宿主运行时 fill:#16213e,color:#eee\n  style 无线接入 fill:#0f3460,color:#eee\n```\n\n**读图要点**\n\n- 平板 **不需要**安装本项目；它只需 **信任代理路径** 并把 HTTP 会话指向 **安卓设备上 mitmdump 正在监听的地址:端口**。\n- HTTPS 若也要进入 Addon 逻辑，需要客户端侧 **导入 mitmproxy CA**（涉及额外信任模型，生产环境请谨慎评估）。\n\n---\n\n## 请求链路：从浏览器到本地文件\n\n```mermaid\nsequenceDiagram\n  participant 平板浏览器 as 平板浏览器\n  participant mitmdump as mitmdump :2345\n  participant Addon as redirect_addon\n  participant Auth as user_auth\n  participant FS as 本地 payload\u002F\n\n  平板浏览器->>mitmdump: GET http:\u002F\u002F配置的目标主机\u002F...\n  mitmdump->>Addon: HTTP 流触发 Addon hook\n  Addon->>Addon: 匹配 MITM_REDIRECT_HOSTS 策略\n  alt 需要登录且未登录\n    Addon->>Auth: 校验会话 \u002F 跳转登录页\n    Auth-->>Addon: 放行或拒绝\n  end\n  Addon->>FS: 映射 URL → 实体文件或虚拟播放列表\n  FS-->>Addon: 字节流 \u002F 元数据\n  Addon-->>mitmdump: 200 + HTML \u002F HLS \u002F PNG \u002F …\n  mitmdump-->>平板浏览器: 改写后的响应体\n```\n\n---\n\n## PDF：多级渲染兜底流水线\n\n目标是在 **PyMuPDF 不可用或编译失败**（常见于部分 ARM Termux 场景）时，仍能提供可读体验：`poppler` \u002F `mupdf-tools` \u002F 浏览器端 `pdf.js` 形成降级梯队。\n\n```mermaid\nflowchart LR\n  A[\"PDF 请求到达\"] --> B{\"PyMuPDF\\n可用？\"}\n  B -->|是| C[\"进程内栅格化缓存\"]\n  B -->|否| D{\"pdftoppm\\n(poppler)\"}\n  D -->|可用| E[\"外部管线渲染 PNG\"]\n  D -->|否| F{\"mutool draw\\n(mupdf-tools)\"}\n  F -->|可用| G[\"MuPDF 栅格化 PNG\"]\n  F -->|否| H[\"pdf.js 前端渲染\\n(\u002Fassets\u002Fpdfjs)\"]\n\n  C --> Z[\"分页输出至浏览器\"]\n  E --> Z\n  G --> Z\n  H --> Z\n\n  style H fill:#533483,color:#fff\n```\n\n---\n\n## 视频：兼容性探测 → HLS 实时转码 → 进度条对齐\n\n对浏览器原生 `\u003Cvideo>` **不友好** 的组合（如 **HEVC Main10 \u002F MKV 封装 \u002F 非常规格式**），服务端侧使用 **ffmpeg** 进行 **实时 HLS（m3u8 + ts）** 输出；前端采用 **hls.js** 播放。  \n为实现「整片时长」级别的拖拽体验，Addon 侧维护 **虚拟全长播放列表**、**分段生成状态** 与 **跳转（seek）时重启转码起点** 等协作逻辑（详见 `redirect_addon.py` 中 HLS \u002F transcode 相关路由）。\n\n```mermaid\nflowchart TD\n  V1[\"视频页面请求\"] --> V2[\"ffprobe：容器\u002F编码探测\"]\n  V2 --> V3{\"原生播放兼容？\"}\n  V3 -->|是| V4[\"直连文件或简单响应\"]\n  V3 -->|否| V5[\"启动 \u002F 续跑 ffmpeg → HLS\"]\n  V5 --> V6[\"浏览器 hls.js 拉流\"]\n  V6 --> V7{\"用户拖拽进度条\"}\n  V7 --> V8[\"video_trans_jump：按分段对齐重启转码窗口\"]\n  V8 --> V6\n  V6 --> V9[\"播放结束：可选清理缓存目录\"]\n\n  style V5 fill:#e94560,color:#fff\n  style V8 fill:#533483,color:#fff\n```\n\n---\n\n## 字幕：内封 \u002F 外挂协同策略\n\n```mermaid\nflowchart TB\n  S0[\"字幕需求\"] --> S1{\"外挂字幕文件\\n(.srt \u002F .vtt 等)\"}\n  S1 -->|存在| S2[\"以 track 方式并联挂载\"]\n  S1 -->|不存在| S3[\"ffprobe 枚举内封轨道\"]\n  S3 --> S4{\"文本型字幕\"}\n  S4 -->|是| S5[\"抽取并转为 WebVTT\\n(\u002Fsubtitle_internal…)\"]\n  S4 -->|否\\n如 PGS 位图| S6[\"转码管线内嵌 burn-in\\n叠加至视频帧\"]\n\n  S2 --> OK[\"播放器呈现\"]\n  S5 --> OK\n  S6 --> OK\n\n  style S6 fill:#0f3460,color:#fff\n```\n\n---\n\n## 音乐：沉浸式播放与后台悬浮窗\n\n播放器分两层 UI：默认为常规播放页，可一键进入 **沉浸式全屏模式**；同时提供 **跨页悬浮窗**，看 PDF \u002F 浏览目录时仍可继续播放。\n\n```mermaid\nflowchart TB\n  M0[\"播放页 · 常规视图\"] -->|\"进入沉浸式\"| M1[\"全屏沉浸式播放\"]\n  M1 -->|\"退出\"| M0\n  M0 -->|\"切换其它页面\"| M2[\"全局悬浮窗 mini-player\"]\n  M2 -->|\"返回播放页\"| M0\n\n  subgraph 视觉与交互\n    P1[\"从专辑封面取主色\\n生成动态 Mesh 渐变背景\"]\n    P2[\"播放：封面放大 + 外发光\\n暂停：缩小 + 减亮\"]\n    P3[\"进度条 hover\u002F拖动 显示时间预览\"]\n    P4[\"按 时:分:秒 精确跳转\\n（沉浸式中也可触发）\"]\n  end\n\n  M1 --- P1\n  M1 --- P2\n  M0 --- P3\n  M0 --- P4\n\n  subgraph 性能与稳定\n    Q1[\"切歌只更新激活行 class\\n不重建歌单 DOM\"]\n    Q2[\"调色板提取 setTimeout(0) 异步\\n不阻塞 audio.play()\"]\n    Q3[\"歌单封面 IntersectionObserver 懒加载\"]\n    Q4[\"音乐元数据按目录 mtime 缓存\"]\n  end\n\n  M0 --- Q1\n  M0 --- Q2\n  M0 --- Q3\n  M0 --- Q4\n\n  style M1 fill:#533483,color:#fff\n  style M2 fill:#0f3460,color:#fff\n```\n\n要点：\n\n- **后台播放不中断**：跨页面切换 \u002F 翻 PDF \u002F 浏览目录均不会重建 audio 元素；悬浮窗位置可拖动并持久化。\n- **精确跳转**：沉浸式与常规视图都内置「按 hh : mm : ss 跳转」按钮，配合自定义模态在 WebView 全屏元素中也可正常呼出。\n- **元数据健壮**：标题 \u002F 艺术家 \u002F 专辑使用 `mutagen` 解析 ID3 \u002F Vorbis \u002F MP4 标签，多级回退到文件名解析；封面优先级 ID3 内嵌 → 同名 cover.* → 默认 SVG 渐变。\n\n---\n\n## 安全与会话治理\n\n| 维度 | 设计 |\n|------|------|\n| **单设备登录** | 默认 `MITM_SINGLE_DEVICE=1`：同一账号在新设备登录时旧会话被强制踢下线，杜绝 Cookie 转手 |\n| **会话指纹** | 每次登录记录 `ip` \u002F `ua` \u002F `last_seen`，每次请求会刷新 `last_seen`，便于追溯 |\n| **URL 混淆** | 通过 `MITM_URL_OBFUSCATE=1` 启用 Fernet 对 `?path=…` 加密（密钥位于 `$MITM_DATA_DIR\u002F.url_secret`），地址栏不再泄露文件树 |\n| **特性 ACL** | 文件浏览、PDF、视频、音乐、上传、私密分区互相解耦，不会因为关闭文件浏览而连带屏蔽媒体页 |\n| **默认口令** | 首次启动用 `MITM_BOOTSTRAP_PASSWORD` 引导创建 `admin`；生产环境**必须**改为强口令 |\n\n---\n\n## 管理面板：用户探针 \u002F 转码任务\n\n`\u002F__admin` 提供分页式后台（管理员专属），所有标签共享统一的 token 鉴权与 CSRF 保护：\n\n```mermaid\nflowchart LR\n  ADM[\"\u002F__admin · 管理员入口\"] --> T1[\"用户管理\"]\n  ADM --> T2[\"私密目录授权\"]\n  ADM --> T3[\"创建用户\"]\n  ADM --> T4[\"在线探针 \u002F 用户活动\"]\n  ADM --> T5[\"转码任务\"]\n\n  T4 --> A1[\"实时在线列表\"]\n  T4 --> A2[\"最近访问 URL · IP · UA · last_seen\"]\n  T4 --> A3[\"一键踢下线\"]\n\n  T5 --> B1[\"活跃 ffmpeg 进程\"]\n  T5 --> B2[\"命中观看者计数\"]\n  T5 --> B3[\"强制停止 \u002F 清理片段缓存\"]\n\n  style T4 fill:#0f3460,color:#fff\n  style T5 fill:#533483,color:#fff\n```\n\n- **用户管理**：建号、改密、特性开关、私密目录授权。\n- **在线探针 \u002F 用户活动**：实时查看在线用户、最近一次访问的 URL、IP \u002F UA、距今多久；可一键 **踢下线**。\n- **转码任务**：列出当前正在跑的 `ffmpeg` HLS 任务，含命中观看者数；可 **强制停止** 或 **清理片段缓存**。同一视频的多个观众共享一个转码进程，最后一个退出后由 reaper 线程在 30 秒后自动收尾。\n\n---\n\n## 模块与仓库地图\n\n| 组件 | 职责 |\n|------|------|\n| `redirect_addon.py` | mitmproxy Addon：路由聚合、静态资源、`\u002Fhls\u002F*`、PDF\u002F视频\u002F音频页面组装 |\n| `user_auth.py` | 账户体系、登录握手、特性权限枚举 |\n| `assets\u002Fpdfjs\u002F` | 离线 pdf.js 运行时（终极兜底） |\n| `assets\u002Fhlsjs\u002F` | 离线 hls.js（HLS 播放） |\n| `termux\u002F*.sh` | 一键环境、`verpadproxy.sh` 运维入口、守护进程脚本等 |\n| `payload\u002F` | 媒体内容树（仓库层仅占位 `.gitkeep`，不自携带版权素材） |\n\n---\n\n## 快速开始 · 桌面侧（Windows）\n\n**前置**：Python 3.10+、`mitmproxy`；PDF 体验建议安装 `pymupdf`。\n\n```powershell\npip install mitmproxy pymupdf\n\nmkdir payload\\PDF, payload\\视频, payload\\音乐, payload\\private, payload\\upl\n# 将你的电子书、影片、音频放入对应目录\n\n$env:MITM_REDIRECT_HOSTS = \"example.com:8080\"\n$env:MITM_SHARE_DIR      = \"$PWD\\payload\"\n$env:MITM_DATA_DIR       = \"$PWD\"\nmitmdump -s .\\redirect_addon.py --listen-host 0.0.0.0 --listen-port 2345\n```\n\n在 **受限的教育平板** 上：Wi‑Fi → 手动代理 → **主机填运行 mitmdump 的机器在其网络上的 IPv4** → **端口 2345**。浏览器访问你在 `MITM_REDIRECT_HOSTS` 中配置的 **HTTP** 入口主机名，应落到本仓库登录与首页流程。\n\n---\n\n## 快速开始 · 安卓宿主（Termux）\n\n**前置**：在 **安卓设备** 安装 Termux（推荐 F-Droid 构建）；授予存储访问权限；逐步说明见 [`termux\u002FREADME_TERMUX.md`](termux\u002FREADME_TERMUX.md)。\n\n推荐将工程置于共享存储下的 `VerPadProxy\u002F`，首次执行：\n\n```bash\ntermux-setup-storage\ncd ~\u002Fstorage\u002Fshared\u002FVerPadProxy\u002Fscripts\u002Ftermux\nbash setup.sh\n```\n\n**v1.1.0 推荐：统一运维入口 `verpadproxy.sh`**（一条命令搞定杀旧进程 + 启动 + 显示连接信息）：\n\n```bash\nbash \u002Fsdcard\u002FVerPadProxy\u002Fscripts\u002Ftermux\u002Fverpadproxy.sh up\n```\n\n| 子命令 | 用途 |\n|---|---|\n| `up` | 杀旧进程 + 启动 + 打印 IP\u002F端口（**最常用**） |\n| `info` | 仅查询「热点 \u002F 局域网」两种场景的代理主机 IP |\n| `status` | 看进程是否在跑、端口是否在监听 |\n| `restart` \u002F `stop` \u002F `start` | 服务生命周期管理 |\n| `logs` | 实时跟随 mitmdump 日志 |\n| `doctor` | 自检：依赖、路径、端口占用 |\n| `clean` | 截断日志、清 Python 字节码缓存 |\n\n**强烈建议安装的增强依赖（按需）：**\n\n```bash\npkg install -y mupdf-tools poppler ffmpeg\n```\n\n---\n\n## 环境变量参考\n\n| 变量 | 含义 |\n|------|------|\n| `MITM_REDIRECT_HOSTS` | 命中劫持的主机列表（逗号分隔，可含端口）。占位示例：`example.com:8080`。滥用 `*` 将扩大暴露面 |\n| `MITM_SHARE_DIR` | 媒体根目录（内含 `PDF\u002F`、`视频\u002F`、`音乐\u002F`、`private\u002F`、`upl\u002F`） |\n| `MITM_DATA_DIR` | 用户库、日志等运行期数据目录 |\n| `MITM_USERS_FILE` | 用户 JSON 路径（可指向 `$MITM_DATA_DIR` 下） |\n| `MITM_BOOTSTRAP_PASSWORD` | **首次**创建 `admin` 时使用的引导口令；生产环境务必显式设定 |\n| `MITM_LOG_QUIET` | `1` 时压缩控制台噪声 |\n| `MITM_PYMUPDF_PYTHON` | 指定用于 PyMuPDF 子进程的 Python 路径（高级） |\n| `MITM_SINGLE_DEVICE` | `1` 启用单设备登录（默认开启）；`0` 允许多端并行 |\n| `MITM_URL_OBFUSCATE` | `1` 启用 `?path=` Fernet 加密混淆（默认关闭，密钥落盘 `$MITM_DATA_DIR\u002F.url_secret`） |\n| `MITM_MAX_TRANS` | 同时进行的视频转码任务上限；超过排队等待 |\n\n---\n\n## 媒体目录约定\n\n```text\npayload\u002F\n├── PDF\u002F       # 电子书 PDF\n├── 视频\u002F      # 影片；外挂字幕可与视频同目录并按约定文件名匹配\n├── 音乐\u002F      # 音频；可选 cover.jpg 作为封面\n├── private\u002F   # 私密分区（受权限模型保护）\n└── upl\u002F       # 上传落盘目录（受权限模型保护）\n```\n\n---\n\n## 能力矩阵（特性开关）\n\n管理员可为账户配置细粒度开关（示例枚举）：`fe_pdf`、`fe_video`、`fe_music`、`fe_upload`、`fe_browse`、`fe_private`、`fe_upl` 等——**首页入口与路径 ACL 解耦**，避免出现「关闭浏览导致 PDF\u002F视频入口一并消失」这类逻辑缠绕（实现细节见 `redirect_addon.py` 与 `user_auth.py`）。\n\n---\n\n## 延伸阅读\n\n- Termux 细化步骤、热点 CA、自启与排障：[`termux\u002FREADME_TERMUX.md`](termux\u002FREADME_TERMUX.md)\n- 许可证：[LICENSE](LICENSE)\n\n---\n\n## 版本演进\n\n### v1.1.0 — 沉浸式音乐 \u002F 后台悬浮窗 \u002F 全面 UX 与性能升级\n\n| 主题 | 关键改动 |\n|---|---|\n| **音乐 · 沉浸式** | Apple Music 风格全屏模式：从专辑封面提取主色生成 **动态 Mesh 渐变**；播放时封面放大 + 外发光，暂停时缩小 + 减亮；进度条 hover 时间预览；按 **时:分:秒 精确跳转**（沉浸式中也可呼出） |\n| **音乐 · 跨页悬浮窗** | 全局 mini-player：浏览 PDF \u002F 翻文件夹时音乐持续播放；可拖动、半透明毛玻璃、位置持久化；点击展开返回主播放页 |\n| **音乐 · 性能** | 切歌只更新激活行 `class`，**不再重建歌单 DOM**；调色板提取 `setTimeout(0)` 异步执行，**不阻塞 `audio.play()`**；歌单封面 `IntersectionObserver` 懒加载；元数据按目录 mtime 服务端缓存 |\n| **UI · 老内核兼容** | 封面用 `aspect-ratio` + `padding-bottom` 双兜底强制 1:1，覆盖 Chromium \u003C88；标题 \u002F 副信息 `flex:0 0 auto` + 显式 `min-height`，**修复\"字下半截被裁\"** bug |\n| **PDF** | AJAX 翻页 + `history.pushState`（**不打断音乐**）；任意缩放下单指拖动；缩放 \u002F 旋转 \u002F 平移状态按文档持久化；按账号绑定记忆\"上次看到第几页\" |\n| **视频** | ffmpeg 参数优化（`ultrafast` \u002F `tune=fastdecode` \u002F 540p \u002F `crf 23` \u002F `maxrate 1500k`）；**同视频多观众共享转码进程**；reaper 线程 30 秒后自动收尾；HLS 片段强缓存；`MITM_MAX_TRANS` 控制并发上限 |\n| **字幕** | 内封轨道用 `ffprobe` **真实流索引**匹配，杜绝索引错位；`webvtt` 直读 \u002F `srt → vtt` \u002F `ass → vtt` 多级提取；ASS → VTT 转换器全面重写；缓存到 `cache\u002Fhls\u002F{key}\u002Fsub_{idx}.vtt` |\n| **安全** | 默认启用 **单设备登录**；可选 Fernet 加密 **`?path=` URL 混淆**；会话指纹（`ip` \u002F `ua` \u002F `last_seen`）；默认口令改为占位强提示词，杜绝弱默认 |\n| **管理后台** | 新增 **用户在线探针** 与 **转码任务管理** 两个标签：实时在线、最近 URL、IP \u002F UA、一键踢人 \u002F 强停转码 \u002F 清缓存 |\n| **Termux 运维** | `verpadproxy.sh` 整合所有子命令；`up` 改用 `ss -lntp` 探测进程**告别 ADB 下挂起**；root 启动用 `setsid nohup … \u003C\u002Fdev\u002Fnull & disown` **完全脱离 ADB 会话** |\n| **代码清理** | 移除 `capture_only.py` \u002F `log_addon.py` \u002F `replace_pdf_addon.py` 三个废弃 addon；`_which()` \u002F `_probe_subtitles()` \u002F `_video_probe_compat()` 加 `lru_cache` |\n\n### v1.0.0 — 首个公开发布\n\n- 多级 PDF 渲染兜底（PyMuPDF \u002F poppler \u002F mupdf-tools \u002F pdf.js）\n- 视频 HLS 实时转码 + 整片时长进度条对齐\n- 内封 \u002F 外挂字幕协同（含 PGS 烧录）\n- Termux 一键脚本与守护进程\n\n---\n\n\u003Cdiv align=\"center\">\n\n**VerPadProxy — 把许可范围内的本地阅读体验，收敛成清晰、可审计的一条 HTTP 代理链路**\n\n\u003C\u002Fdiv>\n","VerPadProxy 是一个基于 mitmproxy 的轻量级框架，旨在通过手动 HTTP 代理绕过受限平板的浏览器限制，实现 PDF、视频（HLS）和音频的无缝播放。其核心功能包括透明改写 HTTP(S) 请求，将特定域名下的浏览会话替换为自建的多媒体阅览界面，并支持多级渲染流水线、实时转码及进度条对齐等高级特性。该项目特别适用于那些网络策略受限但允许配置 Wi-Fi 手动代理的教育平板，通过安卓宿主设备（如 Termux 或 root 环境）运行，提供了一个可控的本地媒体中枢解决方案。",2,"2026-06-11 03:59:28","CREATED_QUERY"]