Surge配置详解

 阅读


配置示例

使用前须在 iCloud 云盘/Surge/resources/policy/ 文件夹内创建 auto.listall.list

在本地新建list文件


保护配置, 在Surge中不可修改(慎用:会导致配置无法编辑、分享

#!REQUIRE-PROTECTED

托管配置,24h更新一次

#!MANAGED-CONFIG https://raw.githubusercontent.com/ydzydzydz/Rules/master/conf/zhuangzhuang/zhuangzhuang.conf interval=86400 strict=true

[General]

日志等级: 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, https://9.9.9.9/dns-query, https://cloudflare-dns.com/dns-query

允许外部控制器访问 Surge, Surge Dashboard 或 Surge CLI 进行管理控制

external-controller-access = passw@127.0.0.1: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

强制 TCP 连接为 HTTP 连接

force-http-engine-hosts = api.joybj.com

返回真实 IP

always-real-ip = *.apple.com

劫持其它 DNS 服务器

hijack-dns = 8.8.8.8:53

绕过特定 IP 范围

tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12

包含特定 IP 范围

tun-included-routes = 192.168.1.12/32

[Replica]

该段定义抓取流量的过滤

隐藏所有发往 *.Apple.com 和 *.icloud.com 的请求(该选项只是在抓取结果中隐藏了请求)

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

[Proxy]

该段定义可用的代理策略

写法是:策略名 = 代理类型, 代理地址, 端口号, 用户名, 密码

不同的类型填写的具体项目会有差异, 建议在 UI 界面中填写

策略名不可重复, 策略名须先定义才能在其它部分引用

ProxyHTTP = http, [SERVER ADDRESS], [GENERATED PORT], username = 用户名, password = 密码
ProxyHTTPS = https, [SERVER ADDRESS], [GENERATED PORT], username = 用户名, password = 密码
ProxySOCKS5 = socks5, [SERVER ADDRESS], [GENERATED PORT], username = 用户名, password = 密码
ProxySOCKS5TLS = socks5-tls, [SERVER ADDRESS], [GENERATED PORT], username = 用户名, password = 密码, skip-common-name-verify=true
ProxySnell = snell, [SERVER ADDRESS], [GENERATED PORT], psk=[GENERATED PSK], obfs=http
ProxyShadowsocks01 = custom, [SERVER ADDRESS], [GENERATED PORT], chacha20-ietf-poly1305, password, https://raw.githubusercontent.com/ydzydzydz/Rules/master/SSEncrypt/SSEncrypt.module
ProxyShadowsocks02 = ss, [SERVER ADDRESS], [GENERATED PORT], encrypt-method = rc4-md5, password = 密码
ProxyVmess= vmess, [SERVER ADDRESS], [GENERATED PORT], username = [UUID], ws=true, tls=true, ws-path=/v2, ws-headers=X-Header-1:value|X-Header-2:value

可选参数:

  • 开启 TCP Fast Open

    tfo = true
    
  • 开启 UDP

    udp-relay = true
    
  • 开启 MPTCP

    mptcp = true
    

利用服务器定义的方式实现的广告通过选择

Ad-Pass 不拦截广告, Ad-Block 直接拒绝, Ad-GIF 返回一个透明像素图

Ad-Pass = direct
Ad-Block = reject
Ad-GIF = reject-tinygif

[Proxy Group]

该段定义可用的策略组

有 5 种策略组类型: select、url-test、fallback、ssid 和 load-balance

select: 具体哪个子策略将被使用, 由用户界面上进行选择

ssid: 具体哪个子策略将被使用, 根据 Wi-FI 的 SSID 决定

url-test: 具体哪个子策略将被使用, 通过测试到具体 URL 的访问速度选择

fallback: 具体哪个子策略将被使用, 通过测试到具体 URL 的可用性决定

load-balance: 随机选用一个可用的子策略

  • 手动选择:Auto, Proxy01, Proxy02, Proxy03
    Proxy = select, Auto, Proxy01 , Proxy02, Proxy03
    
  • 根据 Wi-FI 的 SSID 决定:默认策略 Auto, 数据网络策略 ProxyA, 连接到 123 的 Wi-FI 网络策略 ProxyB, 连接到 456 的 Wi-FI 网络策略 ProxyC
    Scene = ssid, default = Auto, cellular = ProxyA, “123” = ProxyB, “456” = ProxyC
    
  • 可用性自动测试:包含策略 Proxy01, Proxy02, Proxy03, 测试 url 为 http://www.bing.com, 选出可用的第一个策略,测试完成前使用第一个策略
    Video = fallback, Proxy01, Proxy02, Proxy03, url = http://www.bing.com/, evaluate-before-use = true
    
  • 延迟自动测试:包含策略 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, evaluate-before-use = true
    
  • 均衡策略:包含策略 Proxy01, Proxy02, Proxy03, 测试 url 为 http://www.bing.com, 随机选用一个可用的策略
Balance = load-balance, Proxy01, Proxy02, Proxy03, url = http://www.bing.com/

以代理服务器的选择模式实现广告的通过选择

AdBlock = select, Ad-GIF, Ad-Block, Ad-Pass

策略组的另一种写法:引用远程或者本地list文件, 本地须将list文件放置在iCloud云盘Surge文件夹中, list文件示例

  • 远程list
    AdBlock = select, policy-path = https://raw.githubusercontent.com/ydzydzydz/Rules/master/Surge/resources/policy/ad.list
    
  • 本地list
    AdBlock = select, policy-path = ad.list
    

外部策略组默认更新间隔时间为 24h,可自定义

🚦 Ad-Block = select, policy-path = https://raw.githubusercontent.com/ydzydzydz/Rules/master/Surge/resources/policy/ad.list, update-interval=300

关于策略组的理解


[Rule]

规则定义部分

一条规则有三个基础部分:

类型 策略 注释(非必需)
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*, ProxyA //注释
URL-REGEX, ^http:\/\/google\.com, ProxyA //注释
PROCESS-NAME, Telegram, ProxyA //注释
RULE-SET, SYSTEM, DIRECT //注释
AND, ((DOMAIN, abc.com), (USER-AGENT, Surge*)), DIRECT //注释
OR, ((DOMAIN, abc.com), (USER-AGENT, Surge*)), DIRECT //注释
NOT, ((DOMAIN, abc.com)), ProxyA //注释
DEST-PORT, 80, DIRECT //注释
SRC-IP, 192.168.20.100, DIRECT //注释
IN-PORT, 6152, DIRECT //注释
FINAL,   ProxyA //注释

有三种基于域名的规则: “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连接。

  • USER-AGENT, 如果请求的用户代理匹配, 则匹配规则。通配符*和?都受支持。
    USER-AGENT, Instagram*, DIRECT
    
  • URL-REGEX, 如果URL与正则表达式匹配, 则匹配规则。最新版 Surge 的 URL-REGEX 规则支持 Mitm
    URL-REGEX, ^http://google\.com, DIRECT
    
  • PROCESS-NAME, 可以为指定的进程分配策略, 规则仅适用于Surge Mac, Surge iOS 会忽略了这些规则。
    PROCESS-NAME, Telegram, Proxy
    

RULESET规则集

规则集包含多条子规则, 可以是另一个本地 list 文件, 或者是一个 URL(当前版本中固定为每 24 小时进行一次自动更新)

  • 内置了两个规则集:SYSTEMLAN
    RULE-SET, SYSTEM, DIRECT
    RULE-SET, LAN, DIRECT
    
  • list 文件是一个纯文本文件, 每一行为一个规则, 最后不可写上策略名, list文件示例
    RULE-SET, https://raw.githubusercontent.com/ydzydzydz/Rules/master/special/apple.list, Proxy
    

外部规则集默认更新间隔时间为 24h,可自定义

RULE-SET,https://raw.githubusercontent.com/ydzydzydz/Rules/master/special/telegram.list,🛩 Telegram,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规则
FINAL规则必须在所有其他规则之后编写。它定义了与任何其他规则不匹配的请求的默认策略。

  • DNS 查询失败走 Final 规则
    FINAL, Proxy, dns-failed
    

触发通知

  • 匹配规则时弹出 notification-text 定义的字符串
    AND, ((DOMAIN, raw.githubusercontent.com), (USER-AGENT, Surge*)), DIRECT, notification-text=“规则集更新”, notification-interval=3 //更新提醒
    

[Host]

该段定义本地 DNS 记录

该功能等同于 /etc/hosts, 加上了泛解析和别名支持。

*.taobao.com = server:223.5.5.5
*.jd.com = server:223.5.5.5
*.tmall.com = server:223.5.5.5
*.example.com = server:https://cloudflare-dns.com/dns-query
cloudflare-dns.com = server:1.1.1.1

[URL Rewrite]

该段定义针对 HTTP 请求的 URL 重定向规则

Header模式

  • 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
    

[Header Rewrite]

重定向HTTP请求或者篡改请求Header

header-add

  • 为请求头添加一个新的header line,即使header line已存在
    ^http://example.com header-add DNT 1
    
     # 修改前
     GET /index.html HTTP/1.1
     Host: example.com
     Connection: keep-alive
     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
     Accept-Language: en-us
     Accept-Encoding: gzip, deflate
       
     # 修改后:
     GET /index.html HTTP/1.1
     Host: example.com
     Connection: keep-alive
     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
     Accept-Language: en-us
     Accept-Encoding: gzip, deflate
     DNT: 1     # 请求某个网页应用程序停止跟踪某个用户
    

header-del

  • 从请求头中删除header line
    ^http://example.com header-del DNT
    
     # 修改前:
     GET /index.html HTTP/1.1
     Host: example.com
     Connection: keep-alive
     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
     Accept-Language: en-us
     Accept-Encoding: gzip, deflate
     DNT: 1
    
     # 修改后:
     GET /index.html HTTP/1.1
     Host: example.com
     Connection: keep-alive
     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
     Accept-Language: en-us
     Accept-Encoding: gzip, deflate
    

header-replace

  • 替换请求头,如果请求头字段不存在,则不做任何修改
    ^http://example.com header-replace DNT 1
    
     # 修改前:
     GET /index.html HTTP/1.1
     Host: example.com
     Connection: keep-alive
     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
     Accept-Language: en-us
     Accept-Encoding: gzip, deflate
     DNT: 0
    
     # 修改后:
     GET /index.html HTTP/1.1
     Host: example.com
     Connection: keep-alive
     User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML,  like Gecko) Version/10.1 Safari/603.1.30
     Accept-Language: en-us
     Accept-Encoding: gzip, deflate
     DNT: 1
    

如果要在请求头字段存在时添加或替换header line,可以一起使用header-add和header-del。

^http://example.com header-del DNT
^http://example.com header-add DNT 1

[SSID Setting]

  • 连接到 Apple Store 的 Wi-Fi 网络时 Surge 暂停工作
    需要 Web 验证登录的 Wi-Fi 网络以及路由器已经科学上网的 Surge 挂起
    “Apple Store” suspend=true
    
  • 计费网络模式, 当连接到热点名为 iPhone X 的网络时自动切换为计费模式
    “iPhone X” cellular-mode=true
    

[MITM]

Surge可以通过MitM解密HTTPS通信

跳过服务端证书验证

skip-server-cert-verify = true

用于TCP连接

tcp-Connection = true

自动旁路(最新版已经删掉了)

auto-bypass = on

主机名(默认只解密443端口,使用suffix:0为主机名上的所有端口启用Mitm,使用suffix:port为主机名上的特定端口启用Mitm)

hostname = api.chelaile.net.cnn.cn

最新版 Surge 的 URL-REGEX 规则支持 Mitm,可以通过添加前缀-排除域名

hostname = -*.apple.com,-*.icloud.com,*

证书生成器将帮助您生成用于调试的新CA证书, 并使证书受到系统的信任。

它可以在 Surge Dashboard ( Mac 版 )和 Surge iOS 配置编辑器中使用。

这个证书是本地生成的, 只会保存在配置文件和系统密钥链中。

证书密钥是使用OpenSSL随机生成的。

还可以使用现有的CA证书。将证书导出到PKCS#12格式(.p12)。

请注意, 由于系统限制, 密码不能为空。使用base64命令对p12进行编码, 并将这些设置附加到配置文件中。

# P12密码
ca-passphrase = zhuangzhuang

# base64编码过的P12文件
ca-p12 = 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

安装证书

  • 配置根证书-安装证书-设置-通用描述文件与设备管理-安装
  • 设置-通用-关于本机-证书信任设置-信任

强迫症患者解决Surge证书未验证


[Snell Server]

使用Surge Mac作为Snell代理服务器(从3.1.0版本开始)。

interface = 0.0.0.0
port = 6160
psk = RANDOM_KEY_HERE
obfs = off

[Script]

使用 Surge 执行 JavaScript 脚本

每一行以空格分隔为三个部分,第一部分为脚本类型,第二部分为值,第三部分为参数表,参数以半角逗号隔开。

参数表包含的参数有:

  • script-path:脚本路径,可以是相对路径、绝对路径或者 URL
  • script-update-interval:当脚本路径为 URL 时的自动更新频率,单位为秒
  • debug:开启 debug 模式,如果是一个本地脚本,那么每次执行脚本时,都会从本地存储重新加载脚本,方便调试。(未来会有更多 debug 功能加入)
  • timeout:脚本的最长运行时间,默认为 10s
  • requires-body:仅对 http-request 和 http-response 类型生效,表示该脚本需要对 body 进行处理,默认为 false。如果只需要修改 URL 或者 Headers 请不要开启该选项,将大幅节约资源。
  • max-size:仅对 http-request 和 http-response 类型生效,表示该脚本最大允许处理的 body 大小,若超过则放弃处理,默认值为 131072 (128KB)。

由于进行脚本修改会需要 Surge 先将 response body 完全下载后再进行处理,如果遇到了较大的数据将导致内存占用量暴增,Surge iOS 受系统内存限制在该情况下极易被直接终止。所以请务必仔细配置 URL 匹配规则,仅对需要的 URL 进行处理。

当返回的数据长度超过 max-size 设定值后,Surge 将放弃对该请求执行脚本并回退到 passthrough 模式。

有七种脚本类型:

http-request

用于修改 HTTP 请求体,该类型下第二参数为匹配 URL 的正则表达式,被匹配到的请求会被执行脚本。

http-request ^http://httpbin.org script-path=http-request.js,max-size=16384,debug=true,requires-body=true

http-response

用于修改 HTTP 返回体,该类型下第二参数为匹配 URL 的正则表达式,被匹配到的请求会被执行脚本。

http-response ^http://www.example.com/test script-path=test.js,max-size=16384,debug=true

cron

可配置 Surge 在特定的时间执行脚本,触发时间配置使用 crontab 的样式。该类型下第二参数为 crontab 表达式,常见的 crontab 为五位表示,即 * * * * * 表示每分钟执行一次,Surge 兼容五位表示和六位表示,可用 * * * * * * 表示每秒钟执行一次。但不支持 @daily 这样的别名。

cron "* * * * *" script-path=fired.js

event

在发生特定事件时执行脚本,该类型下第二参数为事件名称,目前只有 network-changed 一个事件。

event network-changed script-path=network-changed.js

rule

使用脚本进行规则判定,该类型下第二参数为规则名

rule ssid-rule script-path=ssid-rule.js

policy-group

使用脚本去决定 policy-group,该类型下第二参数为脚本名。

policy-group worst script-path=worst.js,debug=true

dns

使用脚本去执行 DNS 解析操作,该类型下第二参数为脚本名。

dns local script-path=dns.js,debug=true

壮壮只做了简单介绍,具体内容请参考官方论坛


大佬们的规则:

项目地址 捷径 JSBOX
Blankwonder/surge-list    
Choler/Surge Surge  
ConnersHua/Profiles Surge2/Surge3  
Hackl0us/SS-Rule-Snippet Surge2/Surge3  
lhie1/Rules   Rules-lhie1
scomper/surge-list    
tudi1909/Surge_iOS_Rules    
tudi1909/Surge_macOS_Rules    
Neurogram   Surge³
huanz/surge-hosts    
XinSSS/Conf-for-Surge-Shadowrocket    
h2y/Shadowrocket-ADBlock-Rules    

如何自己写配置

推荐神机大佬的:Surge 使用手册


参考:

scomper/Surge
Surge 用户手册

反馈:

ZHUANGZHUANG



 RSS订阅


 邮件订阅



 阅读时间

00:00:00


一言 获取中...