diff --git a/docs/01.shadowrocket_configure.md b/docs/01.shadowrocket_configure.md new file mode 100644 index 0000000..c486488 --- /dev/null +++ b/docs/01.shadowrocket_configure.md @@ -0,0 +1,186 @@ +[General] +# 旁路系统。如果禁用此选项,可能会导致一些系统问题,如推送通知延迟。 +bypass-system = true +# 跳过代理。此选项强制这些域名或IP的连接范围由Shadowrocket TUN接口来处理,而不是Shadowrocket代理服务器。此选项用于解决一些应用程序的一些兼容性问题。 +skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local, captive.apple.com,*.ccb.com,*.abchina.com.cn,*.psbc.com +# TUN旁路路由。Shadowrocket TUN接口只能处理TCP协议。使用此选项可以绕过指定的IP范围,让其他协议通过。 +tun-excluded-routes = 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.88.99.0/24, 192.168.0.0/16, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 255.255.255.255/32, 239.255.255.250/32 +# DNS覆写。使用普通DNS或加密DNS(如doh、doq、dot等)覆盖默认的系统DNS。有些dns over https支持http3,所以尝试查询,如果支持就切换到http3。可在doh链接后面加上#no-h3关闭。 +dns-server = https://doh.pub/dns-query,https://dns.alidns.com/dns-query,223.5.5.5,119.29.29.29 +# 备用DNS。当覆写的DNS解析失败后回退备用DNS,如需指定多个DNS,可用逗号分隔。system表示回退到系统DNS。 +fallback-dns-server = system +# 启用IPv6支持。false表示不启用,true表示启用。 +ipv6 = false +# 首选IPv6。优先向IPv6的DNS服务器查询AAAA记录,优先使用AAAA记录。false表示不启用。 +prefer-ipv6 = false +# 域名直接使用系统DNS进行解析。false表示不启用。 +dns-direct-system = false +# ping数据包自动回复。 +icmp-auto-reply = true +# 不开启时,REJECT策略默认只有在配置模式下生效。开启后,可以令该策略在其他全局路由模式下都生效。 +always-reject-url-rewrite = false +# 私有IP应答。如果不启用该选项,域名解析返回私有IP,Shadowrocket会认为该域名被劫持而强制使用代理。 +private-ip-answer = true +# 直连域名解析失败后使用代理。false表示不启用。 +dns-direct-fallback-proxy = false +# 当UDP流量匹配到规则里不支持UDP转发的节点策略时重新选择回退行为,可选行为包括DIRECT、REJECT。DIRECT表示直连转发UDP流量,REJECT表示拒绝转发UDP流量。 +udp-policy-not-supported-behaviour = REJECT +# 包含配置。如“include=a.conf”表示当前配置包含另一个配置a.conf的内容,当前配置的优先级高于a.conf。该选项是对配置建立包含关系,以满足同时使用多个配置的需求。 +include = + +[Proxy] +# 添加本地节点。 +# Shadowsocks类型: +# 节点名称=ss,地址,端口,password=密码,其他参数(如method=aes-256-cfb,obfs=websocket,plugin=none) +# Vmess类型: +# 节点名称=vmess,地址,端口,password=密码,其他参数(如alterId=0,method=auto,obfs=websocket,tfo=1) +# VLESS类型: +# 节点名称=vless,地址,端口,password=密码,tls=true,其他参数(如obfs=websocket,peer=example.com) +# HTTP/HTTPS/Socks5/Socks5 Over TLS等类型: +# 节点名称=http,地址,端口,用户,密码 +# 节点名称=https,地址,端口,用户,密码 +# 节点名称=socks5,地址,端口,用户,密码 +# 节点名称=socks5-tls,地址,端口,用户,密码,skip-common-name-verify=true +# Trojan类型: +# 节点名称=trojan,地址,端口,password=密码,其他参数(如allowInsecure=1,peer=example.com) + +[Proxy Group] +# 代理分组类型: +# select:手动选择节点。 +# url-test:自动选择延迟最低节点。 +# fallback:节点挂掉时自动切换其他可用节点。 +# load-balance:不同规则的请求使用分组里的不同节点进行连接。 +# random:随机使用分组里的不同节点进行连接。 +# ---------- +# policy-regex-filter表示正则式或关键词筛选,常用写法: +# 筛选保留节点名称含有关键词A和B的节点: +# (?=.*(A))^(?=.*(B))^.*$ +# 筛选保留节点名称含有关键词A或B的节点: +# A|B +# 筛选排除节点名称含有关键词A或B的节点: +# ^((?!(A|B)).)*$ +# 筛选保留节点名称含有关键词A并排除含有关键词B的节点: +# (?=.*(A).)^((?!(B)).)*$ +# ---------- +# 代理分组其他设置参数: +# interval:指定间隔多长时间后需要重新发起测试。 +# timeout:如果测试在超时前未完成,放弃测试。 +# tolerance:只有当新优胜者的分数高于旧优胜者的分数加上公差时,才会进行线路更换。 +# url:指定要测试的URL。 +# ---------- +# 不含正则筛选的代理分组,示例: +# 名称=类型(如select,url-test,fallback,load-balance,random),策略(如direct,proxy,订阅名称,代理分组,节点),interval=测试周期,timeout=超时时间,tolerance=公差,select=默认策略(0表示第一个策略,1表示第二个策略,2表示第三个策略……),url=测试地址 +# 含正则筛选的代理分组,示例: +# 名称=类型(如select,url-test,fallback,load-balance,random),policy-regex-filter=正则式或关键词筛选,interval=测试周期,timeout=超时时间,tolerance=公差,select=默认策略(0表示第一个策略,1表示第二个策略,2表示第三个策略……),url=测试地址 +# ---------- + +[Rule] +# 规则类型: +# DOMAIN-SUFFIX:匹配请求域名的后缀。如“DOMAIN-SUFFIX,example.com,DIRECT”可以匹配到“a.example.com、a.b.example.com”。 +# DOMAIN-KEYWORD:匹配请求域名的关键词。如“DOMAIN-KEYWORD,exa,DIRECT”可以匹配到“a.example.com、a.b.example.com”。 +# DOMAIN:匹配请求的完整域名。如“DOMAIN,www.example.com,DIRECT”只能匹配到“www.example.com”。 +# USER-AGENT:匹配用户代理字符串,支持使用通配符“*”。如“USER-AGENT,MicroMessenger*,DIRECT”可以匹配到“MicroMessenger Client”。 +# URL-REGEX:匹配URL正则式。如“URL-REGEX,^https?://.+/item.+,REJECT”可以匹配到“https://www.example.com/item/abc/123”。 +# IP-CIDR:匹配IPv4或IPv6地址。如“IP-CIDR,192.168.1.0/24,DIRECT,no-resolve”可以匹配到IP段“192.168.1.1~192.168.1.254”。规则加no-resolve时,IP请求会匹配到这条规则,而域名请求不会用解析出来的IP去匹配这条规则。规则不加no-resolve时,则IP请求可匹配,域名解析后的IP也可匹配。 +# IP-ASN:匹配IP地址隶属的ASN编号。如“IP-ASN,56040,DIRECT”可以匹配到微信的相关IP请求。 +# RULE-SET:匹配规则集内容。规则集的组成部分需包含规则类型。 +# DOMAIN-SET:匹配域名集内容。域名集的组成部分不包含规则类型。 +# SCRIPT:匹配脚本名称。 +# DST-PORT:匹配目标主机名的端口号。如“DST-PORT,443,DIRECT”可以匹配到443目标端口。 +# GEOIP:匹配IP数据库。如“GEOIP,CN,DIRECT”可以匹配到归属地为CN的IP地址。 +# FINAL:兜底策略。如“FINAL,PROXY”表示当其他所有规则都匹配不到时才使用FINAL规则的策略。 +# AND:逻辑规则,与规则。如“AND,((DOMAIN,www.example.com),(DST-PORT,123)),DIRECT”可以匹配到“www.example.com:123”。 +# NOT:逻辑规则,非规则。如“NOT,((DST-PORT,123)),DIRECT”可以匹配到除了“123”端口的其他所有请求。 +# OR:逻辑规则,或规则。如“OR,((DST-PORT,123),(DST-PORT,456)),DIRECT”可以匹配到“123”或“456”端口的所有请求。 +# ---------- +# 规则策略: +# PROXY:代理。通过首页正在使用的代理服务器转发流量。 +# DIRECT:直连。连接不经过任何代理服务器。 +# REJECT:拒绝。返回HTTP状态码404,没有内容。 +# REJECT-DICT:拒绝。返回HTTP状态码200,内容为空的JSON对象。 +# REJECT-ARRAY:拒绝。返回HTTP状态码200,内容为空的JSON数组。 +# REJECT-200:拒绝。返回HTTP状态码200,没有内容。 +# REJECT-IMG:拒绝。返回HTTP状态码200,内容为1像素GIF。 +# REJECT-TINYGIF:拒绝。返回HTTP状态码200,内容为1像素GIF。 +# REJECT-DROP:拒绝。丢弃IP包。 +# REJECT-NO-DROP:拒绝。返回ICMP端口不可达。 +# 除此之外,规则策略还可以选择「代理分组」、「订阅名称」、「分组」、「节点」。 +# ---------- +# 规则匹配的优先级: +# 1.规则从上到下依次匹配。 +# 2.域名规则优先于IP规则。 +# ---------- +# 关于屏蔽443端口的UDP流量的解释内容:HTTP3/QUIC协议开始流行,但是国内ISP和国际出口的UDP优先级都很低,表现很差,屏蔽掉以强制回退HTTP2/HTTP1.1。(如需启用该逻辑规则,请删除AND前面的注释符号#) +# AND,((PROTOCOL,UDP),(DST-PORT,443)),REJECT-NO-DROP +# ---------- +# 直连策略的修正规则集。 +RULE-SET,https://url/add_rule/main/direct-amend.list,DIRECT +# 代理策略的修正规则集。 +RULE-SET,https://url/add_rule/main/proxy-amend.list,PROXY +# 国外常用app单独分流:YouTube,Netflix,Disney+,HBO,Spotify,Telegram,PayPal,Twitter,Facebook,Google,TikTok,GitHub,Speedtest。 +# 国内常用app单独分流:苹果服务,微软服务,哔哩哔哩,网易云音乐,游戏平台,亚马逊,百度,豆瓣,微信,抖音,微博,知乎,小红书。 +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Apple/Apple.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/BiliBili/BiliBili.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/NetEaseMusic/NetEaseMusic.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Baidu/Baidu.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/DouBan/DouBan.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/QuantumultX/WeChat/WeChat.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/DouYin/DouYin.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Weibo/Weibo.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Zhihu/Zhihu.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/XiaoHongShu/XiaoHongShu.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/YouTube/YouTube.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Netflix/Netflix.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Disney/Disney.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/HBO/HBO.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Spotify/Spotify.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Telegram/Telegram.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/PayPal/PayPal.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Twitter/Twitter.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Facebook/Facebook.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Amazon/Amazon.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Sony/Sony.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Nintendo/Nintendo.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Epic/Epic.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/SteamCN/SteamCN.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Steam/Steam.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Game/Game.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Microsoft/Microsoft.list,DIRECT +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Google/Google.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/TikTok/TikTok.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/GitHub/GitHub.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Speedtest/Speedtest.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/QuantumultX/Global/Global.list,PROXY +RULE-SET,https://url/ios_rule_script/master/rule/QuantumultX/China/China.list,DIRECT +# 本地局域网地址的规则集。 +RULE-SET,https://url/ios_rule_script/master/rule/Shadowrocket/Lan/Lan.list,DIRECT +# 表示CN地区的IP分流走直连,GEOIP数据库用来判断IP是否属于CN地区。默认使用Shadowrocket自带的GEOIP数据库,如果您想替换其他数据库,可在 设置 - GeoLite2数据库 里添加和修改。 +GEOIP,CN,DIRECT +# 表示当其他所有规则都匹配不到时才使用FINAL规则的策略。 +FINAL,PROXY + +[Host] +# 域名指定本地值: +# example.com=1.2.3.4 +# 域名指定DNS服务器: +# example.com=server:1.2.3.4 +# wifi名称指定DNS服务器,如需指定多个DNS,可用逗号分隔: +# ssid:wifi名称=server:1.2.3.4 +localhost = 127.0.0.1 + +[URL Rewrite] +# Google搜索引擎防跳转的重写。 +^https?://(www.)?g.cn https://www.google.com 302 +^https?://(www.)?google.cn https://www.google.com 302 + +[Script] +# BoxJs安装脚本。 +Rewrite: BoxJs = type=http-request,pattern=https?:\/\/boxjs\.(com|net),script-path=https://url/scripts/master/box/chavy.boxjs.js, requires-body=true, timeout=120 + +[MITM] +# Shadowrocket打开HTTPS解密方法: +# 1.点击配置文件后面ⓘ - HTTPS解密 - 证书 - 生成新的CA证书 - 安装证书。 +# 2.手机设置 - 已下载描述文件 - 安装。 +# 3.手机设置 - 通用 - 关于本机 - 证书信任设置 - 开启对应Shadowrocket证书信任。 +# Shadowrocket仅会解密hostname指定的域名的请求,可以使用通配符。也可以使用前缀 - 排除特定主机名,如 -*.example.com。iOS系统和某些应用有严格的安全策略,仅信任某些特定的证书,对这些域名启动解密可能导致问题,如 *.apple.com,*.icloud.com。 +hostname = www.google.cn