网络页焕新:IP 画像/质量检测、链路诊断与功能开关
新增 /ip_profile、/ip_quality API 与网络 UI 组件,默认隐藏摄像头/拉流导航;同步更新 README。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
85
README.md
85
README.md
@@ -20,6 +20,7 @@ Windows 桌面端 **抖音 → YouTube 无人转播** 控制台:内置 Electro
|
||||
- [web2 API](#web2-api)
|
||||
- [配置与数据路径](#配置与数据路径)
|
||||
- [单频道与多频道 Pro](#单频道与多频道-pro)
|
||||
- [网络诊断 / IP 画像 / 代理](#网络诊断--ip-画像--代理)
|
||||
- [推流诊断 / 质量守卫 / 转播历史](#推流诊断--质量守卫--转播历史)
|
||||
- [youLIVE 目标端监控](#youlive-目标端监控)
|
||||
- [摄像头直推](#摄像头直推)
|
||||
@@ -116,6 +117,10 @@ uvicorn web2:app --host 127.0.0.1 --port 8001 --reload
|
||||
| 控制面 | `web2.py` | HTTP API |
|
||||
| 运行时诊断 | `web2_process_runtime.py` | `business_status`、FFmpeg 速度/帧数 |
|
||||
| 质量守卫 | `web2_quality_guard.py` | 推流质量评分 |
|
||||
| 网络测速 | `web2_network.py` | 境内外可达性、上下行测速、分流判断 |
|
||||
| IP 画像 | `web2_ip_profile.py` | 出口 IP 类型(住宅/机房/代理)、洁净度评分 |
|
||||
| IP 质量 | `web2_ip_quality.py` | 代理/VPN/机房风险、流媒体解锁探测 |
|
||||
| 功能开关 | `web2_feature_flags.py` | 摄像头/拉流 API 与 worker 显隐 |
|
||||
| 转播历史 | `web2_relay_log.py` | 会话 SQLite、日志导入 |
|
||||
| 配置治理 | `web2_config_governance.py` | 保存前备份、恢复 |
|
||||
| 多频道 | `web2_relay_pro.py` | `youtube_channels.json`、`config/relay_pro/` |
|
||||
@@ -135,11 +140,14 @@ uvicorn web2:app --host 127.0.0.1 --port 8001 --reload
|
||||
│ ├── src/main/ # 主进程
|
||||
│ ├── src/preload/ # contextBridge
|
||||
│ ├── src/renderer/ # UI(直播 / 摄像头 / 拉流 / 网络 / 系统)
|
||||
│ │ └── components/worker/ # 业务工作台(链路条 / 清单 / 指标)
|
||||
│ │ ├── components/worker/ # 业务工作台(链路条 / 清单 / 指标)
|
||||
│ │ └── components/network/ # 网络页(链路条 / IP 画像 / IP 质量 / 测速图)
|
||||
│ ├── src/shared/ # 前后端共享常量(功能开关 featureFlags)
|
||||
│ ├── src/youlive/ # 内嵌 youLIVE(主进程服务 + 共享类型)
|
||||
│ └── scripts/ # 离线运行时、图标
|
||||
├── web2.py # FastAPI 入口
|
||||
├── web2_*.py # 后端子模块
|
||||
├── web2_*.py # 后端子模块(含 ip_profile / ip_quality / feature_flags)
|
||||
├── third_party/IPQuality/ # IP 质量检测脚本参考(ip.sh)
|
||||
├── config/ # 运行配置
|
||||
├── backup_config/__web__/ # 配置自动备份
|
||||
├── runtime/youtube_relay/ # 转播会话 sessions.sqlite
|
||||
@@ -161,8 +169,8 @@ uvicorn web2:app --host 127.0.0.1 --port 8001 --reload
|
||||
| **直播** | 抖音源站无人转播:单频道 / Pro、链路诊断、转播历史、youLIVE 目标端监控 |
|
||||
| **摄像头** | 本机采集直推:设备预览、采集/编码配置、独立控制台(进程 `camera_youtube`) |
|
||||
| **拉流** | 外部流转推:RTMP/SRT/HLS/FLV/WHEP 拉流、转码或流复制(进程 `pull_stream_youtube`) |
|
||||
| **网络** | 测速、代理 |
|
||||
| **系统** | 负载、开机启动、路径、会员登录限制开关 |
|
||||
| **网络** | 链路诊断、境内外测速、IP 画像与质量、WebRTC 泄露检测、FFmpeg 代理 |
|
||||
| **系统** | CPU/内存/磁盘/GPU、开机启动、路径、会员登录限制开关 |
|
||||
|
||||
**直播** 页面向抖音无人转播业务,含 Pro 多频道、三层链路诊断、转播历史等。
|
||||
|
||||
@@ -194,6 +202,19 @@ uvicorn web2:app --host 127.0.0.1 --port 8001 --reload
|
||||
- **源站预览**:解析抖音 URL 并尝试显示主播昵称
|
||||
- **配对校验**:Pro 多线路保存时检测抖音地址 / YouTube 密钥跨频道重复,冲突时展示横幅并阻止启动
|
||||
|
||||
**网络** 页面向转播前的出口与链路自检,含:
|
||||
|
||||
- **链路快检**:国内源站(抖音)/ Google / 线路分流 / 海外上行 / 录制代理五项状态芯片
|
||||
- **NetworkPipeline**:源站 → 分流 → YouTube → 上行四段链路条,按可达性与测速结果着色
|
||||
- **境内外站点卡**:Google 与抖音的延迟、上下行测速、解析 IP 与地区
|
||||
- **IP 出口画像**(`GET /ip_profile`):本机默认出口与海外出口的类型(住宅/机房/代理/移动)、洁净度评分、WebRTC 本地泄露参考
|
||||
- **IP 质量检测**(`GET /ip_quality`):代理/VPN/Tor/机房风险因子、Abuser 评分、YouTube/Netflix 等流媒体解锁状态
|
||||
- **测速趋势图**:`NetworkSpeedChart` 记录近期上下行采样
|
||||
- **FFmpeg 代理**:录制/推流专用 HTTP/SOCKS 代理,与系统代理设置联动
|
||||
- **自动刷新**:约 45s 静默轮询;WebRTC 检测完成后自动刷新 IP 画像
|
||||
|
||||
> 摄像头 / 拉流功能默认在导航中**隐藏**(见 [功能开关](#功能开关)),代码与 API 仍保留,可按需开启。
|
||||
|
||||
---
|
||||
|
||||
## web2 API
|
||||
@@ -220,7 +241,9 @@ uvicorn web2:app --host 127.0.0.1 --port 8001 --reload
|
||||
| 历史 | `GET /youtube/relay/sessions` | 转播会话 |
|
||||
| 历史 | `POST /youtube/relay/sessions/import` | 从 PM2 日志导入 |
|
||||
| 网络 | `GET /network_status` `GET/POST /proxy_config` | 测速与代理 |
|
||||
| 系统 | `GET /system_metrics` `GET /host/gpu_status` | 主机与 NVENC |
|
||||
| 网络 | `GET /ip_profile` | 出口 IP 画像(可选 `client_tz`、`client_lang`、`webrtc_leak`) |
|
||||
| 网络 | `GET /ip_quality` | IP 质量与流媒体解锁探测 |
|
||||
| 系统 | `GET /system_metrics` `GET /host/gpu_status` | 主机、磁盘、NVENC |
|
||||
| OAuth | `GET /youtube/oauth/*` | Google 拉取串流密钥(UI 可关) |
|
||||
|
||||
**可选鉴权**:`config/web2_api_token.txt` 或 `WEB2_API_TOKEN` 存在时,除 `/health` 外需:
|
||||
@@ -287,6 +310,42 @@ Electron 主进程自动注入 API 鉴权头。
|
||||
|
||||
---
|
||||
|
||||
## 网络诊断 / IP 画像 / 代理
|
||||
|
||||
**网络** 页帮助在开播前确认「抖音源站可达 + 海外出口可用 + 上行带宽足够」。
|
||||
|
||||
### 链路诊断(`GET /network_status`)
|
||||
|
||||
| 检测项 | 说明 |
|
||||
|--------|------|
|
||||
| 国内源站 | 抖音域名可达性与延迟 |
|
||||
| Google 出口 | YouTube 推流路径可达性 |
|
||||
| 线路分流 | 对比境内外解析 IP,判断代理/TUN 是否生效 |
|
||||
| 海外测速 | 参考上下行 Mbps(测速失败不代表无法推流) |
|
||||
| 录制代理 | `config/ffmpeg_proxy.ini` 是否已配置 |
|
||||
|
||||
### IP 出口画像(`GET /ip_profile`)
|
||||
|
||||
参考 whoer / ping0.cc 维度,聚合 ip-api.com、ping0.cc 等数据源:
|
||||
|
||||
- **默认出口**与**海外出口**(经 Google 探测路径采样)的类型标签
|
||||
- 住宅 / 机房 / 代理 / 移动判定与洁净度评分
|
||||
- 浏览器侧 **WebRTC 本地候选**检测(`useWebRtcLeak`),结果通过 `webrtc_leak` 参数回传后端
|
||||
|
||||
### IP 质量检测(`GET /ip_quality`)
|
||||
|
||||
集成 [xykt/IPQuality](https://github.com/xykt/IPQuality) 思路(参考 `third_party/IPQuality/ip.sh`):
|
||||
|
||||
- 代理、VPN、Tor、机房等风险因子
|
||||
- 多源 Abuser / IPQS 评分
|
||||
- YouTube、TikTok、Netflix、Disney+ 等流媒体解锁状态
|
||||
|
||||
### FFmpeg 代理
|
||||
|
||||
`GET/POST /proxy_config` 读写 `config/ffmpeg_proxy.ini`,供 `youtube2` 等 worker 拉流时使用,与 Windows 系统代理设置独立。
|
||||
|
||||
---
|
||||
|
||||
## 推流诊断 / 质量守卫 / 转播历史
|
||||
|
||||
`GET /status` 的 `business_status` 示例:
|
||||
@@ -398,6 +457,19 @@ Electron 主进程自动注入 API 鉴权头。
|
||||
|
||||
---
|
||||
|
||||
## 功能开关
|
||||
|
||||
摄像头直推与外部拉流转推默认**关闭**(导航隐藏、相关 API 返回 404、PM2 忽略对应 worker),以降低首屏复杂度。需要时分别修改:
|
||||
|
||||
| 位置 | 常量 | 默认 |
|
||||
|------|------|------|
|
||||
| `electron/src/shared/featureFlags.ts` | `SHOW_CAMERA_UI`、`SHOW_PULL_STREAM_UI` | `false` |
|
||||
| `web2_feature_flags.py` | `SHOW_CAMERA_FEATURE`、`SHOW_PULL_STREAM_FEATURE` | `False` |
|
||||
|
||||
前后端开关需保持一致。深链 `--nav=camera` / `--nav=pull` 在关闭时会回落到 **直播** 页。
|
||||
|
||||
---
|
||||
|
||||
## 开发与构建
|
||||
|
||||
| 组件 | 版本 |
|
||||
@@ -453,6 +525,9 @@ pnpm dist
|
||||
| 拉流连接失败 | 核对协议与 URL;SRT 检查 caller/streamid;WebRTC 建议经 SRS 转 RTMP |
|
||||
| 拉流有画面 YouTube 无 | 流复制模式下源可能非 H.264+AAC,改转码模式 |
|
||||
| 目标端监听无数据 | 直播页确认 `youtubeWatchUrl` 已填写;youLIVE 桌面通知已开启 |
|
||||
| Google 不可达 / 分流未生效 | **网络** 页查看链路快检;配置 TUN/规则代理;填写 FFmpeg 代理 |
|
||||
| IP 画像显示机房/代理 | 更换住宅出口或调整代理节点;关注 WebRTC 泄露提示 |
|
||||
| IP 质量检测超时 | 外网 API 偶发慢;稍后刷新;检查本机防火墙 |
|
||||
| 配置误改 | 直播页 **历史备份** 或 `POST /config/restore` |
|
||||
|
||||
日志:
|
||||
|
||||
Reference in New Issue
Block a user