pac-proxy-cli 0.1.0

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.
package/.env ADDED
@@ -0,0 +1,3 @@
1
+ # 远程代理服务器地址(用于登录、PAC 同步等)
2
+ # 面板通过 /api/config 读取此配置,前端不展示该地址
3
+ PROXY_SERVER_URL=http://127.0.0.1:3890
package/README.md ADDED
@@ -0,0 +1,103 @@
1
+ # PAC Proxy CLI
2
+
3
+ 本机 HTTP 代理 + Web 管理面板。可搭配本地 SOCKS5 使用,或连接远程代理服务器;支持 PAC 规则、系统代理一键设置与流量查看。
4
+
5
+ ---
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npm install -g pac-proxy-cli
11
+ ```
12
+
13
+ 或使用 npx 直接运行(不全局安装):
14
+
15
+ ```bash
16
+ npx pac-proxy-cli start -s 127.0.0.1:1080
17
+ ```
18
+
19
+ ---
20
+
21
+ ## 使用方式
22
+
23
+ ### 方式一:上游为本地 SOCKS5
24
+
25
+ 本机已有 SOCKS5 代理(例如 `ssh -D 1080 user@server`)时,让本工具作为 HTTP 代理并打开管理面板:
26
+
27
+ ```bash
28
+ pac-proxy start -s 127.0.0.1:1080
29
+ ```
30
+
31
+ - HTTP 代理默认:`127.0.0.1:3893`
32
+ - 面板默认:`http://127.0.0.1:3892`(启动后会自动打开浏览器)
33
+
34
+ ### 方式二:上游为远程代理服务器
35
+
36
+ 若你有可用的远程代理服务器地址:
37
+
38
+ **命令行指定**
39
+
40
+ ```bash
41
+ pac-proxy start --server http://你的服务器地址:端口
42
+ ```
43
+
44
+ 此时流量会经该远程服务器转发;是否允许走代理由服务器端校验(例如仅特定账户可用)。
45
+
46
+ ---
47
+
48
+ ## Web 面板功能
49
+
50
+ ### 模式选择
51
+
52
+ - **本地模式**:PAC 规则只保存在本机,无需登录。
53
+ - **云端模式**:登录后可将 PAC 规则同步到远程服务器,并可从服务器拉取规则到本机。
54
+
55
+ ### 首页:系统代理
56
+
57
+ - **应用系统代理(PAC)**:把系统代理设为当前面板提供的 PAC 地址(多数系统可自动配置)。
58
+ - **清除系统代理**:取消系统代理设置。
59
+
60
+ PAC 决定「哪些网站走代理、哪些直连」,规则在「PAC 规则」页管理。
61
+
62
+ ### PAC 规则
63
+
64
+ - 新增、编辑、删除规则,按类型(按 Host / 按 URL / 默认)和顺序匹配。
65
+ - **本地模式**:规则仅存本机,立即生效。
66
+ - **云端模式**:可「从服务器拉取」、编辑后「保存到服务器」;拉取后在本机生效,需在首页重新「应用系统代理」以确保系统使用最新规则。
67
+ - **复制 / 导出**:仅导出「走代理」且启用的规则(每行一个匹配模式),可粘贴或导入到 Shadowsocks 等客户端的自定义规则中使用。
68
+
69
+ ### 流量
70
+
71
+ 查看经本机代理的请求列表(方法、URL、状态码等元数据),便于排查或确认是否走代理。不记录 HTTPS 正文。
72
+
73
+ ---
74
+
75
+ ## 常用命令
76
+
77
+ | 命令 | 说明 |
78
+ |------|------|
79
+ | `pac-proxy start` | 启动 HTTP 代理 + 面板。未指定 `-s` 时上游为远程服务器:优先用 `--server`,否则用 `.env` 的 `PROXY_SERVER_URL`;都未配置则需加 `-s` 指定 SOCKS5 |
80
+ | `pac-proxy start -s <host:port>` | 指定上游为本地 SOCKS5(如 `127.0.0.1:1080`) |
81
+ | `pac-proxy start --server <url>` | 指定上游为远程代理服务器地址;未指定时兜底使用 `.env` 的 `PROXY_SERVER_URL` |
82
+ | `pac-proxy panel` | 仅启动 Web 面板,不启动代理 |
83
+
84
+ **可选参数(start):**
85
+
86
+ - `-p, --port <数字>`:HTTP 代理端口,默认 3893
87
+ - `--panel-port <数字>`:面板端口,默认 3892
88
+ - `--server <url>`:上游远程代理服务器地址;为空时使用 `.env` 的 `PROXY_SERVER_URL`
89
+ - `--no-open`:启动时不自动打开浏览器
90
+
91
+ ---
92
+
93
+ ## 配置说明
94
+
95
+ - **PROXY_SERVER_URL**(在 `.env` 中):远程代理服务器地址。使用「方式二」且未传 `--server` 时以该值为上游;面板的登录、PAC 同步也会连到该地址。
96
+ - 修改端口或服务器地址后,需重新启动 `pac-proxy start` 或 `pac-proxy panel`。
97
+
98
+ ---
99
+
100
+ ## 注意事项
101
+
102
+ - 设置系统代理时,部分环境可能需要管理员权限;若自动设置失败,请到系统设置中手动填写 PAC 地址(面板首页会显示)。
103
+ - 使用远程服务器时,登录与代理权限由服务器端控制;本工具只负责转发请求与同步 PAC 规则。
package/bin/proxy.js ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+
3
+ import 'dotenv/config';
4
+ import { program } from 'commander';
5
+ import { startProxyAndPanel } from '../src/cli/start.js';
6
+ import { panelOnly } from '../src/cli/panel.js';
7
+
8
+ program
9
+ .name('proxy')
10
+ .description('HTTP 代理与隧道 - CLI')
11
+ .version('0.1.0');
12
+
13
+ program
14
+ .command('start')
15
+ .description('启动 HTTP 代理 + Web 管理面板(上游为本地 SOCKS5 或远程 Server)')
16
+ .option('-p, --port <number>', 'HTTP 代理端口', '3893')
17
+ .option('--panel-port <number>', 'Web 面板端口', '3892')
18
+ .option('-s, --socks <host:port>', '上游 SOCKS5 地址,如 127.0.0.1:1080(与远程服务器二选一)')
19
+ .option('--server <url>', '上游远程代理服务器地址;未指定时使用 .env 的 PROXY_SERVER_URL')
20
+ .option('--no-open', '不自动打开浏览器')
21
+ .action(startProxyAndPanel);
22
+
23
+ program
24
+ .command('panel')
25
+ .description('仅启动 Web 管理面板(不启动代理)')
26
+ .option('-p, --port <number>', '面板端口', '3892')
27
+ .option('--no-open', '不自动打开浏览器')
28
+ .action(panelOnly);
29
+
30
+ program.parse();
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "pac-proxy-cli",
3
+ "version": "0.1.0",
4
+ "description": "HTTP 代理与隧道 CLI + Web 管理面板",
5
+ "type": "module",
6
+ "files": [
7
+ "bin",
8
+ "src",
9
+ "public",
10
+ "README.md",
11
+ ".env"
12
+ ],
13
+ "bin": {
14
+ "pac-proxy": "./bin/proxy.js"
15
+ },
16
+ "scripts": {
17
+ "start": "node bin/proxy.js start",
18
+ "panel": "node bin/proxy.js panel"
19
+ },
20
+ "dependencies": {
21
+ "commander": "^12.0.0",
22
+ "dotenv": "^16.6.1",
23
+ "express": "^4.21.0",
24
+ "open": "^10.0.0",
25
+ "socks": "^2.8.0"
26
+ }
27
+ }