📦 TunnelProxyTunnelProxy — 隧道代理TunnelProxy
v1.0.5为 AI agent 提供的集成。通过用户本地的 TunnelProxy 实现网络代理、远程命令执行及双向文件传输。
18· 18·0 当前·0 累计
下载技能包
最后更新
2026/4/20
安全扫描
OpenClaw
安全
high confidence该技能的代码、文档和运行时指令与其声明的用途(通过本地 TunnelProxy 提供远程 shell、代理和文件传输)一致——它属于故意的高风险,但内部并无误导。
评估建议
该技能功能明确(按描述执行),但会授予对机器的完整远程 shell 与文件访问权限。仅在你完全控制并信任该 agent 时安装/使用。若继续:请以受限用户身份运行 TunnelProxy,除非有意暴露,否则绑定到 127.0.0.1;使用强 UPLOAD_MAGIC 及随机高端口;为服务配置防火墙;使用前审查内置脚本;非必要勿通过公共 frp 端点暴露;考虑禁用该技能的自主模型调用。若不确定,请勿安装——改用更受限的机制(如受控正向代理或显式文件共享端点)。...详细分析 ▾
✓ 用途与能力
名称/描述、README、SKILL.md 以及三个 Python 模块均实现了同一组功能(PTY 远程执行、HTTP 文件传输、通过远程 pip 下载)。未索取任何无关凭据、二进制文件或配置路径:声明的环境变量(TUNNEL_HOST、端口、UPLOAD_MAGIC)与实现一致。
ℹ 指令范围
SKILL.md 指示代理在用户机器上执行任意 shell 命令并传输任意文件(push/pull)。这正是该技能的目的,但本质上存在风险:指令允许完全命令执行和文件访问,并建议通过 frp 暴露服务以供公开访问。没有证据表明存在范围蔓延(未尝试读取无关的系统机密或其他技能的配置),但允许的操作非常强大。
✓ 安装机制
这是 instruction-plus-scripts(无安装规范)。依赖仅为 requests 和 pexpect(requirements.txt)。技能包中不含从不受信任 URL 下载或解压归档的操作;文件均为本地且可审查。
✓ 凭证需求
注册表元数据未强制要求任何 secret env 变量。代码使用可选 env 变量(TUNNEL_HOST、TUNNEL_PORT、TUNNEL_HTTP_PORT、TUNNEL_TIMEOUT、UPLOAD_MAGIC)来配置网络代理/隧道,未请求无关的 token 或云凭证。
ℹ 持久化与权限
始终为 false,且 skill 可被用户调用并可自主调用(disable-model-invocation=false)。自主调用对 skill 而言属正常,但若同时具备完整远程 shell/文件访问功能,则风险大增——用户若无法完全信任 agent,应知晓并限制其自主访问。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.52026/4/20
- 将文档中默认 TunnelProxy 示例地址从 "frp.freefrp.net" 更新为通用占位符 "your-frp-server.example.com"。 - 无功能或代码变更;仅为文档示例澄清,避免混淆。 - 版本号从 1.0.4 升至 1.0.5。
● 可疑
安装命令
点击复制官方npx clawhub@latest install tunnel-proxy
镜像加速npx clawhub@latest install tunnel-proxy --registry https://cn.longxiaskill.com
技能文档
🚇 安全警告
本技能可在你的机器上远程执行命令并传输文件。 使用前:- 除非有意暴露服务,否则设置
TUNNEL_HOST=127.0.0.1 - 对外暴露时使用 49152-65535 随机高端口
- 以受限用户身份运行 TunnelProxy
- 执行前检查所含脚本
# TunnelProxy Skill
概述
本技能让云端沙箱中的 AI agent 利用用户本地 TunnelProxy 服务绕过网络限制,提供: 远程命令执行(通过 PTY Shell) 双向文件传输(通过 HTTP 接口) 无限制网络访问(经用户本地连接)快速开始
1. 初始化连接
``python
from tunnel_ops import TunnelOps # 配置用户 TunnelProxy 地址
ops = TunnelOps(
host="your-frp-server.example.com", # 或用户自定义地址
pty_port=27417, # PTY Shell 端口
http_port=8080 # HTTP 文件服务器端口
)
# 验证连通性
if ops.check()["http"] and ops.check()["pty"]:
print("Tunnel 已就绪")
`
2. 执行远程命令
`python
# 在用户机器运行任意命令
output = ops.run_remote("curl -s https://httpbin.org/ip")
print(f"远程 IP: {output}") # 链式命令
ops.run_remote("cd /tmp && ls -la")
`
3. 文件传输
`python
# 从用户设备拉取文件到沙箱
ops.pull_file("/path/on/remote/file.txt", "local_copy.txt") # 将文件从沙箱推送到用户
ops.push_file("./result.tar.gz")
`
4. 获取远程内容
`python
# 经用户网络下载
content = ops.fetch_url("https://arxiv.org/abs/2301.00001") # 带进度下载文件
ops.fetch_url_to_file("https://example.com/large.zip", "./downloaded.zip")
`
5. 安装被墙包
`python
# 经用户网络下载 pip 包
local_tar = ops.pip_download("torch torchvision", target_dir="./packages")
` API 参考
TunnelOps 类
| 方法 | 说明 | 参数 |
|--------|-------------|------------|
| check() | 验证 HTTP 与 PTY 连通性 | 无 |
| run_remote(cmd, timeout) | 执行 shell 命令 | cmd: str, timeout: int = 30 |
| fetch_url(url, timeout) | 经远程 curl GET URL | url: str, timeout: int = 30 |
| fetch_url_to_file(url, path, timeout) | 下载 URL 到本地文件 | url, local_path, timeout |
| pull_file(remote, local) | 下载远程文件 | remote_path, local_path |
| push_file(local) | 上传本地文件到远程 | local_path |
| pip_download(package, target_dir) | 下载 pip 包 | package, target_dir | 环境变量
| 变量 | 默认值 | 说明 |
|----------|---------|-------------|
| TUNNEL_HOST | frp.freefrp.net | TunnelProxy 主机 |
| TUNNEL_PORT | 27417 | PTY Shell 端口 |
| TUNNEL_HTTP_PORT | 8080 | HTTP 文件服务器端口 |
| TUNNEL_TIMEOUT | 30 | 默认命令超时 | 错误处理
`python
try:
output = ops.run_remote("long_running_command", timeout=60)
except socket.timeout:
print("命令超时 - 可增大超时时间")
except ConnectionRefusedError:
print("TunnelProxy 不可达 - 检查服务是否运行")
` 安全提示
本技能授予 agent 对用户机器的完全命令控制权。仅用于:
- 你完全信任且自行控制的 AI agent
- 已了解安全后果的用户
- 具备额外防护措施(防火墙、UPLOAD_MAGIC)的环境
底层用法
无需 Python API 的单命令执行:
`bash
echo 'pwd' | python3 scripts/pty_exec.py
`
或使用 scripts/http_transfer.py 进行文件操作:
`bash
python3 scripts/http_transfer.py ping
python3 scripts/http_transfer.py upload /path/to/file
``