首页/教程/Clash vpn的RESTful API怎么用?地址和端口是什么?
CLASH GUIDE

Clash vpn的RESTful API怎么用?地址和端口是什么?

约 7 分钟阅读

Clash VPN的RESTful API通过配置文件中的external-controller字段启用,默认监听地址为127.0.0.1:9090。该API提供多个管理端点,包括获取配置(GET /config)、获取节点列表(GET /proxies)、切换节点(PUT /proxies/:name)、查看连接(GET /connections)和关闭连接(DELETE /connections)等功能。通过访问Dashboard面板(如http://yacd.haishan.me)并填入API地址即可进行可视化管理。若需局域网访问,将external-controller改为0.0.0.0:9090并确保防火墙放行端口。跨域问题时可通过SSH端口转发(ssh -L 9090:服务器IP:9090)将远程API映射到本地访问secret字段用于设置API访问密钥,保护远程管理安全

RESTful API的配置与基础信息

配置文件中的external-controller字段

Clash VPN的RESTful API通过配置文件中的external-controller字段启用,该字段定义了API服务的监听地址和端口号。在config.yaml文件中添加external-controller: 127.0.0.1:9090即可启用API服务,其中127.0.0.1为监听地址,9090为端口号。配置完成后重启Clash内核使配置生效。若需要从其他设备访问API,可将监听地址改为0.0.0.0:9090,让API监听所有网络接口

默认地址与端口值

Clash RESTful API的默认监听地址为127.0.0.1,端口号为9090。该端口与HTTP代理端口(7890)、SOCKS5代理端口(7891)是独立的,专门用于接收API管理请求。在配置文件中确认external-controller字段的值即可查看当前API地址和端口。部分客户端可能使用非标准端口(如ClashRS使用6170端口),需以实际配置文件为准

secret认证密钥的配置

为保护API访问安全,可在配置文件中通过secret字段设置认证密钥,防止未授权访问。配置示例为secret: "your-password",连接API时需要提供该密钥才能执行管理操作。若secret留空或不配置,API无需认证即可访问,适合本地使用场景。在公开网络环境中建议设置secret,避免他人通过API修改代理配置。

RESTful API的调用方法

通过浏览器访问Dashboard面板

RESTful API最常用的方式是配合Web管理面板(Dashboard)使用,通过浏览器可视化管理Clash代理。访问http://clash.razord.tophttp://yacd.haishan.me等第三方Dashboard页面,在设置中填入Clash API的地址(如127.0.0.1:9090)和密钥即可连接。连接成功后可在面板中切换节点、查看连接状态、修改代理模式等,无需操作配置文件。部分用户也可通过本地部署的Dashboard容器访问

使用curl命令调用API接口

通过curl命令可直接调用RESTful API的各个端点,实现自动化管理。获取当前配置信息的示例为curl http://127.0.0.1:9090/config,获取节点列表的示例为curl http://127.0.0.1:9090/proxies,切换代理节点的示例为curl -X PUT http://127.0.0.1:9090/proxies/策略组名 -d '{"name":"节点名称"}'。若配置了secret认证,需在请求头中添加Authorization: Bearer your-password。具体端点列表可参考Clash API文档

常用的API端点功能

RESTful API提供多个功能端点,覆盖Clash的主要管理操作。GET /config获取当前配置状态,PUT /config重新加载配置文件GET /proxies获取所有节点列表,GET /proxies/:name/delay测试指定节点的延迟GET /connections查看当前活跃连接,DELETE /connections关闭所有连接GET /rules查看当前规则列表。通过组合这些端点可实现自定义的管理界面或自动化脚本。

局域网访问与跨域配置

修改监听地址实现远程访问

默认的127.0.0.1监听地址仅允许本机访问,若需要在局域网中其他设备上通过API管理Clash,需将监听地址改为0.0.0.0。配置示例为external-controller: 0.0.0.0:9090,修改后局域网其他设备可通过http://服务器IP:9090访问API。同时需确保系统防火墙已放行9090端口,否则外部设备连接会被拦截。此配置在OpenClash和Docker部署中常见

跨域问题的解决方法

当通过浏览器访问Dashboard且Clash API与浏览器不在同一设备时,可能遇到跨域请求被拒绝的问题。解决方法包括将external-controller监听地址改为0.0.0.0解决跨域IP限制,或使用SSH端口转发将远程API端口映射到本地。命令示例为ssh -L 9090:服务器IP:9090 用户名@服务器IP,映射后浏览器访问127.0.0.1:9090即可连接远程API,避免跨域问题。

Docker环境中的端口映射

在Docker中运行Clash时,需将容器的9090端口映射到宿主机才能访问API。Docker配置示例为ports: - "9090:9090"将宿主机的9090端口映射到容器的9090端口。若宿主机9090端口被占用,可映射到其他端口,如ports: - "9098:9090",然后通过宿主机IP:9098访问API。同时需确保配置文件中的external-controller设为0.0.0.0:9090,让容器监听所有接口。

RESTful API的常见使用场景

通过Dashboard切换代理节点

Dashboard面板通过RESTful API实时获取节点列表和延迟数据,用户可在可视化界面中切换代理节点。访问Dashboard页面并连接API后,在“代理”或“Proxies”页面中点击任一节点即可切换。切换操作通过PUT /proxies/:name接口实现,Dashboard自动调用无需手动处理。该功能让无图形界面的Linux服务器也能通过浏览器管理Clash代理

自动化脚本与程序集成

RESTful API支持通过脚本或程序自动化管理Clash,例如定时切换节点、监控连接状态或重载配置。使用curl命令结合cron定时任务可定期执行节点切换,curl -X PUT http://127.0.0.1:9090/proxies/默认组 -d '{"name":"最优节点"}'。也可通过API监控当前流量和连接数,用于自动化运维场景。API的标准化接口使得Clash易于集成到现有的管理系统中。

远程管理和多设备同步

在局域网或远程环境中,可通过API远程管理Clash实例,无需登录服务器操作。将external-controller设为0.0.0.0并配置防火墙放行后,可从其他设备访问Dashboard页面进行节点切换和配置重载。多台设备上的Clash可通过API统一管理,但需注意各实例的API端口不能冲突。远程管理时建议配置secret认证保护API安全,避免未授权访问修改代理配置。

常见问题FAQ

RESTful API的默认端口是多少?

默认端口为9090,在配置文件中通过external-controller: 127.0.0.1:9090指定。该端口独立于HTTP代理端口(7890)和SOCKS5代理端口(7891),专门用于API管理请求。部分客户端可能自定义端口,以实际配置为准。

如何让其他设备访问Clash的RESTful API?

将配置文件中的external-controller地址从127.0.0.1改为0.0.0.0,例如external-controller: 0.0.0.0:9090。修改后局域网其他设备通过http://服务器IP:9090访问API。同时需确保系统防火墙已放行9090端口,否则连接会被拦截。

API连接Dashboard时提示跨域错误怎么办?

external-controller改为0.0.0.0可解决IP跨域问题。若跨域仍存在,可通过SSH端口转发将远程API映射到本地,命令为ssh -L 9090:服务器IP:9090 用户名@服务器IP,然后通过127.0.0.1:9090访问API

RESTful API的secret密钥如何设置?

config.yaml中添加secret: "your-password"即可设置认证密钥。设置后连接API时需在请求头中添加Authorization: Bearer your-password,或在Dashboard面板中输入密钥才能访问。若secret留空,API无需认证即可访问。
使用提醒

请从可信来源获取软件与配置,并遵守所在地法律法规和相关服务条款。