| 参数 | 命令行标志 | 默认值 | 说明 | 示例 |
|---|---|---|---|---|
| config | -config |
"config.json" |
配置文件路径 | ./pvideo -config myconfig.json |
| port | -port |
"2525" |
服务器端口 | ./pvideo -port 8080 |
| site | -site |
"" |
反代域名 | ./pvideo -site https://mydomain.com |
| proxy | -proxy |
"" |
代理地址 | ./pvideo -proxy socks5://127.0.0.1:1080 |
| debug | -debug |
false |
调试模式 | ./pvideo -debug |
| dns | -dns |
"" |
DNS服务器 | ./pvideo -dns 8.8.8.8 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| localUrl | string | "" |
本地服务URL,用于生成代理链接 |
| connect | int64 | 32 |
最大并发连接数 |
| ssl | object | null |
SSL证书配置(cert, key) |
# 基本启动
./pvideo
# 指定端口和调试模式
./pvideo -port 8080 -debug
# 使用SOCKS5代理
./pvideo -proxy socks5://127.0.0.1:1080 -dns 8.8.8.8
# 完整参数示例
./pvideo -config config.json -port 7777 -site https://mydomain.com -proxy http://proxy.example.com:8080 -debug -dns 8.8.8.8| 参数 | 必需 | 说明 | 示例值 |
|---|---|---|---|
| url | ✅ | 目标文件URL | https://example.com/video.mp4 |
| form | ❌ | 编码格式 | base64(URL和header使用base64编码) |
| header | ❌ | 自定义请求头 | JSON格式的请求头 |
| thread | ❌ | 线程数 | 4(默认根据文件大小自动计算) |
| size | ❌ | 分块大小 | 128K(默认), 256K, 1M, 2M, 512B, 1024 |
| limit | ❌ | 限制条件 | 30S(时间限制), 100C(次数限制) |
| single | ❌ | 单线程模式 | true, false |
| mark | ❌ | 缓存标记 | 自定义缓存标识 |
多线程代理使用示例(也可以不需要带proxy路径:http://localhost:7777?url=https://example.com/video.mp4)
http://localhost:7777/proxy?url=https://example.com/video.mp4
http://localhost:7777/proxy?url=https://example.com/video.mp4&thread=8&size=256K
http://localhost:7777/proxy?url=https://example.com/video.mp4&header={"User-Agent":"Custom-Agent","Referer":"https://example.com"}
http://localhost:7777/proxy?url=aHR0cHM6Ly9leGFtcGxlLmNvbS92aWRlby5tcDQ=&form=base64&header=eyJVc2VyLUFnZW50IjoiQ3VzdG9tLUFnZW50In0=
http://localhost:7777/proxy?url=https://example.com/video.mp4&limit=30S
http://localhost:7777/proxy?url=https://example.com/video.mp4&limit=100C
http://localhost:7777/proxy?single=true&url=https://example.com/small-file.jpg
# 任务1:普通下载
http://localhost:7777/proxy?url=https://example.com/video.mp4&mark=normal_download
# 任务2:带认证的下载(相同URL,不同处理方式)
http://localhost:7777/proxy?url=https://example.com/video.mp4&mark=auth_download&header={"Authorization":"Bearer token123"}
# 任务3:移动端下载(相同URL,不同User-Agent)
http://localhost:7777/proxy?url=https://example.com/video.mp4&mark=mobile_download&header={"User-Agent":"Mobile-App/1.0"}
mark 参数是一个缓存标识符,用于区分和管理不同的下载任务:
主要作用:
- 缓存隔离: 相同URL的不同任务使用独立缓存
- 连接复用: 相同mark的请求复用HTTP连接
- 任务标识: 便于调试和日志追踪
使用场景:
# 高清版本
http://localhost:7777/proxy?url=https://cdn.example.com/video.mp4&mark=hd_version&size=1M
# 标清版本(相同URL,不同处理参数)
http://localhost:7777/proxy?url=https://cdn.example.com/video.mp4&mark=sd_version&size=256K
# 用户A下载
http://localhost:7777/proxy?url=https://example.com/file.zip&mark=user_a&header={"Cookie":"session=abc123"}
# 用户B下载
http://localhost:7777/proxy?url=https://example.com/file.zip&mark=user_b&header={"Cookie":"session=def456"}
# PC端下载
http://localhost:7777/proxy?url=https://example.com/app.apk&mark=pc_client
# 移动端下载
http://localhost:7777/proxy?url=https://example.com/app.apk&mark=mobile_client
默认行为:
- 如果不指定
mark参数,系统会使用完整的url作为缓存标记 - 建议在有多种下载需求时主动设置
mark参数
| 参数 | 必需 | 说明 | 示例值 |
|---|---|---|---|
| url | ✅ | M3U8播放列表URL | https://example.com/playlist.m3u8 |
| form | ❌ | 编码格式 | base64(URL和header使用base64编码) |
| header | ❌ | 自定义请求头 | JSON格式的请求头 |
| type | ❌ | 文件类型标识 | m3u8 |
http://localhost:7777/m3u8?url=https://example.com/playlist.m3u8
http://localhost:7777/m3u8?url=https://example.com/playlist.m3u8&header={"User-Agent":"Mozilla/5.0","Referer":"https://example.com"}
http://localhost:7777/m3u8?url=aHR0cHM6Ly9leGFtcGxlLmNvbS9wbGF5bGlzdC5tM3U4&form=base64&header=eyJVc2VyLUFnZW50IjoiTW96aWxsYS81LjAifQ==
http://localhost:7777/m3u8?url=https://example.com/playlist.m3u8&type=m3u8
- 自动转换: M3U8文件中的相对路径会自动转换为完整URL
- 代理重写: 所有媒体文件URL会被重写为通过本地代理访问
- 嵌套支持: 支持嵌套的M3U8文件(主播放列表包含子播放列表)
- 加密支持: 支持AES加密的M3U8流,密钥URL也会被代理
- Base64编码: 当使用
form=base64时,输出的代理URL也会使用base64编码