mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-13 18:27:10 +00:00
Verification: PASS: 13 integration docs links/source paths; 5 factual corrections cross-checked against Parse.java/Action.java/Local.java/SiteApi.java/JarLoader.java; git diff --check origin/beta..HEAD Task-Guard: integration-docs-review-20260921
3.9 KiB
3.9 KiB
本地代理与服务端接口
App 内置 NanoHTTPD 服务。端口从 9978 到 9998 依次尝试,实际端口以 Proxy.getPort() 为准。
http://127.0.0.1:{port}
http://{局域网IP}:{port}
Spider 代理入口
/proxy 会调用当前最近使用的 Spider:
- Java/JAR:
proxy(Map<String, String> params) - QuickJS:普通模式
proxy(params)或 CatVod 兼容模式proxy(segments, headers) - Python:
localProxy(param)
Java/JAR 返回:
new Object[]{200, "video/mp2t", inputStream, headers}
| 下标 | 类型 | 必填 | 说明 |
|---|---|---|---|
0 |
number 或 NanoHTTPD.Response |
是 | HTTP 状态码;Response 会原样返回 |
1 |
string | 是 | Content-Type |
2 |
InputStream | 是 | 响应流 |
3 |
Map<String, String> | 否 | 响应 header |
JS/Python 返回:
[200, "text/plain; charset=utf-8", "content", { "Cache-Control": "no-store" }, 0]
| 下标 | 类型 | 说明 | |
|---|---|---|---|
0 |
number | HTTP 状态码 | |
1 |
string | Content-Type | |
2 |
string/bytes | 响应内容;字符串默认 UTF-8 | |
3 |
object | 响应 header,可为空 | |
4 |
number | 1 表示第 2 项是 Base64;内容含 base64, 前缀时自动截掉 |
常用端点
| 路径 | 方法 | 能力 |
|---|---|---|
/device |
GET/POST | 设备信息 |
/media |
GET/POST | 当前播放状态 |
/action |
GET/POST | 搜索、推送、刷新、播放控制、注入字幕/弹幕、设置配置 |
/cache |
GET/POST | 字符串缓存 |
/file/{path} |
GET | 本地文件 |
/parse |
GET/POST | 内置解析 HTML |
/proxy |
GET/POST | Spider 本地代理 |
/webResource |
多方法 | WebHome 资源网关 |
/pan/check |
POST/OPTIONS | 网盘检测 |
/spider |
GET/POST | Spider HTTP 桥 |
/debug/logs |
GET | 调试日志网页 |
/debug/stream |
GET | 调试日志增量轮询 |
/m |
GET | 增强管理页面 |
/device
{
"uuid": "android-id",
"name": "device-name",
"ip": "http://192.168.1.23:9978",
"type": 1,
"time": 1710000000000
}
type:0 电视端、1 手机端、2 DLNA 设备记录。
/media
{
"state": 3,
"speed": 1.0,
"duration": 3600000,
"position": 600000,
"url": "https://example.com/video.m3u8",
"title": "标题",
"artist": "",
"artwork": ""
}
state:1 其它、2 ready、3 playing、6 buffering。
/action
返回固定 200 OK,大部分动作异步执行。常用:
GET/POST /action?do=search&word=关键词
GET/POST /action?do=push&url=播放地址
GET/POST /action?do=setting&text=配置内容或配置URL&name=显示名称
GET/POST /action?do=refresh&type=home
GET/POST /action?do=refresh&type=subtitle&path=字幕URL
GET/POST /action?do=refresh&type=danmaku&path=弹幕URL
GET/POST /action?do=control&type=play
refresh.type:home、live、detail、player、category、subtitle、danmaku、vod。
control.type:play、pause、stop、prev、next、repeat、replay。
安全要求
/proxy只应处理当前站点或明确授权目标,不要实现开放代理。- 校验参数、URL、来源和 header,不泄露 Cookie、Token、密钥或内网地址。
- 请求结束后关闭输入流、响应体、临时文件和注册的播放会话。
- 非法参数返回 4xx;上游失败返回明确 5xx;不要用 200 返回 HTML 错误页。
- Range 请求要正确处理,HLS 重写必须保留 playlist、分片和密钥的会话一致性。
源码依据
app/src/main/java/com/fongmi/android/tv/server/Server.javaapp/src/main/java/com/fongmi/android/tv/server/Nano.javaapp/src/main/java/com/fongmi/android/tv/server/process/Proxy.javaapp/src/main/java/com/fongmi/android/tv/server/process/SpiderApi.javaapp/src/main/java/com/fongmi/android/tv/server/process/Action.javacatvod/src/main/java/com/github/catvod/crawler/Spider.java