└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Sing-box 的代理规则 2 | 3 | 这几天换 sing-box 了,真香,但是好像没好用的规则库,就自己搓了个 4 | 5 | 基本上就是 https://github.com/Loyalsoldier/v2ray-rules-dat 这个项目,只是 6 | 7 | - 构建数据添加了我日常上不去的站 8 | - 构建数据添加了我日常被错误重定向到国内的站 9 | - 格式换成了 .srs 10 | 11 | ## 用法 12 | 13 | 数据都在 https://github.com/VeroFess/proxy-rules-datas/tree/data , Release 里的可能构建脚本写的有点问题,数据不是最新的,在修好之前建议别用 14 | 15 | ## 样例 16 | ### OpenWrt 路由器 17 | 18 | 这里是双线配置, proxy-hk 是香港的,不能解锁流媒体和 chatgpt, 也没 ipv6; proxy-en 是美国的啥都能干机器, 用的是 nft + dnsmasq + tproxy 方案 19 | 20 | #### nft 配置 21 | 22 | ##### update_china_ips.sh 23 | ``` 24 | rm -rf /tmp/china_ip_list.tmp 25 | 26 | export http_proxy=http://127.0.0.1:8080 27 | export https_proxy=http://127.0.0.1:8080 28 | 29 | curl https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt -o /tmp/china_ip_list.tmp 30 | 31 | if [ $? -ne 0 ]; then 32 | echo "Error: Failed to download china_ip_list.txt" 33 | exit 1 34 | fi 35 | 36 | echo nft delete set inet transparent_proxy direct_v4 > /etc/custom/script/china.ips 37 | echo nft add set inet transparent_proxy direct_v4 { type ipv4_addr\\\; flags constant, interval\\\; } >> /etc/custom/script/china.ips 38 | echo nft add element inet transparent_proxy direct_v4 { \\ >> /etc/custom/script/china.ips 39 | 40 | for ips in `cat /tmp/china_ip_list.tmp` 41 | do 42 | echo "${ips}, \\" >> /etc/custom/script/china.ips 43 | done 44 | 45 | echo } >> /etc/custom/script/china.ips 46 | 47 | rm -rf /tmp/china_ip_list.tmp 48 | 49 | unset http_proxy 50 | unset https_proxy 51 | ``` 52 | 53 | ##### update_china_ipv6_ips.sh 54 | ``` 55 | rm -rf /tmp/china_ip_list_v6.tmp 56 | 57 | export http_proxy=http://127.0.0.1:8080 58 | export https_proxy=http://127.0.0.1:8080 59 | 60 | curl https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/china6.txt -o /tmp/china_ip_list_v6.tmp 61 | 62 | if [ $? -ne 0 ]; then 63 | echo "Error: Failed to download china_ip_list.txt" 64 | exit 1 65 | fi 66 | 67 | echo nft delete set inet transparent_proxy direct_v6 > /etc/custom/script/china-ipv6.ips 68 | echo nft add set inet transparent_proxy direct_v6 { type ipv6_addr\\\; flags constant, interval\\\; } >> /etc/custom/script/china-ipv6.ips 69 | echo nft add element inet transparent_proxy direct_v6 { \\ >> /etc/custom/script/china-ipv6.ips 70 | 71 | for ips in `cat /tmp/china_ip_list_v6.tmp` 72 | do 73 | echo "${ips}, \\" >> /etc/custom/script/china-ipv6.ips 74 | done 75 | 76 | echo } >> /etc/custom/script/china-ipv6.ips 77 | 78 | rm -rf /tmp/china_ip_list_v6.tmp 79 | 80 | unset http_proxy 81 | unset https_proxy 82 | ``` 83 | 84 | ##### update_dnsmasq_config.sh 85 | ``` 86 | export http_proxy=http://127.0.0.1:8080 87 | export https_proxy=http://127.0.0.1:8080 88 | 89 | /etc/custom/script/gfw_list_to_dnsmasq.sh --type inet --table transparent_proxy --v4set transparent_proxy_v4 --v6set transparent_proxy_v6 --dns 8.8.8.8 --port 53 --extra-domain-file /etc/custom/config/custom-proxy.list --exclude-domain-file /etc/custom/config/custom-ignore.list --url https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt --output /etc/custom/config/dnsmasq.d/transparent_proxy.hosts 90 | 91 | unset http_proxy 92 | unset https_proxy 93 | ``` 94 | 95 | ##### transparent_proxy 96 | ``` 97 | #!/bin/sh /etc/rc.common 98 | # "new(er)" style init script 99 | # Look at /lib/functions/service.sh on a running system for explanations of what other SERVICE_ 100 | # options you can use, and when you might want them. 101 | 102 | START=81 103 | 104 | start() { 105 | ip rule add fwmark 1 table 100 106 | ip route add local 0.0.0.0/0 dev lo table 100 107 | 108 | ip -f inet6 rule add fwmark 1 table 100 109 | ip -6 route add local ::/0 dev lo table 100 110 | 111 | sh -c /etc/custom/script/china.ips 112 | sh -c /etc/custom/script/china-ipv6.ips 113 | 114 | nft add set inet transparent_proxy non_public_v4 { type ipv4_addr\; flags constant, interval\; } 115 | nft add set inet transparent_proxy non_public_v6 { type ipv6_addr\; flags constant, interval\; } 116 | nft add set inet transparent_proxy proxy_server_v4 { type ipv4_addr\; flags constant\; } 117 | nft add set inet transparent_proxy proxy_server_v6 { type ipv6_addr\; flags constant\; } 118 | 119 | nft add element inet transparent_proxy non_public_v4 { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16, 127.0.0.0/8, 255.255.255.255/32, 224.0.0.0/4 } 120 | nft add element inet transparent_proxy non_public_v6 { fc00::/7, fe80::/10, ff00::/8, ::1/128, ::ffff:0:0/96 } 121 | 122 | nft add element inet transparent_proxy proxy_server_v4 { *** } 123 | nft add element inet transparent_proxy proxy_server_v6 { *** } 124 | 125 | # telegram 的 ip 段, https://core.telegram.org/resources/cidr.txt 126 | nft add element inet transparent_proxy high_priority_transparent_proxy_v4 { 91.108.56.0/22, 91.108.4.0/22, 91.108.8.0/22, 91.108.16.0/22, 91.108.12.0/22, 149.154.160.0/20, 91.105.192.0/23, 91.108.20.0/22, 185.76.151.0/24 } 127 | nft add element inet transparent_proxy high_priority_transparent_proxy_v6 { 2001:b28:f23d::/48, 2001:b28:f23f::/48, 2001:67c:4e8::/48, 2001:b28:f23c::/48, 2a0a:f280::/32 } 128 | 129 | # cloudflare warp 130 | nft add element inet transparent_proxy high_priority_transparent_proxy_v4 { 162.159.192.0/24, 162.159.193.0/24, 162.159.197.0/24 } 131 | nft add element inet transparent_proxy high_priority_transparent_proxy_v6 { 2606:4700:100::/48, 2606:4700:102::/48 } 132 | 133 | # cloudflare cloudflared 134 | # region1.v2.argotunnel.com 135 | nft add element inet transparent_proxy high_priority_transparent_proxy_v4 { 198.41.192.167, 198.41.192.67, 198.41.192.57, 198.41.192.107, 198.41.192.27, 198.41.192.7, 198.41.192.227, 198.41.192.47, 198.41.192.37, 198.41.192.77 } 136 | nft add element inet transparent_proxy high_priority_transparent_proxy_v6 { 2606:4700:a0::1, 2606:4700:a0::2, 2606:4700:a0::3, 2606:4700:a0::4, 2606:4700:a0::5, 2606:4700:a0::6, 2606:4700:a0::7, 2606:4700:a0::8, 2606:4700:a0::9, 2606:4700:a0::10 } 137 | 138 | # region2.v2.argotunnel.com 139 | nft add element inet transparent_proxy high_priority_transparent_proxy_v4 { 198.41.200.13, 198.41.200.193, 198.41.200.33, 198.41.200.233, 198.41.200.53, 198.41.200.63, 198.41.200.113, 198.41.200.73, 198.41.200.43, 198.41.200.23 } 140 | nft add element inet transparent_proxy high_priority_transparent_proxy_v6 { 2606:4700:a8::1, 2606:4700:a8::2, 2606:4700:a8::3, 2606:4700:a8::4, 2606:4700:a8::5, 2606:4700:a8::6, 2606:4700:a8::7, 2606:4700:a8::8, 2606:4700:a8::9, 2606:4700:a8::10 } 141 | 142 | nft add rule inet transparent_proxy prerouting mark 0xff counter return 143 | nft add rule inet transparent_proxy prerouting ip daddr @non_public_v4 counter return 144 | nft add rule inet transparent_proxy prerouting ip6 daddr @non_public_v6 counter return 145 | nft add rule inet transparent_proxy prerouting ip daddr @proxy_server_v4 counter return 146 | nft add rule inet transparent_proxy prerouting ip6 daddr @proxy_server_v6 counter return 147 | nft add rule inet transparent_proxy prerouting meta l4proto {tcp, udp} ip daddr @high_priority_transparent_proxy_v4 mark set 1 tproxy ip to :3348 counter accept 148 | nft add rule inet transparent_proxy prerouting meta l4proto {tcp, udp} ip6 daddr @high_priority_transparent_proxy_v6 mark set 1 tproxy ip6 to :3349 counter accept 149 | nft add rule inet transparent_proxy prerouting ip daddr @direct_v4 counter return 150 | nft add rule inet transparent_proxy prerouting ip6 daddr @direct_v6 counter return 151 | nft add rule inet transparent_proxy prerouting meta l4proto {tcp, udp} ip daddr 8.8.8.8/32 mark set 1 tproxy ip to :3346 counter accept 152 | nft add rule inet transparent_proxy prerouting meta l4proto {tcp, udp} ip daddr @transparent_proxy_v4 mark set 1 tproxy ip to :3346 counter accept 153 | nft add rule inet transparent_proxy prerouting meta l4proto {tcp, udp} ip6 daddr @transparent_proxy_v6 mark set 1 tproxy ip6 to :3347 counter accept 154 | nft add rule inet transparent_proxy prerouting counter return 155 | 156 | nft add chain inet transparent_proxy output { type route hook output priority 0 \; } 157 | nft add rule inet transparent_proxy output mark 0xff counter return 158 | nft add rule inet transparent_proxy output ip daddr @non_public_v4 counter return 159 | nft add rule inet transparent_proxy output ip6 daddr @non_public_v6 counter return 160 | nft add rule inet transparent_proxy output ip daddr @proxy_server_v4 counter return 161 | nft add rule inet transparent_proxy output ip6 daddr @proxy_server_v6 counter return 162 | nft add rule inet transparent_proxy output meta l4proto {tcp, udp} ip daddr @high_priority_transparent_proxy_v4 mark set 1 counter accept 163 | nft add rule inet transparent_proxy output meta l4proto {tcp, udp} ip6 daddr @high_priority_transparent_proxy_v6 mark set 1 counter accept 164 | nft add rule inet transparent_proxy output ip daddr @direct_v4 counter return 165 | nft add rule inet transparent_proxy output ip6 daddr @direct_v6 counter return 166 | nft add rule inet transparent_proxy output meta l4proto {tcp, udp} ip daddr 8.8.8.8/32 mark set 1 counter accept 167 | nft add rule inet transparent_proxy output meta l4proto {tcp, udp} ip daddr @transparent_proxy_v4 mark set 1 counter accept 168 | nft add rule inet transparent_proxy output meta l4proto {tcp, udp} ip6 daddr @transparent_proxy_v6 mark set 1 counter accept 169 | nft add rule inet transparent_proxy output counter return 170 | 171 | nft add table inet filter 172 | nft add chain inet filter divert { type filter hook prerouting priority -150 \; } 173 | nft add rule inet filter divert meta l4proto tcp socket transparent 1 meta mark set 1 accept 174 | } 175 | 176 | stop() { 177 | ip route del local default dev lo table 100 178 | ip rule del table 100 179 | ip -f inet6 rule del fwmark 1 table 100 180 | ip -6 route del local ::/0 dev lo table 100 181 | nft flush table inet transparent_proxy 182 | nft flush table inet filter 183 | nft delete set inet transparent_proxy direct_v4 184 | nft delete set inet transparent_proxy direct_v6 185 | nft delete set inet transparent_proxy non_public_v4 186 | nft delete set inet transparent_proxy non_public_v6 187 | nft delete set inet transparent_proxy proxy_server_v4 188 | nft delete set inet transparent_proxy proxy_server_v6 189 | } 190 | ``` 191 | 192 | ##### create_nft_set 193 | ``` 194 | #!/bin/sh /etc/rc.common 195 | # "new(er)" style init script 196 | # Look at /lib/functions/service.sh on a running system for explanations of what other SERVICE_ 197 | # options you can use, and when you might want them. 198 | 199 | START=20 200 | 201 | start() { 202 | nft add table inet transparent_proxy 203 | nft add chain inet transparent_proxy prerouting { type filter hook prerouting priority -50 \; } 204 | nft add set inet transparent_proxy transparent_proxy_v4 { type ipv4_addr\; flags interval\; } 205 | nft add set inet transparent_proxy transparent_proxy_v6 { type ipv6_addr\; flags interval\; } 206 | nft add set inet transparent_proxy high_priority_transparent_proxy_v4 { type ipv4_addr\; flags interval\; } 207 | nft add set inet transparent_proxy high_priority_transparent_proxy_v6 { type ipv6_addr\; flags interval\; } 208 | } 209 | 210 | stop() {} 211 | ``` 212 | 213 | 214 | #### sing-box 配置 215 | ``` 216 | { 217 | "log": { 218 | "disabled": true, 219 | "level": "debug", 220 | "timestamp": true 221 | }, 222 | "dns": { 223 | "servers": [ 224 | { 225 | "tag": "dns-backend", 226 | "address": "10.0.0.1:5354", 227 | "strategy": "prefer_ipv4", 228 | "detour": "out-bound-direct" 229 | }, 230 | { 231 | "tag": "dns-cloudflare", 232 | "address": "https://1.1.1.1/dns-query", 233 | "strategy": "prefer_ipv4", 234 | "detour": "out-bound-hk" 235 | }, 236 | { 237 | "tag": "dns-refused", 238 | "address": "rcode://name_error" 239 | } 240 | ], 241 | "rules": [ 242 | { 243 | "rule_set": [ 244 | "geosite-microsoft" 245 | ], 246 | "server": "dns-backend", 247 | "disable_cache": true 248 | }, 249 | { 250 | "rule_set": [ 251 | "geosite-steam-cn" 252 | ], 253 | "server": "dns-backend", 254 | "disable_cache": true 255 | }, 256 | { 257 | "rule_set": [ 258 | "geosite-ads" 259 | ], 260 | "server": "dns-refused" 261 | }, 262 | { 263 | "rule_set": [ 264 | "geosite-steam" 265 | ], 266 | "server": "dns-cloudflare" 267 | }, 268 | { 269 | "rule_set": [ 270 | "geoip-cn", 271 | "geosite-cn", 272 | "geosite-china-list" 273 | ], 274 | "server": "dns-backend", 275 | "disable_cache": true 276 | } 277 | ], 278 | "final": "dns-cloudflare", 279 | "strategy": "prefer_ipv4", 280 | "disable_cache": true, 281 | "disable_expire": false, 282 | "independent_cache": false, 283 | "reverse_mapping": false 284 | }, 285 | "ntp": { 286 | "enabled": true, 287 | "server": "10.0.0.1", 288 | "server_port": 123, 289 | "interval": "30m" 290 | }, 291 | "inbounds": [ 292 | { 293 | "type": "socks", 294 | "listen": "0.0.0.0", 295 | "listen_port": 1080, 296 | "sniff": true, 297 | "sniff_override_destination": true, 298 | "sniff_timeout": "50ms", 299 | "domain_strategy": "prefer_ipv4", 300 | "udp_disable_domain_unmapping": true, 301 | "tcp_fast_open": true, 302 | "tcp_multi_path": true, 303 | "udp_fragment": true 304 | }, 305 | { 306 | "type": "http", 307 | "listen": "0.0.0.0", 308 | "listen_port": 8080, 309 | "sniff": true, 310 | "sniff_override_destination": true, 311 | "sniff_timeout": "50ms", 312 | "domain_strategy": "prefer_ipv4", 313 | "udp_disable_domain_unmapping": true, 314 | "tcp_fast_open": true, 315 | "tcp_multi_path": true, 316 | "udp_fragment": true 317 | }, 318 | { 319 | "type": "tproxy", 320 | "tag": "inbound-tproxy-ipv4", 321 | "listen": "0.0.0.0", 322 | "listen_port": 3346, 323 | "sniff": true, 324 | "sniff_override_destination": true, 325 | "sniff_timeout": "50ms", 326 | "udp_disable_domain_unmapping": true, 327 | "tcp_fast_open": true, 328 | "tcp_multi_path": true, 329 | "udp_fragment": true 330 | }, 331 | { 332 | "type": "tproxy", 333 | "tag": "inbound-tproxy-ipv6", 334 | "listen": "::", 335 | "listen_port": 3347, 336 | "sniff": true, 337 | "sniff_override_destination": true, 338 | "sniff_timeout": "50ms", 339 | "udp_disable_domain_unmapping": true, 340 | "tcp_fast_open": true, 341 | "tcp_multi_path": true, 342 | "udp_fragment": true 343 | }, 344 | { 345 | "type": "tproxy", 346 | "tag": "inbound-tproxy-ipv4-no-sniff", 347 | "listen": "0.0.0.0", 348 | "listen_port": 3348, 349 | "sniff": false, 350 | "sniff_override_destination": false, 351 | "udp_disable_domain_unmapping": true, 352 | "tcp_fast_open": true, 353 | "tcp_multi_path": true, 354 | "udp_fragment": true 355 | }, 356 | { 357 | "type": "tproxy", 358 | "tag": "inbound-tproxy-ipv6-no-sniff", 359 | "listen": "::", 360 | "listen_port": 3349, 361 | "sniff": false, 362 | "sniff_override_destination": false, 363 | "udp_disable_domain_unmapping": true, 364 | "tcp_fast_open": true, 365 | "tcp_multi_path": true, 366 | "udp_fragment": true 367 | } 368 | ], 369 | "outbounds": [ 370 | { 371 | "type": "direct", 372 | "tag": "out-bound-direct", 373 | "routing_mark": 255 374 | }, 375 | { 376 | "type": "block", 377 | "tag": "out-bound-block" 378 | }, 379 | { 380 | "type": "dns", 381 | "tag": "out-bound-dns" 382 | }, 383 | { 384 | "tag": "out-bound-hk", 385 | }, 386 | { 387 | "tag": "out-bound-en", 388 | }, 389 | { 390 | "type": "selector", 391 | "tag": "out-bound-common-balanced", 392 | "outbounds": [ 393 | "out-bound-hk", 394 | "out-bound-en" 395 | ], 396 | "default": "out-bound-hk", 397 | "interrupt_exist_connections": false 398 | } 399 | ], 400 | "route": { 401 | "rules": [ 402 | { 403 | "ip_is_private": true, 404 | "outbound": "out-bound-direct" 405 | }, 406 | { 407 | "rule_set": [ 408 | "geoip-private" 409 | ], 410 | "outbound": "out-bound-direct" 411 | }, 412 | { 413 | "ip_cidr": [ 414 | "10.0.0.0/16" 415 | ], 416 | "outbound": "out-bound-direct" 417 | }, 418 | { 419 | "ip_cidr": [ 420 | "8.8.8.8" 421 | ], 422 | "outbound": "out-bound-hk" 423 | }, 424 | { 425 | "ip_cidr": [ 426 | 代理服务器 427 | ], 428 | "outbound": "out-bound-direct" 429 | }, 430 | { 431 | "protocol": "dns", 432 | "outbound": "out-bound-dns" 433 | }, 434 | { 435 | "protocol": "bittorrent", 436 | "outbound": "out-bound-direct" 437 | }, 438 | { 439 | "domain_suffix": [ 440 | "v2.argotunnel.com", 441 | "cftunnel.com", 442 | "h2.cftunnel.com", 443 | "quic.cftunnel.com" 444 | ], 445 | "outbound": "out-bound-hk" 446 | }, 447 | { 448 | "rule_set": [ 449 | "geosite-ads", 450 | "geoip-ads" 451 | ], 452 | "outbound": "out-bound-block" 453 | }, 454 | { 455 | "rule_set": [ 456 | "geosite-steam-cn" 457 | ], 458 | "outbound": "out-bound-direct" 459 | }, 460 | { 461 | "rule_set": [ 462 | "geosite-steam" 463 | ], 464 | "outbound": "out-bound-hk" 465 | }, 466 | { 467 | "domain_suffix": [ 468 | "oaistatic.com", 469 | "openai.com", 470 | "chatgpt.com" 471 | ], 472 | "outbound": "out-bound-en" 473 | }, 474 | { 475 | "rule_set": [ 476 | "geosite-openai" 477 | ], 478 | "outbound": "out-bound-en" 479 | }, 480 | { 481 | "rule_set": [ 482 | "geosite-netflix", 483 | "geoip-netflix" 484 | ], 485 | "outbound": "out-bound-en" 486 | }, 487 | { 488 | "rule_set": [ 489 | "geosite-youtube" 490 | ], 491 | "outbound": "out-bound-en" 492 | }, 493 | { 494 | "rule_set": [ 495 | "geoip-cn", 496 | "geosite-cn", 497 | "geosite-china-list" 498 | ], 499 | "outbound": "out-bound-direct" 500 | }, 501 | { 502 | "ip_cidr": [ 503 | "::/0" 504 | ], 505 | "outbound": "out-bound-en" 506 | } 507 | ], 508 | "rule_set": [ 509 | { 510 | "tag": "geoip-private", 511 | "type": "remote", 512 | "format": "binary", 513 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geoip-srs/private.srs", 514 | "download_detour": "out-bound-hk" 515 | }, 516 | { 517 | "tag": "geoip-cn", 518 | "type": "remote", 519 | "format": "binary", 520 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geoip-srs/cn.srs", 521 | "download_detour": "out-bound-hk" 522 | }, 523 | { 524 | "tag": "geosite-cn", 525 | "type": "remote", 526 | "format": "binary", 527 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-cn.srs", 528 | "download_detour": "out-bound-hk" 529 | }, 530 | { 531 | "tag": "geosite-china-list", 532 | "type": "remote", 533 | "format": "binary", 534 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-china-list.srs", 535 | "download_detour": "out-bound-hk" 536 | }, 537 | { 538 | "tag": "geosite-google", 539 | "type": "remote", 540 | "format": "binary", 541 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-google.srs", 542 | "download_detour": "out-bound-hk" 543 | }, 544 | { 545 | "tag": "geoip-google", 546 | "type": "remote", 547 | "format": "binary", 548 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geoip-srs/google.srs", 549 | "download_detour": "out-bound-hk" 550 | }, 551 | { 552 | "tag": "geoip-ads", 553 | "type": "remote", 554 | "format": "binary", 555 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geoip-srs/ad.srs", 556 | "download_detour": "out-bound-hk" 557 | }, 558 | { 559 | "tag": "geosite-ads", 560 | "type": "remote", 561 | "format": "binary", 562 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-category-ads-all.srs", 563 | "download_detour": "out-bound-hk" 564 | }, 565 | { 566 | "tag": "geosite-netflix", 567 | "type": "remote", 568 | "format": "binary", 569 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-netflix.srs", 570 | "download_detour": "out-bound-hk" 571 | }, 572 | { 573 | "tag": "geoip-netflix", 574 | "type": "remote", 575 | "format": "binary", 576 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geoip-srs/netflix.srs", 577 | "download_detour": "out-bound-hk" 578 | }, 579 | { 580 | "tag": "geosite-openai", 581 | "type": "remote", 582 | "format": "binary", 583 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-openai.srs", 584 | "download_detour": "out-bound-hk" 585 | }, 586 | { 587 | "tag": "geosite-youtube", 588 | "type": "remote", 589 | "format": "binary", 590 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-youtube.srs", 591 | "download_detour": "out-bound-hk" 592 | }, 593 | { 594 | "tag": "geosite-steam", 595 | "type": "remote", 596 | "format": "binary", 597 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-steam.srs", 598 | "download_detour": "out-bound-hk" 599 | }, 600 | { 601 | "tag": "geosite-steam-cn", 602 | "type": "remote", 603 | "format": "binary", 604 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-steam@cn.srs", 605 | "download_detour": "out-bound-hk" 606 | }, 607 | { 608 | "tag": "geosite-microsoft", 609 | "type": "remote", 610 | "format": "binary", 611 | "url": "https://raw.githubusercontent.com/VeroFess/proxy-rules-datas/data/geosite-srs/geosite-microsoft.srs", 612 | "download_detour": "out-bound-hk" 613 | } 614 | ], 615 | "final": "out-bound-hk" 616 | } 617 | } 618 | ``` --------------------------------------------------------------------------------