目录
什么是Surge配置
Surge是一款功能强大的网络工具,可以帮助用户实现网络代理、流量监控、DNS管理等功能。Surge的强大之处在于其灵活的配置系统,用户可以通过编辑配置文件来自定义Surge的各项功能。
Surge配置文件是一个纯文本文件,用户可以根据自己的需求对其进行编辑和修改。配置文件中包含了Surge的各项设置,如代理服务器信息、分组策略、规则匹配、脚本功能等。通过合理地配置这些设置,用户可以充分发挥Surge的潜力,实现个性化的网络管理。
Surge配置文件结构
Surge配置文件主要由以下几个模块组成:
General模块
General模块用于配置Surge的基础设置,如配置文件版本、HTTP代理设置、SOCKS代理设置等。
[General] loglevel = notify interface = 0.0.0.0 socks-interface = 0.0.0.0 http-interface = 0.0.0.0 socks-port = 7891 http-port = 7890
Proxy模块
Proxy模块用于配置代理服务器信息,包括服务器地址、端口、协议类型、加密方式等。
[Proxy] Proxy1 = ss, 1.2.3.4, 8388, aes-256-cfb, password Proxy2 = vmess, 4.5.6.7, 443, username, 23ad6b7568c4f02e8858a7c18844b7fd
Proxy Group模块
Proxy Group模块用于配置代理分组,可以根据不同的规则将代理服务器划分为不同的分组。
[Proxy Group] Proxy = select, Proxy1, Proxy2 AdProxy = select, DIRECT, Proxy
Rule模块
Rule模块用于配置流量匹配规则,根据不同的规则将流量导向不同的代理分组或直连。
[Rule]
DOMAIN-SUFFIX,local,DIRECT
DOMAIN-KEYWORD,google,AdProxy GEOIP,CN,DIRECT FINAL,Proxy
Script模块
Script模块用于配置Surge的脚本功能,可以编写自定义的脚本来实现各种网络管理功能。
[Script]
traffic = type=http-response,pattern=^https?://(www.)?example.com,script-path=https://example.com/traffic.js
通过合理地配置这些模块,用户可以实现Surge的各种高级功能,满足不同的网络管理需求。
常用Surge配置项
代理服务器设置
在Proxy模块中,用户可以配置各种类型的代理服务器信息,如SS、VMess、Trojan等。每个代理服务器配置项包含以下信息:
- 服务器地址
- 服务器端口
- 加密方式
- 密码或密钥
通过合理地配置这些信息,用户可以连接到不同的代理服务器,实现网络代理功能。
分组策略设置
在Proxy Group模块中,用户可以配置不同的代理分组。分组策略包括:
- select: 手动选择分组
- url-test: 根据延迟测试选择分组
- fallback: 根据可用性选择分组
- load-balance: 根据负载均衡选择分组
用户可以根据自己的需求,配置不同的分组策略,实现更灵活的代理切换。
规则匹配设置
在Rule模块中,用户可以配置各种流量匹配规则,如域名、关键词、地理位置等。根据不同的规则,将流量导向不同的代理分组或直连。
规则匹配支持以下几种类型:
- DOMAIN: 域名匹配
- DOMAIN-SUFFIX: 域名后缀匹配
- DOMAIN-KEYWORD: 域名关键词匹配
- IP-CIDR: IP地址段匹配
- GEOIP: 地理位置匹配
- USER-AGENT: 用户代理匹配
用户可以根据自己的需求,灵活配置各种规则,实现精细化的流量管理。
脚本功能设置
在Script模块中,用户可以配置各种自定义脚本,实现Surge的高级功能。脚本可以用于流量监控、网页重写、DNS管理等场景。
脚本配置包含以下信息:
- type: 脚本类型,如http-request、http-response等
- pattern: 匹配模式,如URL、请求头等
- script-path: 脚本路径,可以是本地文件或远程URL
通过编写灵活的脚本,用户可以大幅扩展Surge的功能,满足各种个性化需求。
Surge脚本编写
脚本语法介绍
Surge脚本使用JavaScript语言编写,支持各种常见的JS语法和API。脚本可以访问HTTP请求/响应的各种属性,如URL、头部、Body等,并进行相应的处理和修改。
脚本中可以使用的常用API包括:
$request
: 获取HTTP请求对象$response
: 获取HTTP响应对象$done()
: 完成脚本执行并返回修改后的请求/响应
通过灵活运用这些API,用户可以编写出各种功能强大的Surge脚本。
常用脚本示例
以下是一些常用的Surge脚本示例:
- 流量监控脚本: javascript var traffic = 0;
$httpClient.get(‘http://example.com/api/traffic’, function(error, response, data){ if (error == null) { traffic = JSON.parse(data).total; $done({ response: { status: response.status, headers: response.headers, body: JSON.stringify({ total: traffic }) } }); } else { $done({}); } });
- 网页重写脚本: javascript var body = $response.body; var obj = JSON.parse(body);
obj.data.vip = true; obj.data.expire_time = 1735669200;
$done({body: JSON.stringify(obj)});
- DNS管理脚本: javascript var dns = $configuration.dns; var hosts = { “example.com”: “1.2.3.4”, “google.com”: “5.6.7.8