v2box 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
v2box-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,449 @@
1
+ Metadata-Version: 2.4
2
+ Name: v2box
3
+ Version: 0.3.0
4
+ Summary: 一键将代理节点链接导入 sing-box,轻松管理、测速、切换节点
5
+ Author: v2box contributors
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/v2box/v2box
8
+ Keywords: sing-box,proxy,vless,vmess,trojan,shadowsocks,cli
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Environment :: Console
11
+ Classifier: Intended Audience :: End Users/Desktop
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Internet :: Proxy Servers
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ Requires-Dist: click>=8.0
18
+ Requires-Dist: rich>=13.0
19
+
20
+ # v2box
21
+
22
+ **一键将代理节点链接导入 [sing-box](https://sing-box.sagernet.org/),轻松管理、测速、切换节点。**
23
+
24
+ 专为 Linux 桌面用户设计,让小白也能轻松使用 sing-box 科学上网。
25
+
26
+ ---
27
+
28
+ ## ✨ 功能特性
29
+
30
+ - **多协议支持** — VLESS、VMess、Shadowsocks、Trojan、Hysteria2
31
+ - **一键导入** — 支持单条链接、文件批量导入
32
+ - **订阅管理** — 添加/更新/删除订阅,一键拉取节点,支持 Base64 自动解码
33
+ - **智能去重** — 基于配置内容去重,同名不同配置的节点自动区分
34
+ - **节点测速** — TCP 握手测速 / Clash API 真实代理测速
35
+ - **手动/自动模式** — 手动选择指定节点(支持序号),或自动切换到最快节点
36
+ - **局域网代理** — 一键开启局域网共享,支持自定义端口
37
+ - **服务管理** — 启动、停止、重启 sing-box,一条命令搞定
38
+ - **简洁 CLI** — 命令短小好记,带中文帮助和示例
39
+ - **TUN 模式** — 默认开启全局透明代理(可关闭)
40
+ - **服务端管理** — 一键创建 VPS 节点配置,自动生成密钥和客户端链接
41
+
42
+ ## 📦 安装
43
+
44
+ ### 前置条件
45
+
46
+ 1. **安装 sing-box**(必须):
47
+
48
+ ```bash
49
+ # Ubuntu / Debian
50
+ bash <(curl -fsSL https://sing-box.app/deb-install.sh)
51
+
52
+ # 或参考官方文档: https://sing-box.sagernet.org/installation/
53
+ ```
54
+
55
+ 2. **Python 3.10+**
56
+
57
+ ### 安装 v2box
58
+
59
+ ```bash
60
+ # 从源码安装(推荐)
61
+ cd /path/to/this/repo
62
+ pip install .
63
+
64
+ # 开发模式安装
65
+ pip install -e .
66
+ ```
67
+
68
+ 安装后即可使用 `v2box` 命令。
69
+
70
+ ---
71
+
72
+ ## 🚀 快速开始
73
+
74
+ ```bash
75
+ # 1. 导入节点
76
+ v2box add "vless://uuid@server:443?security=reality&..." # 直接粘贴链接
77
+ v2box add nodes.txt # 从文件导入
78
+ v2box sub add "我的机场" https://example.com/subscribe # 从订阅导入
79
+
80
+ # 2. 生成并应用 sing-box 配置
81
+ v2box apply
82
+
83
+ # 3. 启动 sing-box
84
+ v2box start
85
+
86
+ # 4. 测试节点延迟
87
+ v2box test
88
+
89
+ # 5. 选择最快的节点
90
+ v2box use "节点名称" # 手动选择
91
+ v2box auto # 切回自动模式
92
+ ```
93
+
94
+ **就这么简单!** 🎉
95
+
96
+ ---
97
+
98
+ ## 📖 命令详解
99
+
100
+ ### `v2box add` — 导入节点
101
+
102
+ ```bash
103
+ # 从链接导入(支持 vless/vmess/ss/trojan/hy2)
104
+ v2box add "vless://uuid@server:443?type=ws&security=tls#我的节点"
105
+ v2box add "vmess://eyJhZGQiOi..."
106
+ v2box add "ss://..."
107
+ v2box add "trojan://password@server:443#节点名"
108
+ v2box add "hy2://password@server:443#节点名"
109
+
110
+ # 从文件批量导入(每行一个链接)
111
+ v2box add nodes.txt
112
+
113
+ # 从管道导入
114
+ cat nodes.txt | v2box add
115
+ ```
116
+
117
+ ### `v2box ls` — 查看节点
118
+
119
+ ```bash
120
+ v2box ls # 列出所有节点
121
+ v2box ls -a # 显示详细信息(含端口)
122
+ ```
123
+
124
+ 输出示例:
125
+ ```
126
+ 节点列表 (3 个) 模式: auto
127
+ ┌───┬────┬──────────────┬──────┬─────────────┐
128
+ │ # │ 状 │ 名称 │ 协议 │ 服务器 │
129
+ ├───┼────┼──────────────┼──────┼─────────────┤
130
+ │ 1 │ ● │ 日本节点 │ vless│ jp.example │
131
+ │ 2 │ ○ │ 美国节点 │ vmess│ us.example │
132
+ │ 3 │ ○ │ 香港节点 │ ss │ hk.example │
133
+ └───┴────┴──────────────┴──────┴─────────────┘
134
+ ```
135
+
136
+ ### `v2box test` — 测速
137
+
138
+ ```bash
139
+ v2box test # TCP 握手测速(不需要 sing-box 运行)
140
+ v2box test -t 3 # 设置超时为 3 秒
141
+ v2box test --api # 通过 Clash API 测真实代理延迟(需 sing-box 运行)
142
+ ```
143
+
144
+ ### `v2box use` — 手动选节点
145
+
146
+ ```bash
147
+ v2box use "日本节点" # 按名称选择
148
+ v2box use 1 # 按序号选择(v2box ls 中的 #)
149
+ ```
150
+
151
+ 选择后自动切换到**手动模式**。如果 sing-box 正在运行,会通过 Clash API **立即切换**,无需重启。
152
+
153
+ ### `v2box auto` — 自动模式
154
+
155
+ ```bash
156
+ v2box auto # 切换到自动模式
157
+ ```
158
+
159
+ 自动模式下,sing-box 的 `urltest` 组会每 5 分钟自动测试所有节点,并切换到延迟最低的节点。
160
+
161
+ ### `v2box apply` — 生成配置
162
+
163
+ ```bash
164
+ v2box apply # 写入 /etc/sing-box/config.json(需 sudo)
165
+ v2box apply --dry-run # 仅打印配置,不写入文件
166
+ v2box apply -o my.json # 输出到指定文件
167
+ v2box apply --no-tun # 不使用 TUN 模式(仅 HTTP/SOCKS 代理)
168
+ v2box apply --lan # 开启局域网代理
169
+ v2box apply --lan -p 7890 # 局域网代理 + 自定义端口
170
+ v2box apply --no-lan # 关闭局域网代理
171
+ ```
172
+
173
+ ### `v2box start / stop / restart` — 服务管理
174
+
175
+ ```bash
176
+ v2box start # 启动 sing-box
177
+ v2box stop # 停止 sing-box
178
+ v2box restart # 重启 sing-box
179
+ ```
180
+
181
+ ### `v2box status` — 查看状态
182
+
183
+ ```bash
184
+ v2box status
185
+ ```
186
+
187
+ 输出示例:
188
+ ```
189
+ ✓ sing-box 已安装 (sing-box version 1.11.0)
190
+ ✓ 服务运行中
191
+ 节点: 3 个已导入
192
+ 模式: 自动
193
+ 代理监听: 0.0.0.0:7890
194
+ ✓ 局域网代理已开启
195
+ ✓ Clash API 可用 (127.0.0.1:9090)
196
+ ```
197
+
198
+ ### `v2box lan` — 局域网代理
199
+
200
+ ```bash
201
+ v2box lan # 查看局域网代理状态
202
+ v2box lan on # 开启局域网代理(监听 0.0.0.0)
203
+ v2box lan on -p 7890 # 开启并指定端口为 7890
204
+ v2box lan off # 关闭局域网代理(仅本机)
205
+ ```
206
+
207
+ 开启后,局域网内其他设备可将 HTTP/SOCKS5 代理指向本机 IP + 端口。TUN 全局模式和非全局模式均支持。
208
+
209
+ ### `v2box port` — 设置端口
210
+
211
+ ```bash
212
+ v2box port 7890 # 将代理端口改为 7890
213
+ v2box port 10808 # 恢复默认端口
214
+ ```
215
+
216
+ ### `v2box rm / clear` — 删除节点
217
+
218
+ ```bash
219
+ v2box rm "节点名称" # 删除指定节点
220
+ v2box rm 2 # 按序号删除
221
+ v2box clear # 清空所有节点(需确认)
222
+ ```
223
+
224
+ ### `v2box sub` — 订阅管理
225
+
226
+ ```bash
227
+ # 添加订阅并立即拉取节点
228
+ v2box sub add "我的机场" https://provider.example/sub/token
229
+
230
+ # 查看订阅列表
231
+ v2box sub ls
232
+
233
+ # 更新所有订阅(重新拉取并替换旧节点)
234
+ v2box sub update
235
+
236
+ # 更新指定订阅
237
+ v2box sub update "我的机场"
238
+
239
+ # 删除订阅及其关联节点
240
+ v2box sub rm "我的机场"
241
+ v2box sub rm 1 # 按序号删除
242
+ ```
243
+
244
+ 订阅支持 Base64 编码自动解码,兼容主流机场订阅格式。更新订阅时会自动替换该订阅的旧节点。
245
+
246
+ ### `v2box server` — 服务端管理
247
+
248
+ 在 VPS 上搭建自己的代理节点,一条命令搞定服务端配置 + 客户端链接。
249
+
250
+ ```bash
251
+ # 创建 VLESS+Reality 节点(免域名免证书,推荐)
252
+ v2box server create vless-reality -n "我的VPS"
253
+ v2box server create vless-reality -n "日本节点" -p 8443 --sni www.apple.com
254
+
255
+ # 创建 VLESS+WS 节点(配合 nginx 反代)
256
+ v2box server create vless-ws -n "WS节点" --path /my-secret
257
+
258
+ # 查看已创建的配置
259
+ v2box server ls
260
+
261
+ # 导出服务端 sing-box 配置
262
+ v2box server export "我的VPS" -o config.json
263
+
264
+ # 生成客户端连接链接
265
+ v2box server link "我的VPS" --ip 1.2.3.4
266
+ v2box server link "WS节点" --ip 1.2.3.4 -d example.com
267
+
268
+ # 生成链接并直接导入本地
269
+ v2box server link "我的VPS" --ip 1.2.3.4 --import
270
+
271
+ # 删除配置
272
+ v2box server rm "我的VPS"
273
+ v2box server rm 1
274
+ ```
275
+
276
+ 支持的方案:
277
+ - **VLESS+Reality** — 免域名免证书,自动生成 UUID、Reality 密钥对、short_id
278
+ - **VLESS+WS** — 监听本地端口,由 nginx 反代 TLS,自动输出 nginx 配置片段
279
+
280
+ ### `v2box info` — 环境信息
281
+
282
+ ```bash
283
+ v2box info
284
+ ```
285
+
286
+ ---
287
+
288
+ ## 🔧 代理设置
289
+
290
+ ### TUN 模式(全局透明代理)
291
+
292
+ 默认配置包含 TUN 入站,sing-box 以 root 运行时会自动接管系统流量,无需手动设置代理环境变量。
293
+
294
+ 如果不需要 TUN 模式:
295
+
296
+ ```bash
297
+ v2box apply --no-tun
298
+ ```
299
+
300
+ ### HTTP / SOCKS5 代理(非 TUN 模式)
301
+
302
+ v2box 默认在 `127.0.0.1:10808` 启动 HTTP/SOCKS5 混合代理端口:
303
+
304
+ ```bash
305
+ # 临时设置代理
306
+ export http_proxy=http://127.0.0.1:10808
307
+ export https_proxy=http://127.0.0.1:10808
308
+
309
+ # 或在 .bashrc / .zshrc 中添加
310
+ ```
311
+
312
+ ### 局域网代理
313
+
314
+ 开启局域网代理后,同一网络下的其他设备(手机、平板等)也可以通过本机代理访问外网:
315
+
316
+ ```bash
317
+ # 开启局域网代理
318
+ v2box lan on
319
+
320
+ # 开启并指定端口
321
+ v2box lan on -p 7890
322
+
323
+ # 应用并重启
324
+ v2box apply && v2box restart
325
+
326
+ # 其他设备设置代理: http://本机IP:7890
327
+ ```
328
+
329
+ 全局模式(TUN)和非全局模式均支持局域网代理。
330
+
331
+ ---
332
+
333
+ ## 📁 数据存储
334
+
335
+ | 文件 | 路径 | 说明 |
336
+ |------|------|------|
337
+ | 节点数据 | `~/.config/v2box/nodes.json` | 已导入的节点列表 |
338
+ | 订阅数据 | `~/.config/v2box/subs.json` | 已添加的订阅列表 |
339
+ | 服务端配置 | `~/.config/v2box/servers.json` | 已创建的服务端节点 |
340
+ | 状态信息 | `~/.config/v2box/state.json` | 模式、选中节点、端口、LAN 设置 |
341
+ | sing-box 配置 | `/etc/sing-box/config.json` | 生成的 sing-box 配置 |
342
+
343
+ 可通过环境变量 `V2BOX_DATA_DIR` 自定义数据目录。
344
+
345
+ ---
346
+
347
+ ## 🔄 典型工作流
348
+
349
+ ### 新手首次使用
350
+
351
+ ```bash
352
+ # 安装 v2box
353
+ pip install .
354
+
355
+ # 导入节点(找机场要一个订阅链接,或者一些节点链接)
356
+ v2box sub add "我的机场" https://your-subscription-url
357
+
358
+ # 应用配置并启动
359
+ v2box apply
360
+ v2box start
361
+
362
+ # 搞定!现在可以科学上网了
363
+ ```
364
+
365
+ ### 日常使用
366
+
367
+ ```bash
368
+ # 觉得网速慢?测一下
369
+ v2box test
370
+
371
+ # 切到最快的
372
+ v2box use 1
373
+
374
+ # 或者懒得管,交给自动
375
+ v2box auto
376
+ ```
377
+
378
+ ### 更新节点
379
+
380
+ ```bash
381
+ # 更新所有订阅(自动替换旧节点)
382
+ v2box sub update
383
+
384
+ # 重新应用并重启
385
+ v2box apply && v2box restart
386
+ ```
387
+
388
+ ### 自建节点(VPS)
389
+
390
+ ```bash
391
+ # 1. 创建服务端配置
392
+ v2box server create vless-reality -n "我的VPS"
393
+
394
+ # 2. 导出配置文件到 VPS
395
+ v2box server export "我的VPS" -o config.json
396
+ scp config.json root@1.2.3.4:/etc/sing-box/config.json
397
+ ssh root@1.2.3.4 systemctl restart sing-box
398
+
399
+ # 3. 生成客户端链接并导入本地
400
+ v2box server link "我的VPS" --ip 1.2.3.4 --import
401
+ v2box apply && v2box restart
402
+ ```
403
+
404
+ ---
405
+
406
+ ## ❓ 常见问题
407
+
408
+ **Q: apply 时提示权限不足?**
409
+ > sing-box 配置在 `/etc/sing-box/` 下,需要 sudo 权限。v2box 会自动调用 sudo tee 写入。
410
+
411
+ **Q: test 和 test --api 有什么区别?**
412
+ > `v2box test` 仅测 TCP 握手延迟,不需要 sing-box 运行,速度快但不代表真实代理速度。
413
+ > `v2box test --api` 通过 sing-box 的 Clash API 发送真实 HTTP 请求测试,更准确但需要服务运行中。
414
+
415
+ **Q: 手动模式和自动模式有什么区别?**
416
+ > 自动模式:sing-box 自动每 5 分钟测试并选最快节点。
417
+ > 手动模式:固定使用你指定的节点,不会自动切换。
418
+
419
+ **Q: 如何设置开机自启?**
420
+ > ```bash
421
+ > sudo systemctl enable sing-box
422
+ > ```
423
+
424
+ **Q: 如何让局域网内其他设备也能用代理?**
425
+ > ```bash
426
+ > v2box lan on -p 7890
427
+ > v2box apply && v2box restart
428
+ > # 其他设备设置 HTTP 代理: 本机 IP:7890
429
+ > ```
430
+
431
+ **Q: 导入重复节点会怎样?**
432
+ > v2box 基于节点的实际配置内容去重(而非仅按名称)。配置完全相同的节点会被跳过;
433
+ > 同名但配置不同的节点会自动加后缀区分,如 `节点名 (2)`。
434
+
435
+ **Q: 订阅更新后旧节点怎么处理?**
436
+ > `v2box sub update` 会自动删除该订阅的旧节点,然后导入新节点。手动添加的节点不受影响。
437
+
438
+ **Q: 服务端创建的密钥保存在哪里?**
439
+ > 保存在 `~/.config/v2box/servers.json`,包含 UUID、Reality 密钥对等敏感信息,请注意保护。
440
+
441
+ **Q: VLESS+WS 方案需要域名吗?**
442
+ > 服务端不需要(sing-box 不处理 TLS),但你需要一个域名配合 nginx 反代 HTTPS。
443
+ > 生成客户端链接时需要指定域名:`v2box server link "名称" --ip <IP> -d <域名>`
444
+
445
+ ---
446
+
447
+ ## 📄 License
448
+
449
+ MIT