一键快速订阅、生成 Immortalwrt/Openwrt (23.0x+) homeproxy 界面绝大多数常用配置。
仓库 –> https://github.com/thisIsIan-W/homeproxy-autogen-configuration
本 wiki 下方已给出示例配置,可酌情参考。
脚本功能
- 节省大量重复配置所需的时间;
- 解决因为误操作等原因导致的 HP 无法正常启动、使用问题;
- 仅支持
自定义路由模式
。
使用手册
操作步骤
通过使用 Secret Gist 或其它私有链接定制你的专属 参考 rules.sh 配置(请自行搜索如何在网页上创建私有 Gist 并保证隐私安全),之后回到 ImmortalWrt/OpenWrt 系统:
# 准备环境
opkg update
opkg install bash jq curl
# 执行(可重复执行此代码)
# 如直连不可用,请自行到 https://ghproxy.link 获取镜像前缀。推荐搭建个人私有镜像!
bash -c "$(curl -fsSl https://raw.githubusercontent.com/thisIsIan-W/homeproxy-autogen-configuration/refs/heads/main/generate_homeproxy_rules.sh)"
之后回到浏览器,打开无痕标签页重新登陆后台,刷新 homeproxy 界面:
- 其它需要你自定义的配置:
- 路由设置(Routing Settings) –> 手动选择默认出站
- 路由节点(Routing Rules) –> 手动选择出站
- DNS服务器(DNS Servers) –> 更改剩余DNS服务器出站
- 保存并应用 —> 完毕!
以下为 rules.sh
文件内参数说明。
参数说明
注意:
除特殊说明外,列表内部 ‘标签名’ 不可重复!!!
标签名仅支持英文大小写、下划线_、数字的单一或组合形式。
SUBSCRIPTION_URLS(可选)
机场或代理服务器订阅链接(可选)。
格式为: "URL#标签名"
。
其中 ‘标签名’ 支持中文,但需要确保脚本文件的编码为 UTF-8
.
- 脚本会在运行时自动帮你添加、订阅、生成节点到 homeproxy 中
- 若不想使用此功能,可直接删除整个
SUBSCRIPTION_URLS=(xxx)
代码块
提示:你提供的链接将仅用于调用 homeproxy 订阅功能快速生成节点信息,不会出现隐私安全问题,请放心使用!
SUBSCRIPTION_URLS=(
"https://abc.xyz/subscribe?token=123#proxy_server_01"
"https://yhb.com/subscribe?token=uhj#proxy_server_02"
# More...
)
RULESET_URLS
规则集列表。
格式为:标签名|URL(s)
生成顺序:从上到下
- direct_out(直连) 和 reject_out(广告&隐私) 为保留标签名称不可更改
- 若不想使用它们,删除整个 direct_out(xxx) 或(和) reject_out(xxx) 代码块
- 标签名 及其内 URL(s) 可以随意添加、修改、删除、重排,
但同一条规则集url在整个 RULESET_URLS(xxx) 代码块中只允许出现一次
- URL(s) 支持远程URL & 本地绝对路径、
.srs
和.json
类型文件 - 脚本会自动识别 链接/本地路径 中的文件名,并为你生成对应的规则集文件名
脚本会按照标签名
从上到下的顺序:
- 为
路由节点(Routing Nodes)
、路由规则(Routing Rules)
、DNS规则(DNS Rules)
功能生成所有以 标签名 命名的条目 - 为
路由规则(Routing Rules)
、DNS规则(DNS Rules)
中的规则集(Rule Set)
选中所有 标签名 对应的规则集 - 为
规则集(Rule Set)
功能生成所有规则集
错误写法
适用于 RULESET_URLS
以及下方的 DNS_SERVERS
.
# 错误写法一(双引号不允许另起一行书写):
RULESET_URLS=(
"google|url
"
)
# 错误写法二(不允许在url列表中使用注释符号 --> #):
RULESET_URLS=(
"google|url1
#url2
url3"
)
# 错误写法三(不允许在url列表中出现多余换行):
RULESET_URLS=(
"google|url1
url2"
)
DNS_SERVERS
DNS服务器列表,在这里配置你想要使用的 DNS服务商。
格式为:标签名|URL(s)
生成顺序:从上到下
- 标签名 的顺序为
DNS服务器(DNS Servers)
中每个条目顺序,一个标签支持多条 URLs - DNS_SERVERS(xxx) 中的 标签名 及 URL(s) 可随意增删修改、调整顺序
- 同一条 URL 可以在同一个标签内 或 多个标签内多次出现
- 最后一条
标签名
里的第一条URL
会被作为默认DNS服务器
选中- 请注意在
路由设置 - 默认出站
以及DNS 服务器 - 该服务器出站
功能中勾选相同的出站以防止出现服务无法正常启动或使用的问题
- 请注意在
- URL(s) 可填写类型: UDP, TCP, DoT, DoH, and RCode
DNS_SERVERS=(
# 会生成一条名称为 dns_server_google 的 DNS服务商
"google|url"
# 会生成3条DNS服务器条目:
# dns_server_cloudflare_1
# dns_server_cloudflare_2
# dns_server_cloudflare_3
# 且 url 会按照顺序分配给上述3个服务器
"cloudflare|
url1
url2
url3"
# More...
)
示例配置
懒得看 参数说明 的用户可直接参考下方配置。
#!/bin/bash
# 订阅链接
SUBSCRIPTION_URLS=(
# 若标签名包含中文,需要确保当前文件的编码为UTF-8,否则界面乱码
"https://airport01.subscription.url/subscribe?token=xxxx#机场01"
"https://airport02.subscription.url/subscribe?token=yyyy#机场02"
)
#
# RULESET_URLS 中的标签名作为 DNS_SERVERS 中标签名的前缀(忽略 reject_out 和 direct_out 标签)
# 那么 DNS服务器 和 DNS规则 功能中相同前缀的出站会被自动勾选
# 两者中标签的顺序不需要保持一致
#
RULESET_URLS=(
"reject_out|/etc/homeproxy/ruleset/adblockdns.srs"
"HK_proxy_server_01|
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/google.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/googlefcm.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/google-play.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/google-cn.srs
https://raw.githubusercontent.com/KaringX/karing-ruleset/sing/geo/geosite/google-trust-services@cn.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/google-gemini.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geoip/google.srs"
"SG_proxy_server_01|
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-openai.srs
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-bing.srs
https://raw.githubusercontent.com/KaringX/karing-ruleset/sing/geo/geoip/ai.srs"
"SG_proxy_server_02|
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-discord.srs
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-twitch.srs
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-amazon.srs
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-amazon@cn.srs
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-amazontrust.srs"
"US_proxy_server_02|
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-twitter.srs
https://raw.githubusercontent.com/SagerNet/sing-geosite/refs/heads/rule-set/geosite-x.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geoip/twitter.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/tiktok.srs"
"US_IPV6_proxy_server_02|
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/telegram.srs
https://raw.githubusercontent.com/DustinWin/ruleset_geodata/sing-box-ruleset/telegramip.srs"
"direct_out|/etc/homeproxy/ruleset/MyDirect.json
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geoip/cn.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/cn.srs"
)
DNS_SERVERS=(
"HK_proxy_server_01|https://1.1.1.1/dns-query"
"SG_proxy_server_01|https://1.1.1.1/dns-query"
"SG_proxy_server_01|https://1.1.1.1/dns-query"
"US_proxy_server_02|https://1.1.1.1/dns-query"
"US_IPV6_proxy_server_02|https://1.1.1.1/dns-query"
# https://8.8.8.8/dns-query 会被作为默认DNS服务器
"Default_DNS_Server|https://8.8.8.8/dns-query
rcode://refused"
)