一个 Windows 桌面小工具:把本地 HTTP/SOCKS5 代理暴露给局域网,并将所有连接统一转发到上游 SOCKS5 服务器。可选开启 Windows 系统代理,让本机大多数应用也走同一个链路。
- 上游 SOCKS5 支持无认证和用户名/密码认证
- 本地 HTTP 代理支持普通 HTTP 请求和 HTTPS CONNECT 隧道
- 本地 SOCKS5 代理,适合支持 SOCKS5 的浏览器或应用
- 可选监听
0.0.0.0,局域网设备可直接使用 - 可选局域网访问账号,防止局域网内被当作开放代理
- 一键切换 Windows 应用级系统代理,停止时自动恢复原设置
- 可选 TUN 全局模式,接管本机 IPv4 全流量(需要管理员权限)
- 异常退出后可在界面上一键恢复系统代理
- 核心代理仅使用 Python 标准库;TUN 模式首次使用会自动下载 Wintun/tun2socks
需要 Windows 和 Python 3.10 或更高版本。
直接双击 run.bat,或在项目目录执行:
python main.py界面填写上游 SOCKS5 服务器和端口,然后点击“启动代理”。如果上游需要认证,同时填写用户名和密码。
如果当前 Python 的 Tkinter 运行库不可用,程序会自动改成本地网页控制台并打开浏览器,功能一致。
启动后,本机局域网 IP 会显示在界面状态栏。其他设备按类型填写:
| 类型 | 配置 |
|---|---|
| HTTP 代理 | http://<电脑局域网IP>:8080 |
| SOCKS5 代理 | <电脑局域网IP>:1081 |
端口可以在界面中修改。如果设置了局域网账号,HTTP 代理需要填写 Basic 认证账号密码,SOCKS5 客户端也需要填写同样的账号密码。
软件在电脑上监听两个本地代理端口:
- HTTP 代理:用于 Windows 系统代理、浏览器 HTTP 代理和 HTTPS CONNECT
- SOCKS5 代理:用于支持 SOCKS5 的客户端
这两个端口收到连接后,都会通过上游 SOCKS5 建立到目标网站的 TCP 连接并双向转发。勾选“启用 Windows 系统代理(应用级)”后,程序会把 Windows 的 Internet Settings 指到本地 HTTP 和 SOCKS5 端口;停止代理时会恢复启动前保存的设置。
勾选“启用 TUN 全局模式”后,程序会创建名为 LanSocksProxy 的 Wintun 虚拟网卡,把本机默认 IPv4 路由指向该网卡,并通过 tun2socks 将网卡流量交给本地 SOCKS5 端口,再统一转发到上游 SOCKS5。上游连接会绑定到物理网卡,避免被 TUN 路由重新捕获形成回环。第一次使用时会自动下载 Wintun 驱动和 tun2socks 可执行文件到 %APPDATA%\LanSocksProxy\bin,也可以先执行 python -m lan_socks_proxy.tunmode 预下载。该模式需要以管理员身份运行程序;停止代理时会删除临时路由并关闭进程,tun2socks 异常退出时也会自动清理并停止代理。
启用系统代理前,程序会先把当前代理设置保存到 %APPDATA%\LanSocksProxy\proxy_backup.json。正常停止代理时会自动恢复并删除备份;如果程序异常退出,备份会保留,下次启动后可用界面上的“恢复系统代理”按钮恢复。
- Windows 应用级系统代理不是 TUN 全流量接管。不读取系统代理的软件不会被代理。
- TUN 全局模式会修改本机 IPv4 默认路由,需要管理员权限;目前只接管 IPv4,IPv6 流量不受影响。
- TUN 组件当前仅内置 amd64/x64 的 SHA-256 校验,其他 CPU 架构暂不支持。
- 本地 SOCKS5 支持 UDP ASSOCIATE,但上游 SOCKS5 也必须支持 UDP,DNS/UDP 才能正常转发。
- 局域网账号和上游密码会以明文保存在
%APPDATA%\LanSocksProxy\config.json。 - 如果不设置局域网账号,任何能访问你电脑的设备都能使用该代理,建议只在可信局域网使用,或在 Windows 防火墙中限制来源 IP。
项目不包含预编译 EXE。如需独立可执行文件,运行:
.\build.ps1该脚本会安装 PyInstaller 并输出 dist\LanSocksProxy.exe。