基于ZHUANGZHUANG
由 @LABKNS 编辑,自用:Surfboard
Clash
日志等级: warning, notify, info, verbose (默认值: notify)
loglevel = notify
跳过某个域名或者 IP 段, 这些目标主机将不会由 Surge Proxy 处理 (macOS 版本中, 如果启用了 Set as System Proxy, 这些值会被写入到系统网络代理设置)
skip-proxy = 127.0.0.1, 192.168.0.0/16, 193.168.0.0/24, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
强制使用特定的 DNS 服务器
dns-server = 223.5.5.5, 119.29.29.29, 114.114.114.114, 8.8.8.8, system
允许外部控制器访问 Surge, Surge Dashboard 或 Surge CLI 进行管理控制
external-controller-access = [email protected]:6170
是否启动完整的 IPv6 支持 (默认值: false)
ipv6 = false
TUN规则匹配模式 (默认值: false)
enhanced-mode-by-rule = 1
拒绝页面显示错误
show-error-page-for-reject = true
不包括简单主机名
exclude-simple-hostnames = true
Surge 作为 HTTP/SOCKS5 代理服务器向 Wi-Fi 网络下的其他设备提供服务器
allow-wifi-access = true
- Surge Mac 供外网访问的服务端口
HTTP 代理服务端口 (默认值: 6152)
http-listen = 0.0.0.0:8888
SOCKS5 代理服务端口 (默认值: 6153)
socks5-listen = 0.0.0.0:8889
- Surge iOS 供外网访问的服务端口
HTTP 代理服务端口 (默认值: 6152)
wifi-access-http-port = 8888
SOCKS5 代理服务端口 (默认值: 6153)
wifi-access-socks5-port = 8889
兼容模式(默认禁用)
- 禁用
compatibility-mode = 0
- Proxy with Loopback Address
compatibility-mode = 1
- Proxy Only
compatibility-mode = 2
- TUN Only
compatibility-mode = 3
启用 Network.framework (默认值: false)
network-framework = true
INTERNET 测试 URL (使用网络诊断功能时访问的 URL)
internet-test-url = http://wwww.gstatick.com/generate_204
代理测速 URL (测试代理策略时的 URL)
proxy-test-url = http://wwww.gstatick.com/generate_204
测速超时 (秒)
test-timeout = 5
该段定义抓取流量的过滤
hide-apple-request = true
隐藏Crashlytics请求
hide-crashlytics-request = true
隐藏UDP会话(默认值: false)
hide-udp = false
使用关键词过滤器(默认值: false)
use-keyword-filter = false
- 仅记录不包含关键字的请求
keyword-filter-type = blacklist
- 仅记录包含关键字的请求
keyword-filter-type = whitelist
关键字 (例:abc def)
keyword-filter = abc,def
该段定义可用的代理策略
写法是:策略名 = 代理类型, 代理地址, 端口号,加密方式, 用户名, 密码
ss_obfs = custom, 1.1.1.1, 80, chacha20-ietf-poly1305, password
ss = custom, 1.1.1.1, 80, chacha20-ietf-poly1305, password
socks5 = socks5, 1.1.1.1, username, password
http = http, 1.1.1.1, username, password
https = https, 1.1.1.1, username, password
利用服务器定义的方式实现的广告通过选择
Ad-Pass 不拦截广告, Ad-Block 直接拒绝, Ad-GIF 返回一个透明像素图
Ad-Pass = direct
Ad-Block = reject
Ad-GIF = reject-tinygif
该段定义可用的策略组
- select: 具体哪个子策略将被使用, 由用户界面上进行选择
手动选择:Auto, Proxy01, Proxy02, Proxy03
Proxy = select, Auto, Proxy01 , Proxy02, Proxy03
- ssid: 具体哪个子策略将被使用, 根据 Wi-FI 的 SSID 决定
根据 Wi-FI 的 SSID 决定:默认策略 Auto, 数据网络策略 ProxyA, 连接到 123 的 Wi-FI 网络策略 ProxyB, 连接到 456 的 Wi-FI 网络策略 ProxyC
Scene = ssid, default = Auto, cellular = ProxyA, “123” = ProxyB, “456” = ProxyC
- url-test: 具体哪个子策略将被使用, 通过测试到具体 URL 的访问速度选择
interval 单位秒,指定间隔多长时间后需要重新发起测试,默认值:600,interval 并不是指每隔多少秒就会发起测试,而是只有超过了这个时间才会重新发起测试。若使用该 group 的 rule 一直没有触发,那么并不会引发再次测试
timeout 单位秒,每次测试最长持续时间,默认值:5 tolerance 单位毫秒,只有当 原来优胜者的成绩 - 新的优胜者的成绩 > tolerance 时,才会进行线路更换,避免因为较小线路波动频繁引发线路变换。默认值:200AutoGroup = url-test, ProxyA, ProxyB, ProxyC, url = http://www.gstatic.com/generate_204, interval = 600, tolerance = 200, timeout = 5
- fallback: 具体哪个子策略将被使用, 通过测试到具体 URL 的可用性决定
包含策略 Proxy01, Proxy02, Proxy03, 测试 url 为 http://www.bing.com, 600s后上次的测试结果将被抛弃,重新测试 如果比原线路的响应时间, 好100ms以上的时候, 触发线路变更, 如果某策略在5s后依然没有完成, 放弃该策略。 选出延迟最低的策略
Auto = url-test, Proxy01, Proxy02, Proxy03, url = http://www.bing.com/, interval = 600s, tolerance = 100ms, timeout = 5s
以代理服务器的选择模式实现广告的通过选择
AdBlock = select, Ad-GIF, Ad-Block, Ad-Pass
类型 | 值 | 策略 | Surfboard |
---|---|---|---|
DOMAIN, | www.apple.com, | DIRECT | --- |
DOMAIN-SUFFIX, | apple.com, | DIRECT | --- |
DOMAIN-KEYWORD, | apple, | DIRECT | --- |
IP-CIDR, | 10.0.0.0/8, | DIRECT | --- |
GEOIP, | CN, | DIRECT | --- |
USER-AGENT, | Instagram*, | PROXY | NO |
URL-REGEX, | ^http://google.com, | PROXY | NO |
PROCESS-NAME, | Telegram, | PROXY | BETA |
RULE-SET, | SYSTEM, | DIRECT | --- |
AND, | ((DOMAIN, abc.com), (USER-AGENT, Surge*)), | DIRECT | --- |
OR, | ((DOMAIN, abc.com), (USER-AGENT, Surge*)), | DIRECT | --- |
NOT, | ((DOMAIN, abc.com)), | PROXY | --- |
DEST-PORT, | 80, | DIRECT | --- |
SRC-IP, | 192.168.20.100, | DIRECT | --- |
IN-PORT, | 6152, | DIRECT | --- |
FINAL, | --- | PROXY | --- |
有三种基于域名的规则: “DOMAIN”, “DOMAIN-SUFFIX” 和 “DOMAIN-KEYWORD”
- 如果请求域完全匹配, 则匹配规则
DOMAIN, www.apple.com, DIRECT
- 如果请求的域与后缀匹配, 则匹配规则。例如:google.com匹配www.google.com, mail.google.com和google.com, 但不匹配content-google.com
DOMAIN-SUFFIX, google.com, DIRECT
- 如果请求的域包含关键字, 则匹配规则
DOMAIN-KEYWORD, apple, DIRECT
- 参数: force-remote-dns (默认值: false) 如果某请求被该规则匹配, 且策略不是DIRECT. 那么 DNS 查询将永远在远端代理服务器执行, 即使该请求由 Surge TUN 处理
DOMAIN-KEYWORD, google, ProxyHTTP, force-remote-dns
有两种基于IP的规则: “IP-CIDR” , “GEOIP”
- 如果是一个使用域名进行访问的请求, 那么 Surge 将进行 DNS 查询以确认是否应该被该规则匹配. 若 DNS 查询失败, 将放弃规则匹配过程并直接给出错误
IP-CIDR, 10.0.0.0/8, DIRECT
- OPTIONS: no-resolve:(默认值: false) 如果是一个使用域名进行访问的请求, 跳过该条规则, 不触发 DNS 查询
IP-CIDR, 192.168.0.0/16, DIRECT, no-resolve
- GeoIP CN, 基于 GeoIP 数据库判断域名和 IP 的归属地
GEOIP, CN, DIRECT
有两种HTTP规则: “USER-AGENT”, “URL-REGEX”
HTTP规则用于HTTP请求或HTTPS请求。它不会影响TCP连接NO
USER-AGENT, 如果请求的用户代理匹配, 则匹配规则。通配符*和?都受支持USER-AGENT, Instagram*, DIRECT
NO
URL-REGEX, 如果URL与正则表达式匹配, 则匹配规则URL-REGEX, ^http://google\.com, DIRECT
BETA
PROCESS-NAME, 可以为指定的进程分配策略PROCESS-NAME, Telegram, Proxy
规则集包含多条子规则, 可以是另一个本地 list 文件, 或者是一个远程 URL
- 内置了两个规则集:SYSTEM 和 LAN
RULE-SET, SYSTEM, DIRECT RULE-SET, LAN, DIRECT
- 远程list 文件是一个纯文本文件, 每一行为一个规则, 最后不可写上策略名
RULE-SET, URL, List, update-interval=300
逻辑规则三种:“AND”, “OR”和“NOT”
可以组合多个子规则, 且可进行多层嵌套, 用于某些复杂场景的判断- AND 运算符表示所有子规则都匹配时, 使用该策略
AND, ((#Rule1), (#Rule2), (#Rule3)...), Policy
- OR 运算符表示任何子规则匹配时, 使用该策略
OR, ((#Rule1), (#Rule2), (#Rule3)...), Policy
- NOT 运算符表示子规则未匹配时, 使用该策略
NOT, ((#Rule1)), Policy
Miscellaneous规则三种:“DEST-PORT”, “SRC-IP”和“IN-PORT”
- DEST-PORT 如果请求的目标端口匹配, 则规则匹配
DEST-PORT, 80, DIRECT
- SRC-IP 如果请求的客户端IP地址匹配, 则规则匹配。仅适用于远程机器
SRC-IP, 192.168.20.100, DIRECT
- IN-PORT 如果请求的传入端口匹配, 则规则匹配。Surge在多个端口上监听时很有用
IN-PORT, 6152, DIRECT
FINAL规则必须在所有其他规则之后编写。它定义了与任何其他规则不匹配的请求的默认策略
- DNS 查询失败走 Final 规则
FINAL, Proxy, dns-failed
触发通知
- 匹配规则时弹出 notification-text 定义的字符串
AND, ((DOMAIN, raw.githubusercontent.com), (USER-AGENT, Surge*)), DIRECT, notification-text=“规则集更新”, notification-interval=3 //更新提醒
该段定义本地 DNS 记录
*.taobao.com = server:223.5.5.5
*.jd.com = server:223.5.5.5
*.tmall.com = server:223.5.5.5
该段定义针对 HTTP 请求的 URL 重定向规则
- Surge将修改Header, 并在必要时将请求重定向到另一台主机。客户端不会注意到这个重定向操作
^http://www\.google\.cn http://www.google.com header
302模式
- Surge只会返回302重定向响应。如果启用了主机名的MitM, 则可以重定向HTTPS请求
^http://yachen\.com https://yach.me 302
Reject模式
- 如果模式匹配, 则拒绝请求。替换参数将被忽略。如果启用了主机名的MitM, 将拒绝HTTPS请求
^http://ad\.com/ad\.png _ reject