├── .github └── workflows │ └── merge.yml ├── ReadMe.md ├── merge.py ├── meta_merge.py ├── requirements.txt ├── sub ├── merged_proxies.yaml ├── merged_proxies_new.yaml ├── merged_warp_proxies.yaml ├── merged_warp_proxies_new.yaml ├── shadowrocket.txt └── shadowrocket_base64.txt ├── templates ├── clash_template.yaml └── clash_warp_template.yaml └── urls ├── clash_new_urls.txt ├── clash_urls.txt ├── hysteria2_urls.txt ├── hysteria_urls.txt ├── naiverproxy_urls.txt ├── sb_urls.txt ├── ss_urls.txt └── xray_urls.txt /.github/workflows/merge.yml: -------------------------------------------------------------------------------- 1 | name: Merge Script 2 | 3 | on: 4 | push: 5 | branches: 6 | - main # 替换为你的默认分支 7 | schedule: 8 | - cron: '0 0,8,18 * * *' # 每6h一次 9 | workflow_dispatch: # 触发手动事件 10 | jobs: 11 | merge: 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - name: Checkout repository 16 | uses: actions/checkout@v2 17 | 18 | - name: Set up Python 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: 3.11 # 替换为你的 Python 版本 22 | 23 | - name: Install dependencies 24 | run: pip install -r requirements.txt 25 | 26 | - name: Run merge script 27 | run: python meta_merge.py # 替换为你的 merge.py 脚本名称 28 | 29 | - name: Run shadowrocket merge script 30 | run: python merge.py # 替换为你的 merge.py 脚本名称 31 | - name: Commit Changes 32 | run: | 33 | git config core.ignorecase false 34 | git config --local user.email "vvv123456789123@gmail.com" 35 | git config --local user.name "vvv" 36 | git add . 37 | git commit -m "Updated at $(date '+%Y-%m-%d %H:%M:%S')" 38 | git push 39 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | **不含hysteria2节点** 7 | ``` 8 | https://raw.githubusercontent.com/nolevo/meta/main/sub/merged_proxies.yaml 9 | ``` 10 | **含hysteria2节点** 11 | ``` 12 | https://raw.githubusercontent.com/nolevo/meta/main/sub/merged_proxies_new.yaml 13 | ``` 14 | 15 | **通用链接 shadowrocket-nekoray** 16 | 17 | ``` 18 | https://raw.githubusercontent.com/nolevo/meta/main/sub/shadowrocket.txt 19 | ``` 20 | 21 | 22 | ## 致谢 23 | [Alvin9999](https://github.com/Alvin9999/pac2/tree/master) 24 | 25 | -------------------------------------------------------------------------------- /merge.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import json 3 | import urllib.request 4 | import yaml 5 | import codecs 6 | import logging 7 | 8 | # 提取节点 9 | def process_urls(url_file, processor): 10 | try: 11 | with open(url_file, 'r') as file: 12 | urls = file.read().splitlines() 13 | 14 | for index, url in enumerate(urls): 15 | try: 16 | response = urllib.request.urlopen(url) 17 | data = response.read().decode('utf-8') 18 | processor(data, index) 19 | except Exception as e: 20 | logging.error(f"Error processing URL {url}: {e}") 21 | except Exception as e: 22 | logging.error(f"Error reading file {url_file}: {e}") 23 | #提取clash节点 24 | def process_clash(data, index): 25 | # 解析YAML格式的内容 26 | content = yaml.safe_load(data) 27 | 28 | # 提取proxies部分并合并到merged_proxies中 29 | proxies = content.get('proxies', []) 30 | 31 | for proxy in proxies: 32 | # 如果类型是vless 33 | if proxy['type'] == 'vless' : 34 | server = proxy.get("server", "") 35 | port = int(proxy.get("port", 443)) 36 | udp = proxy.get("udp", "") 37 | uuid = proxy.get("uuid", "") 38 | network = proxy.get("network", "") 39 | tls = int(proxy.get("tls", 0)) 40 | xudp = proxy.get("xudp", "") 41 | sni = proxy.get("servername", "") 42 | flow = proxy.get("flow", "") 43 | publicKey = proxy.get('reality-opts', {}).get('public-key', '') 44 | short_id = proxy.get('reality-opts', {}).get('short-id', '') 45 | fp = proxy.get("client-fingerprint", "") 46 | insecure = int(proxy.get("skip-cert-verify", 0)) 47 | grpc_serviceName = proxy.get('grpc-opts', {}).get('grpc-service-name', '') 48 | 49 | ws_path = proxy.get('ws-opts', {}).get('path', '') 50 | ws_headers_host = proxy.get('ws-opts', {}).get('headers', {}).get('Host', '') 51 | if tls == 0: 52 | security = 'none' 53 | elif tls == 1 and publicKey != '': 54 | security = 'reality' 55 | else: 56 | security = 'tls' 57 | vless_meta = f"vless://{uuid}@{server}:{port}?security={security}&allowInsecure{insecure}&flow={flow}&type={network}&fp={fp}&pbk={publicKey}&sid={short_id}&sni={sni}&serviceName={grpc_serviceName}&path={ws_path}&host={ws_headers_host}#vless_meta_{index}" 58 | 59 | merged_proxies.append(vless_meta) 60 | 61 | if proxy['type'] == 'vmess' : 62 | server = proxy.get("server", "") 63 | port = int(proxy.get("port", 443)) 64 | uuid = proxy.get("uuid", "") 65 | #cipher = proxy.get("cipher", "") 66 | alterId = proxy.get("alterId", "") 67 | network = proxy.get("network", "") 68 | tls = int(proxy.get("tls", 0)) 69 | if tls == 0: 70 | security = "none" 71 | elif tls == 1: 72 | security = "tls" 73 | sni = proxy.get("servername", "") 74 | ws_path = proxy.get('ws-opts', {}).get('path', '') 75 | ws_headers_host = proxy.get('ws-opts', {}).get('headers', {}).get('Host', '') 76 | 77 | vmess_meta = f"vmess://{uuid}@{server}:{port}?security={security}&allowInsecure{insecure}&type={network}&fp={fp}&sni={sni}&path={ws_path}&host={ws_headers_host}#vmess_meta_{index}" 78 | 79 | merged_proxies.append(vmess_meta) 80 | 81 | elif proxy['type'] == 'tuic': 82 | server = proxy.get("server", "") 83 | port = int(proxy.get("port", 443)) 84 | uuid = proxy.get("uuid", "") 85 | password = proxy.get("password", "") 86 | sni = proxy.get("sni", "") 87 | insecure = int(proxy.get("skip-cert-verify", 0)) 88 | udp_relay_mode = proxy.get("udp-relay-mode", "naive") 89 | congestion = proxy.get("congestion-controller", "bbr") 90 | alpn = proxy.get("alpn", [])[0] if proxy.get("alpn") and len(proxy["alpn"]) > 0 else None 91 | #tuic_meta_neko = f"tuic://{server}:{port}?uuid={uuid}&version=5&password={password}&insecure={insecure}&alpn={alpn}&mode={udp_relay_mode}" 92 | tuic_meta = f"tuic://{uuid}:{password}@{server}:{port}?sni={sni}&congestion_control={congestion}&udp_relay_mode={udp_relay_mode}&alpn={alpn}&allow_insecure={insecure}" 93 | merged_proxies.append(tuic_meta) 94 | 95 | elif proxy['type'] == "hysteria2": 96 | server = proxy.get("server", "") 97 | port = int(proxy.get("port", 443)) 98 | auth = proxy.get("password", "") 99 | obfs = proxy.get("obfs", "") 100 | obfs_password = proxy.get("obfs-password","") 101 | sni = proxy.get("sni", "") 102 | insecure = int(proxy.get("skip-cert-verify", 0)) 103 | hy2_meta = f"hysteria2://{auth}@{server}:{port}?insecure={insecure}&sni={sni}&obfs={obfs}&obfs-password={obfs_password}#hysteria2_meta_{index}" 104 | merged_proxies.append(hy2_meta) 105 | 106 | elif proxy['type'] == 'hysteria': 107 | server = proxy.get("server", "") 108 | port = int(proxy.get("port", 443)) 109 | ports = proxy.get("port", "") 110 | protocol = proxy.get("protocol", "udp") 111 | up_mbps = 50 112 | down_mbps = 80 113 | alpn = proxy.get("alpn", [])[0] if proxy.get("alpn") and len(proxy["alpn"]) > 0 else None 114 | obfs = proxy.get("obfs", "") 115 | insecure = int(proxy.get("skip-cert-verify", 0)) 116 | sni = proxy.get("sni", "") 117 | fast_open = int(proxy.get("fast_open", 1)) 118 | auth = proxy.get("auth-str", "") 119 | # 生成URL 120 | hysteria_meta = f"hysteria://{server}:{port}?peer={sni}&auth={auth}&insecure={insecure}&upmbps={up_mbps}&downmbps={down_mbps}&alpn={alpn}&mport={ports}&obfs={obfs}&protocol={protocol}&fastopen={fast_open}#hysteria_meta_{index}" 121 | merged_proxies.append(hysteria_meta) 122 | 123 | elif proxy['type'] == 'ssr': 124 | server = proxy.get("server", "") 125 | port = int(proxy.get("port", 443)) 126 | password = proxy.get("password", "") 127 | password = base64.b64encode(password.encode()).decode() 128 | cipher = proxy.get("cipher", "") 129 | obfs = proxy.get("obfs", "") 130 | protocol = proxy.get("protocol", "") 131 | protocol_param = proxy.get("protocol-param", "") 132 | protocol_param = base64.b64encode(protocol_param.encode()).decode() 133 | obfs_param = proxy.get("obfs-param", "") 134 | obfs_param = base64.b64encode(obfs_param.encode()).decode() 135 | # 生成URL 136 | ssr_source=f"{server}:{port}:{protocol}:{cipher}:{obfs}:{password}/?obfsparam={obfs_param}&protoparam={protocol_param}&remarks=ssr_meta_{index}&protoparam{protocol_param}=&obfsparam={obfs_param}" 137 | 138 | ssr_source=base64.b64encode(ssr_source.encode()).decode() 139 | ssr_meta = f"ssr://{ssr_source}" 140 | merged_proxies.append(ssr_meta) 141 | #目前仅支持最原始版本ss,无插件支持 142 | elif proxy['type'] == 'ss': 143 | server = proxy.get("server", "") 144 | port = int(proxy.get("port", 443)) 145 | password = proxy.get("password", "") 146 | cipher = proxy.get("cipher", "") 147 | # 生成URL 148 | ss_source=f"{cipher}:{password}@{server}:{port}" 149 | 150 | ss_source=base64.b64encode(ss_source.encode()).decode() 151 | ss_meta = f"ss://{ss_source}" 152 | merged_proxies.append(ss_meta) 153 | def process_naive(data, index): 154 | try: 155 | json_data = json.loads(data) 156 | 157 | proxy_str = json_data["proxy"] 158 | #proxy_str = proxy_str.replace("https://", "") 159 | naiveproxy = base64.b64encode(proxy_str.encode()).decode() 160 | merged_proxies.append(naiveproxy) 161 | 162 | 163 | except Exception as e: 164 | logging.error(f"Error processing naive data for index {index}: {e}") 165 | #处理sing-box节点,待办 166 | def process_sb(data, index): 167 | try: 168 | json_data = json.loads(data) 169 | # 处理 shadowtls 数据 170 | server = json_data["outbounds"][1].get("server", "") 171 | server_port = json_data["outbounds"][1].get("server_port", "") 172 | method = json_data["outbounds"][0].get("method", "") 173 | password = json_data["outbounds"][0].get("password", "") 174 | version = int(json_data["outbounds"][1].get("version", 0)) 175 | host = json_data["outbounds"][1]["tls"].get("server_name", "") 176 | shadowtls_password = json_data["outbounds"][1].get("password", "") 177 | 178 | ss = f"{method}:{password}@{server}:{server_port}" 179 | shadowtls = f'{{"version": "{version}", "host": "{host}","password":{shadowtls_password}}}' 180 | shadowtls_proxy = "ss://"+base64.b64encode(ss.encode()).decode()+"?shadow-tls="+base64.b64encode(shadowtls.encode()).decode()+f"#shadowtls{index}" 181 | 182 | merged_proxies.append(shadowtls_proxy) 183 | 184 | except Exception as e: 185 | logging.error(f"Error processing shadowtls data for index {index}: {e}") 186 | #hysteria 187 | def process_hysteria(data, index): 188 | try: 189 | json_data = json.loads(data) 190 | # 处理 hysteria 数据 191 | # 提取字段值 192 | server = json_data.get("server", "") 193 | protocol = json_data.get("protocol", "") 194 | up_mbps = json_data.get("up_mbps", "") 195 | down_mbps = json_data.get("down_mbps", "") 196 | alpn = json_data.get("alpn", "") 197 | obfs = json_data.get("obfs", "") 198 | insecure = int(json_data.get("insecure", 0)) 199 | server_name = json_data.get("server_name", "") 200 | fast_open = int(json_data.get("fast_open", 0)) 201 | auth = json_data.get("auth_str", "") 202 | # 生成URL 203 | hysteria = f"hysteria://{server}?peer={server_name}&auth={auth}&insecure={insecure}&upmbps={up_mbps}&downmbps={down_mbps}&alpn={alpn}&obfs={obfs}&protocol={protocol}&fastopen={fast_open}#hysteria_{index}" 204 | merged_proxies.append(hysteria) 205 | 206 | 207 | except Exception as e: 208 | logging.error(f"Error processing hysteria data for index {index}: {e}") 209 | # 处理hysteria2 210 | def process_hysteria2(data, index): 211 | try: 212 | json_data = json.loads(data) 213 | # 处理 hysteria2 数据 214 | # 提取字段值 215 | server = json_data["server"] 216 | insecure = int(json_data["tls"]["insecure"]) 217 | sni = json_data["tls"]["sni"] 218 | auth = json_data["auth"] 219 | # 生成URL 220 | hysteria2 = f"hysteria2://{auth}@{server}?insecure={insecure}&sni={sni}#hysteria2_{index}" 221 | 222 | merged_proxies.append(hysteria2) 223 | except Exception as e: 224 | logging.error(f"Error processing hysteria2 data for index {index}: {e}") 225 | 226 | #处理xray 227 | def process_xray(data, index): 228 | try: 229 | json_data = json.loads(data) 230 | # 处理 xray 数据 231 | protocol = json_data["outbounds"][0].get("protocol") 232 | 233 | if protocol == "vless": 234 | vnext = json_data["outbounds"][0]["settings"]["vnext"] 235 | 236 | if vnext: 237 | server = vnext[0].get("address", "") 238 | port = vnext[0].get("port", "") 239 | users = vnext[0]["users"] 240 | 241 | if users: 242 | user = users[0] 243 | uuid = user.get("id", "") 244 | flow = user.get("flow", "") 245 | 246 | stream_settings = json_data["outbounds"][0].get("streamSettings", {}) 247 | network = stream_settings.get("network", "") 248 | security = stream_settings.get("security", "") 249 | reality_settings = stream_settings.get("realitySettings", {}) 250 | 251 | publicKey = reality_settings.get("publicKey", "") 252 | short_id = reality_settings.get("shortId", "") 253 | sni = reality_settings.get("serverName", "") 254 | #tls 255 | tls_settings = stream_settings.get("tlsSettings", {}) 256 | sni = tls_settings.get("serverName", sni) 257 | insecure = int(tls_settings.get("allowInsecure", 0)) 258 | 259 | fp = reality_settings.get("fingerprint", "") 260 | fp = tls_settings.get("fingerprint", fp) 261 | spx = reality_settings.get("spiderX", "") 262 | 263 | grpc_settings = stream_settings.get("grpcSettings", {}) 264 | grpc_serviceName = grpc_settings.get("serviceName", "") 265 | 266 | ws_settings = stream_settings.get("wsSettings", {}) 267 | ws_path = ws_settings.get("path", "") 268 | ws_headers_host = ws_settings.get("headers", {}).get("Host", "") 269 | 270 | xray_proxy = f"vless://{uuid}@{server}:{port}?security={security}&allowInsecure={insecure}&flow={flow}&type={network}&fp={fp}&pbk={publicKey}&sid={short_id}&sni={sni}&serviceName={grpc_serviceName}&path={ws_path}&host={ws_headers_host}#vless_{index}" 271 | 272 | # 将当前proxy字典添加到所有proxies列表中 273 | merged_proxies.append(xray_proxy) 274 | # 不支持插件 275 | if protocol == "shadowsocks": 276 | server = json_data["outbounds"][0]["settings"]["servers"]["address"] 277 | method = json_data["outbounds"][0]["settings"]["servers"]["method"] 278 | password = json_data["outbounds"][0]["settings"]["servers"]["password"] 279 | port = json_data["outbounds"][0]["settings"]["servers"]["port"] 280 | # 生成URL 281 | ss_source=f"{method}:{password}@{server}:{port}" 282 | ss_source=base64.b64encode(ss_source.encode()).decode() 283 | xray_proxy = f"ss://{ss_source}" 284 | 285 | # 将当前proxy字典添加到所有proxies列表中 286 | merged_proxies.append(xray_proxy) 287 | except Exception as e: 288 | logging.error(f"Error processing xray data for index {index}: {e}") 289 | 290 | # 定义一个空列表用于存储合并后的代理配置 291 | merged_proxies = [] 292 | 293 | # 处理 clash URLs 294 | process_urls('./urls/clash_new_urls.txt', process_clash) 295 | 296 | # 处理 shadowtls URLs 297 | process_urls('./urls/sb_urls.txt', process_sb) 298 | 299 | # 处理 naive URLs 300 | process_urls('./urls/naiverproxy_urls.txt', process_naive) 301 | 302 | # 处理 hysteria URLs 303 | process_urls('./urls/hysteria_urls.txt', process_hysteria) 304 | 305 | # 处理 hysteria2 URLs 306 | process_urls('./urls/hysteria2_urls.txt', process_hysteria2) 307 | 308 | # 处理 xray URLs 309 | process_urls('./urls/xray_urls.txt', process_xray) 310 | 311 | # 将结果写入文件 312 | try: 313 | with open("./sub/shadowrocket.txt", "w") as file: 314 | for proxy in merged_proxies: 315 | file.write(proxy + "\n") 316 | except Exception as e: 317 | print(f"Error writing to file: {e}") 318 | 319 | try: 320 | with open("./sub/shadowrocket.txt", "r") as file: 321 | content = file.read() 322 | encoded_content = base64.b64encode(content.encode("utf-8")).decode("utf-8") 323 | 324 | with open("./sub/shadowrocket_base64.txt", "w") as encoded_file: 325 | encoded_file.write(encoded_content) 326 | 327 | print("Content successfully encoded and written to file.") 328 | except Exception as e: 329 | print(f"Error encoding file content: {e}") 330 | 331 | -------------------------------------------------------------------------------- /meta_merge.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | import json 3 | import urllib.request 4 | import logging 5 | 6 | # 提取节点 7 | def process_urls(url_file, processor): 8 | try: 9 | with open(url_file, 'r') as file: 10 | urls = file.read().splitlines() 11 | 12 | for index, url in enumerate(urls): 13 | try: 14 | response = urllib.request.urlopen(url) 15 | data = response.read().decode('utf-8') 16 | processor(data, index) 17 | except Exception as e: 18 | logging.error(f"Error processing URL {url}: {e}") 19 | except Exception as e: 20 | logging.error(f"Error reading file {url_file}: {e}") 21 | #提取clash节点 22 | def process_clash(data, index): 23 | content = yaml.safe_load(data) 24 | proxies = content.get('proxies', []) 25 | for i, proxy in enumerate(proxies): 26 | proxy['name'] = f"{proxy['type']}_{index}{i+1}" 27 | merged_proxies.extend(proxies) 28 | # 处理sb,待办 29 | def process_sb(data, index): 30 | try: 31 | json_data = json.loads(data) 32 | # 处理 shadowtls 数据 33 | 34 | # 提取所需字段 35 | method = json_data["outbounds"][0]["method"] 36 | password = json_data["outbounds"][0]["password"] 37 | server = json_data["outbounds"][1]["server"] 38 | server_port = json_data["outbounds"][1]["server_port"] 39 | server_name = json_data["outbounds"][1]["tls"]["server_name"] 40 | shadowtls_password = json_data["outbounds"][1]["password"] 41 | version = json_data["outbounds"][1]["version"] 42 | name = f"shadowtls_{index}" 43 | # 创建当前网址的proxy字典 44 | proxy = { 45 | "name": name, 46 | "type": "ss", 47 | "server": server, 48 | "port": server_port, 49 | "cipher": method, 50 | "password": password, 51 | "plugin": "shadow-tls", 52 | "client-fingerprint": "chrome", 53 | "plugin-opts": { 54 | "host": server_name, 55 | "password": shadowtls_password, 56 | "version": int(version) 57 | } 58 | } 59 | 60 | # 将当前proxy字典添加到所有proxies列表中 61 | merged_proxies.append(proxy) 62 | 63 | except Exception as e: 64 | logging.error(f"Error processing shadowtls data for index {index}: {e}") 65 | 66 | def process_hysteria(data, index): 67 | try: 68 | json_data = json.loads(data) 69 | # 处理 hysteria 数据 70 | # 提取所需字段 71 | auth = json_data["auth_str"] 72 | server_ports = json_data["server"] 73 | server_ports_slt = server_ports.split(":") 74 | server = server_ports_slt[0] 75 | ports = server_ports_slt[1] 76 | ports_slt = ports.split(",") 77 | server_port = int(ports_slt[0]) 78 | if len(ports_slt) > 1: 79 | mport = ports_slt[1] 80 | else: 81 | mport = server_port 82 | fast_open = json_data["fast_open"] 83 | insecure = json_data["insecure"] 84 | server_name = json_data["server_name"] 85 | alpn = json_data["alpn"] 86 | protocol = json_data["protocol"] 87 | name = f"hysteria_{index}" 88 | 89 | # 创建当前网址的proxy字典 90 | proxy = { 91 | "name": name, 92 | "type": "hysteria", 93 | "server": server, 94 | "port": server_port, 95 | "ports": mport, 96 | "auth_str": auth, 97 | "up": 80, 98 | "down": 100, 99 | "fast-open": fast_open, 100 | "protocol": protocol, 101 | "sni": server_name, 102 | "skip-cert-verify": insecure, 103 | "alpn": [alpn] 104 | } 105 | 106 | # 将当前proxy字典添加到所有proxies列表中 107 | merged_proxies.append(proxy) 108 | 109 | except Exception as e: 110 | logging.error(f"Error processing hysteria data for index {index}: {e}") 111 | # 处理hysteria2 112 | def process_hysteria2(data, index): 113 | try: 114 | json_data = json.loads(data) 115 | # 处理 hysteria2 数据 116 | # 提取所需字段 117 | auth = json_data["auth"] 118 | server_ports = json_data["server"] 119 | server_ports_slt = server_ports.split(":") 120 | server = server_ports_slt[0] 121 | ports = server_ports_slt[1] 122 | ports_slt = ports.split(",") 123 | server_port = int(ports_slt[0]) 124 | fast_open = json_data["fastOpen"] 125 | insecure = json_data["tls"]["insecure"] 126 | sni = json_data["tls"]["sni"] 127 | name = f"hysteria2_{index}" 128 | 129 | # 创建当前网址的proxy字典 130 | proxy = { 131 | "name": name, 132 | "type": "hysteria2", 133 | "server": server, 134 | "port": server_port, 135 | "password": auth, 136 | "fast-open": fast_open, 137 | "sni": sni, 138 | "skip-cert-verify": insecure 139 | } 140 | 141 | # 将当前proxy字典添加到所有proxies列表中 142 | merged_proxies.append(proxy) 143 | 144 | except Exception as e: 145 | logging.error(f"Error processing hysteria2 data for index {index}: {e}") 146 | 147 | #处理xray 148 | def process_xray(data, index): 149 | try: 150 | json_data = json.loads(data) 151 | # 处理 xray 数据 152 | protocol = json_data["outbounds"][0]["protocol"] 153 | #vless操作 154 | if protocol == "vless": 155 | # 提取所需字段 156 | server = json_data["outbounds"][0]["settings"]["vnext"][0]["address"] 157 | port = json_data["outbounds"][0]["settings"]["vnext"][0]["port"] 158 | uuid = json_data["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] 159 | istls = True 160 | flow = json_data["outbounds"][0]["settings"]["vnext"][0]["users"][0]["flow"] 161 | # 传输方式 162 | network = json_data["outbounds"][0]["streamSettings"]["network"] 163 | publicKey = json_data["outbounds"][0]["streamSettings"]["realitySettings"]["publicKey"] 164 | shortId = json_data["outbounds"][0]["streamSettings"]["realitySettings"]["shortId"] 165 | serverName = json_data["outbounds"][0]["streamSettings"]["realitySettings"]["serverName"] 166 | fingerprint = json_data["outbounds"][0]["streamSettings"]["realitySettings"]["fingerprint"] 167 | # udp转发 168 | isudp = True 169 | name = f"reality_{index}" 170 | 171 | # 根据network判断tcp 172 | if network == "tcp": 173 | proxy = { 174 | "name": name, 175 | "type": protocol, 176 | "server": server, 177 | "port": port, 178 | "uuid": uuid, 179 | "network": network, 180 | "tls": istls, 181 | "udp": isudp, 182 | "flow": flow, 183 | "client-fingerprint": fingerprint, 184 | "servername": serverName, 185 | "reality-opts":{ 186 | "public-key": publicKey, 187 | "short-id": shortId} 188 | } 189 | 190 | # 根据network判断grpc 191 | elif network == "grpc": 192 | serviceName = json_data["outbounds"][0]["streamSettings"]["grpcSettings"]["serviceName"] 193 | 194 | # 创建当前网址的proxy字典 195 | proxy = { 196 | "name": name, 197 | "type": protocol, 198 | "server": server, 199 | "port": port, 200 | "uuid": uuid, 201 | "network": network, 202 | "tls": istls, 203 | "udp": isudp, 204 | "flow": flow, 205 | "client-fingerprint": fingerprint, 206 | "servername": serverName, 207 | "grpc-opts":{ 208 | "grpc-service-name": serviceName 209 | }, 210 | "reality-opts":{ 211 | "public-key": publicKey, 212 | "short-id": shortId} 213 | } 214 | 215 | # 将当前proxy字典添加到所有proxies列表中 216 | merged_proxies.append(proxy) 217 | except Exception as e: 218 | logging.error(f"Error processing xray data for index {index}: {e}") 219 | 220 | def update_proxy_groups(config_data, merged_proxies): 221 | for group in config_data['proxy-groups']: 222 | if group['name'] in ['自动选择', '节点选择']: 223 | group['proxies'].extend(proxy['name'] for proxy in merged_proxies) 224 | 225 | def update_warp_proxy_groups(config_warp_data, merged_proxies): 226 | for group in config_warp_data['proxy-groups']: 227 | if group['name'] in ['自动选择', '手动选择', '负载均衡']: 228 | group['proxies'].extend(proxy['name'] for proxy in merged_proxies) 229 | # 定义一个空列表用于存储合并后的代理配置 230 | merged_proxies = [] 231 | 232 | # 处理 clash URLs 233 | process_urls('./urls/clash_new_urls.txt', process_clash) 234 | 235 | # 处理 shadowtls URLs 236 | process_urls('./urls/sb_urls.txt', process_sb) 237 | 238 | # 处理 hysteria URLs 239 | process_urls('./urls/hysteria_urls.txt', process_hysteria) 240 | 241 | # 处理 hysteria2 URLs 242 | process_urls('./urls/hysteria2_urls.txt', process_hysteria2) 243 | 244 | # 处理 xray URLs 245 | process_urls('./urls/xray_urls.txt', process_xray) 246 | 247 | # 读取普通的配置文件内容 248 | with open('./templates/clash_template.yaml', 'r', encoding='utf-8') as file: 249 | config_data = yaml.safe_load(file) 250 | 251 | # 读取warp配置文件内容 252 | with open('./templates/clash_warp_template.yaml', 'r', encoding='utf-8') as file: 253 | config_warp_data = yaml.safe_load(file) 254 | 255 | # 添加合并后的代理到proxies部分 256 | config_data['proxies'].extend(merged_proxies) 257 | config_warp_data['proxies'].extend(merged_proxies) 258 | 259 | # 更新自动选择和节点选择的proxies的name部分 260 | update_proxy_groups(config_data, merged_proxies) 261 | update_warp_proxy_groups(config_warp_data, merged_proxies) 262 | 263 | # 将更新后的数据写入到一个YAML文件中,并指定编码格式为UTF-8 264 | with open('./sub/merged_proxies_new.yaml', 'w', encoding='utf-8') as file: 265 | yaml.dump(config_data, file, sort_keys=False, allow_unicode=True) 266 | 267 | with open('./sub/merged_warp_proxies_new.yaml', 'w', encoding='utf-8') as file: 268 | yaml.dump(config_warp_data, file, sort_keys=False, allow_unicode=True) 269 | 270 | print("聚合完成") 271 | 272 | # 处理其他 273 | merged_proxies = [] 274 | 275 | # 处理 clash URLs 276 | process_urls('./urls/clash_urls.txt', process_clash) 277 | 278 | # 处理 shadowtls URLs 279 | process_urls('./urls/sb_urls.txt', process_sb) 280 | 281 | # 处理 hysteria URLs 282 | process_urls('./urls/hysteria_urls.txt', process_hysteria) 283 | 284 | # 处理 hysteria2 URLs 285 | #process_urls('./urls/hysteria2_urls.txt', process_hysteria2) 286 | 287 | # 处理 xray URLs 288 | process_urls('./urls/xray_urls.txt', process_xray) 289 | 290 | # 读取普通的配置文件内容 291 | with open('./templates/clash_template.yaml', 'r', encoding='utf-8') as file: 292 | config_data = yaml.safe_load(file) 293 | 294 | # 读取warp配置文件内容 295 | with open('./templates/clash_warp_template.yaml', 'r', encoding='utf-8') as file: 296 | config_warp_data = yaml.safe_load(file) 297 | 298 | # 添加合并后的代理到proxies部分 299 | config_data['proxies'].extend(merged_proxies) 300 | config_warp_data['proxies'].extend(merged_proxies) 301 | 302 | # 更新自动选择和节点选择的proxies的name部分 303 | update_proxy_groups(config_data, merged_proxies) 304 | update_warp_proxy_groups(config_warp_data, merged_proxies) 305 | 306 | # 将更新后的数据写入到一个YAML文件中,并指定编码格式为UTF-8 307 | with open('./sub/merged_proxies.yaml', 'w', encoding='utf-8') as file: 308 | yaml.dump(config_data, file, sort_keys=False, allow_unicode=True) 309 | 310 | with open('./sub/merged_warp_proxies.yaml', 'w', encoding='utf-8') as file: 311 | yaml.dump(config_warp_data, file, sort_keys=False, allow_unicode=True) 312 | 313 | print("聚合完成") 314 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | PyYAML==6.0.1 2 | -------------------------------------------------------------------------------- /sub/merged_proxies.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | allow-lan: true 3 | mode: rule 4 | log-level: info 5 | unified-delay: true 6 | global-client-fingerprint: chrome 7 | dns: 8 | enable: true 9 | listen: :53 10 | ipv6: true 11 | enhanced-mode: fake-ip 12 | fake-ip-range: 198.18.0.1/16 13 | default-nameserver: 14 | - 223.5.5.5 15 | - 8.8.8.8 16 | nameserver: 17 | - https://dns.alidns.com/dns-query 18 | - https://doh.pub/dns-query 19 | fallback: 20 | - https://1.0.0.1/dns-query 21 | - tls://dns.google 22 | fallback-filter: 23 | geoip: true 24 | geoip-code: CN 25 | ipcidr: 26 | - 240.0.0.0/4 27 | proxies: 28 | - name: '111' 29 | type: trojan 30 | server: 127.0.0.1 31 | port: 9090 32 | password: 72ac875a-f5b9-461e-a7a4-942b468b0d83 33 | udp: true 34 | sni: gw.alicdn.com 35 | skip-cert-verify: true 36 | - name: hysteria_01 37 | type: hysteria 38 | server: hy2.dtku47.xyz 39 | port: 15566 40 | auth-str: jQrGpwSqp34P 41 | alpn: 42 | - h3 43 | protocol: udp 44 | up: 50 Mbps 45 | down: 100 Mbps 46 | - name: hysteria_11 47 | type: hysteria 48 | server: clash1.dtku47.xyz 49 | port: 11223 50 | auth-str: O5tQQiW2xKf5 51 | alpn: 52 | - h3 53 | protocol: udp 54 | up: 50 Mbps 55 | down: 100 Mbps 56 | - name: hysteria_21 57 | type: hysteria 58 | server: hy2.dtku47.xyz 59 | port: 15566 60 | auth-str: jQrGpwSqp34P 61 | alpn: 62 | - h3 63 | protocol: udp 64 | up: 50 Mbps 65 | down: 100 Mbps 66 | - name: vmess_31 67 | type: vmess 68 | server: 104.26.9.22 69 | port: 8080 70 | cipher: auto 71 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 72 | alterId: 0 73 | tls: false 74 | skip-cert-verify: true 75 | servername: dual-nothing-prep-exit.trycloudflare.com 76 | network: ws 77 | ws-opts: 78 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 79 | headers: 80 | host: dual-nothing-prep-exit.trycloudflare.com 81 | - name: vmess_32 82 | type: vmess 83 | server: 172.64.97.235 84 | port: 8080 85 | cipher: auto 86 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 87 | alterId: 0 88 | tls: false 89 | skip-cert-verify: true 90 | servername: dual-nothing-prep-exit.trycloudflare.com 91 | network: ws 92 | ws-opts: 93 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 94 | headers: 95 | host: dual-nothing-prep-exit.trycloudflare.com 96 | - name: vmess_33 97 | type: vmess 98 | server: 104.19.38.28 99 | port: 8080 100 | cipher: auto 101 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 102 | alterId: 0 103 | tls: false 104 | skip-cert-verify: true 105 | servername: dual-nothing-prep-exit.trycloudflare.com 106 | network: ws 107 | ws-opts: 108 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 109 | headers: 110 | host: dual-nothing-prep-exit.trycloudflare.com 111 | - name: vmess_34 112 | type: vmess 113 | server: 104.19.38.48 114 | port: 8080 115 | cipher: auto 116 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 117 | alterId: 0 118 | tls: false 119 | skip-cert-verify: true 120 | servername: dual-nothing-prep-exit.trycloudflare.com 121 | network: ws 122 | ws-opts: 123 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 124 | headers: 125 | host: dual-nothing-prep-exit.trycloudflare.com 126 | - name: hysteria_41 127 | type: hysteria 128 | server: hy2.dtku47.xyz 129 | port: 15566 130 | auth-str: jQrGpwSqp34P 131 | alpn: 132 | - h3 133 | protocol: udp 134 | up: 50 Mbps 135 | down: 100 Mbps 136 | - name: hysteria_51 137 | type: hysteria 138 | server: hy1.dtku47.xyz 139 | port: 22334 140 | auth-str: lASdKzWK0VxL 141 | alpn: 142 | - h3 143 | protocol: udp 144 | up: 50 Mbps 145 | down: 100 Mbps 146 | - name: hysteria_61 147 | type: hysteria 148 | server: 208.87.243.151 149 | port: 17549 150 | auth_str: dongtaiwang.com 151 | alpn: 152 | - h3 153 | sni: www.bing.com 154 | skip-cert-verify: true 155 | up: 11 Mbps 156 | down: 55 Mbps 157 | - name: hysteria_71 158 | type: hysteria 159 | server: 208.87.243.151 160 | port: 17549 161 | auth_str: dongtaiwang.com 162 | alpn: 163 | - h3 164 | sni: www.bing.com 165 | skip-cert-verify: true 166 | up: 11 Mbps 167 | down: 55 Mbps 168 | - name: hysteria_81 169 | type: hysteria 170 | server: 108.181.24.77 171 | port: 11512 172 | auth-str: dongtaiwang.com 173 | sni: apple.com 174 | skip-cert-verify: true 175 | alpn: 176 | - h3 177 | protocol: udp 178 | up: 11 Mbps 179 | down: 55 Mbps 180 | - name: hysteria_91 181 | type: hysteria 182 | server: 185.22.155.71 183 | port: 10803 184 | auth_str: dongtaiwang.com 185 | alpn: 186 | - h3 187 | sni: www.bing.com 188 | skip-cert-verify: true 189 | up: 11 Mbps 190 | down: 55 Mbps 191 | - name: hysteria_0 192 | type: hysteria 193 | server: 185.22.155.71 194 | port: 10803 195 | ports: 10803 196 | auth_str: dongtaiwang.com 197 | up: 80 198 | down: 100 199 | fast-open: true 200 | protocol: udp 201 | sni: apple.com 202 | skip-cert-verify: true 203 | alpn: 204 | - h3 205 | - name: hysteria_1 206 | type: hysteria 207 | server: 185.22.155.71 208 | port: 10803 209 | ports: 10803 210 | auth_str: dongtaiwang.com 211 | up: 80 212 | down: 100 213 | fast-open: true 214 | protocol: udp 215 | sni: apple.com 216 | skip-cert-verify: true 217 | alpn: 218 | - h3 219 | - name: hysteria_2 220 | type: hysteria 221 | server: 185.22.155.71 222 | port: 10803 223 | ports: 10803 224 | auth_str: dongtaiwang.com 225 | up: 80 226 | down: 100 227 | fast-open: true 228 | protocol: udp 229 | sni: apple.com 230 | skip-cert-verify: true 231 | alpn: 232 | - h3 233 | - name: hysteria_3 234 | type: hysteria 235 | server: 185.22.155.71 236 | port: 10803 237 | ports: 10803 238 | auth_str: dongtaiwang.com 239 | up: 80 240 | down: 100 241 | fast-open: true 242 | protocol: udp 243 | sni: apple.com 244 | skip-cert-verify: true 245 | alpn: 246 | - h3 247 | - name: reality_0 248 | type: vless 249 | server: 1.162.51.106 250 | port: 37898 251 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 252 | network: tcp 253 | tls: true 254 | udp: true 255 | flow: xtls-rprx-vision 256 | client-fingerprint: chrome 257 | servername: www.yahoo.com 258 | reality-opts: 259 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 260 | short-id: e12d7fdb 261 | - name: reality_1 262 | type: vless 263 | server: 1.162.51.106 264 | port: 37898 265 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 266 | network: tcp 267 | tls: true 268 | udp: true 269 | flow: xtls-rprx-vision 270 | client-fingerprint: chrome 271 | servername: www.yahoo.com 272 | reality-opts: 273 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 274 | short-id: e12d7fdb 275 | - name: reality_2 276 | type: vless 277 | server: 1.162.51.106 278 | port: 37898 279 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 280 | network: tcp 281 | tls: true 282 | udp: true 283 | flow: xtls-rprx-vision 284 | client-fingerprint: chrome 285 | servername: www.yahoo.com 286 | reality-opts: 287 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 288 | short-id: e12d7fdb 289 | - name: reality_3 290 | type: vless 291 | server: 1.162.51.106 292 | port: 37898 293 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 294 | network: tcp 295 | tls: true 296 | udp: true 297 | flow: xtls-rprx-vision 298 | client-fingerprint: chrome 299 | servername: www.yahoo.com 300 | reality-opts: 301 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 302 | short-id: e12d7fdb 303 | proxy-groups: 304 | - name: 节点选择 305 | type: select 306 | proxies: 307 | - 自动选择 308 | - DIRECT 309 | - 111 310 | - hysteria_01 311 | - hysteria_11 312 | - hysteria_21 313 | - vmess_31 314 | - vmess_32 315 | - vmess_33 316 | - vmess_34 317 | - hysteria_41 318 | - hysteria_51 319 | - hysteria_61 320 | - hysteria_71 321 | - hysteria_81 322 | - hysteria_91 323 | - hysteria_0 324 | - hysteria_1 325 | - hysteria_2 326 | - hysteria_3 327 | - reality_0 328 | - reality_1 329 | - reality_2 330 | - reality_3 331 | - name: 自动选择 332 | type: url-test 333 | url: http://www.gstatic.com/generate_204 334 | interval: 300 335 | tolerance: 50 336 | proxies: 337 | - 111 338 | - hysteria_01 339 | - hysteria_11 340 | - hysteria_21 341 | - vmess_31 342 | - vmess_32 343 | - vmess_33 344 | - vmess_34 345 | - hysteria_41 346 | - hysteria_51 347 | - hysteria_61 348 | - hysteria_71 349 | - hysteria_81 350 | - hysteria_91 351 | - hysteria_0 352 | - hysteria_1 353 | - hysteria_2 354 | - hysteria_3 355 | - reality_0 356 | - reality_1 357 | - reality_2 358 | - reality_3 359 | rules: 360 | - DOMAIN,clash.razord.top,DIRECT 361 | - DOMAIN,yacd.haishan.me,DIRECT 362 | - GEOIP,LAN,DIRECT 363 | - GEOIP,CN,DIRECT 364 | - MATCH,节点选择 365 | -------------------------------------------------------------------------------- /sub/merged_warp_proxies.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | allow-lan: true 3 | mode: rule 4 | log-level: info 5 | unified-delay: true 6 | global-client-fingerprint: chrome 7 | dns: 8 | enable: true 9 | listen: :53 10 | ipv6: true 11 | enhanced-mode: fake-ip 12 | fake-ip-range: 198.18.0.1/16 13 | default-nameserver: 14 | - 223.5.5.5 15 | - 8.8.8.8 16 | nameserver: 17 | - https://dns.alidns.com/dns-query 18 | - https://doh.pub/dns-query 19 | fallback: 20 | - https://1.0.0.1/dns-query 21 | - tls://dns.google 22 | fallback-filter: 23 | geoip: true 24 | geoip-code: CN 25 | ipcidr: 26 | - 240.0.0.0/4 27 | proxies: 28 | - name: TW 29 | type: trojan 30 | server: a 31 | port: 1 32 | password: 72ac875a-f5b9-461e-a7a4-942b468b0d83 33 | udp: true 34 | sni: gw.alicdn.com 35 | skip-cert-verify: true 36 | - name: WARP 37 | type: wireguard 38 | server: engage.cloudflareclient.com 39 | port: 2408 40 | ip: 172.16.0.2 41 | ipv6: 2606:4700:110:87c0:ba32:773a:8d44:e353 42 | private-key: +HpHpY/KjSv5hJdGrN2ok1A6CKhCmTQv5Unwyul9S1g= 43 | public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= 44 | udp: true 45 | reserved: 46 | - 0 47 | - 0 48 | - 0 49 | remote-dns-resolve: true 50 | dns: 51 | - 1.1.1.1 52 | - 8.8.8.8 53 | dialer-proxy: WARP前置节点 54 | - name: hysteria_01 55 | type: hysteria 56 | server: hy2.dtku47.xyz 57 | port: 15566 58 | auth-str: jQrGpwSqp34P 59 | alpn: 60 | - h3 61 | protocol: udp 62 | up: 50 Mbps 63 | down: 100 Mbps 64 | - name: hysteria_11 65 | type: hysteria 66 | server: clash1.dtku47.xyz 67 | port: 11223 68 | auth-str: O5tQQiW2xKf5 69 | alpn: 70 | - h3 71 | protocol: udp 72 | up: 50 Mbps 73 | down: 100 Mbps 74 | - name: hysteria_21 75 | type: hysteria 76 | server: hy2.dtku47.xyz 77 | port: 15566 78 | auth-str: jQrGpwSqp34P 79 | alpn: 80 | - h3 81 | protocol: udp 82 | up: 50 Mbps 83 | down: 100 Mbps 84 | - name: vmess_31 85 | type: vmess 86 | server: 104.26.9.22 87 | port: 8080 88 | cipher: auto 89 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 90 | alterId: 0 91 | tls: false 92 | skip-cert-verify: true 93 | servername: dual-nothing-prep-exit.trycloudflare.com 94 | network: ws 95 | ws-opts: 96 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 97 | headers: 98 | host: dual-nothing-prep-exit.trycloudflare.com 99 | - name: vmess_32 100 | type: vmess 101 | server: 172.64.97.235 102 | port: 8080 103 | cipher: auto 104 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 105 | alterId: 0 106 | tls: false 107 | skip-cert-verify: true 108 | servername: dual-nothing-prep-exit.trycloudflare.com 109 | network: ws 110 | ws-opts: 111 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 112 | headers: 113 | host: dual-nothing-prep-exit.trycloudflare.com 114 | - name: vmess_33 115 | type: vmess 116 | server: 104.19.38.28 117 | port: 8080 118 | cipher: auto 119 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 120 | alterId: 0 121 | tls: false 122 | skip-cert-verify: true 123 | servername: dual-nothing-prep-exit.trycloudflare.com 124 | network: ws 125 | ws-opts: 126 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 127 | headers: 128 | host: dual-nothing-prep-exit.trycloudflare.com 129 | - name: vmess_34 130 | type: vmess 131 | server: 104.19.38.48 132 | port: 8080 133 | cipher: auto 134 | uuid: ef8c954e-014f-4b36-8273-9b5086afab34 135 | alterId: 0 136 | tls: false 137 | skip-cert-verify: true 138 | servername: dual-nothing-prep-exit.trycloudflare.com 139 | network: ws 140 | ws-opts: 141 | path: ef8c954e-014f-4b36-8273-9b5086afab34-vm 142 | headers: 143 | host: dual-nothing-prep-exit.trycloudflare.com 144 | - name: hysteria_41 145 | type: hysteria 146 | server: hy2.dtku47.xyz 147 | port: 15566 148 | auth-str: jQrGpwSqp34P 149 | alpn: 150 | - h3 151 | protocol: udp 152 | up: 50 Mbps 153 | down: 100 Mbps 154 | - name: hysteria_51 155 | type: hysteria 156 | server: hy1.dtku47.xyz 157 | port: 22334 158 | auth-str: lASdKzWK0VxL 159 | alpn: 160 | - h3 161 | protocol: udp 162 | up: 50 Mbps 163 | down: 100 Mbps 164 | - name: hysteria_61 165 | type: hysteria 166 | server: 208.87.243.151 167 | port: 17549 168 | auth_str: dongtaiwang.com 169 | alpn: 170 | - h3 171 | sni: www.bing.com 172 | skip-cert-verify: true 173 | up: 11 Mbps 174 | down: 55 Mbps 175 | - name: hysteria_71 176 | type: hysteria 177 | server: 208.87.243.151 178 | port: 17549 179 | auth_str: dongtaiwang.com 180 | alpn: 181 | - h3 182 | sni: www.bing.com 183 | skip-cert-verify: true 184 | up: 11 Mbps 185 | down: 55 Mbps 186 | - name: hysteria_81 187 | type: hysteria 188 | server: 108.181.24.77 189 | port: 11512 190 | auth-str: dongtaiwang.com 191 | sni: apple.com 192 | skip-cert-verify: true 193 | alpn: 194 | - h3 195 | protocol: udp 196 | up: 11 Mbps 197 | down: 55 Mbps 198 | - name: hysteria_91 199 | type: hysteria 200 | server: 185.22.155.71 201 | port: 10803 202 | auth_str: dongtaiwang.com 203 | alpn: 204 | - h3 205 | sni: www.bing.com 206 | skip-cert-verify: true 207 | up: 11 Mbps 208 | down: 55 Mbps 209 | - name: hysteria_0 210 | type: hysteria 211 | server: 185.22.155.71 212 | port: 10803 213 | ports: 10803 214 | auth_str: dongtaiwang.com 215 | up: 80 216 | down: 100 217 | fast-open: true 218 | protocol: udp 219 | sni: apple.com 220 | skip-cert-verify: true 221 | alpn: 222 | - h3 223 | - name: hysteria_1 224 | type: hysteria 225 | server: 185.22.155.71 226 | port: 10803 227 | ports: 10803 228 | auth_str: dongtaiwang.com 229 | up: 80 230 | down: 100 231 | fast-open: true 232 | protocol: udp 233 | sni: apple.com 234 | skip-cert-verify: true 235 | alpn: 236 | - h3 237 | - name: hysteria_2 238 | type: hysteria 239 | server: 185.22.155.71 240 | port: 10803 241 | ports: 10803 242 | auth_str: dongtaiwang.com 243 | up: 80 244 | down: 100 245 | fast-open: true 246 | protocol: udp 247 | sni: apple.com 248 | skip-cert-verify: true 249 | alpn: 250 | - h3 251 | - name: hysteria_3 252 | type: hysteria 253 | server: 185.22.155.71 254 | port: 10803 255 | ports: 10803 256 | auth_str: dongtaiwang.com 257 | up: 80 258 | down: 100 259 | fast-open: true 260 | protocol: udp 261 | sni: apple.com 262 | skip-cert-verify: true 263 | alpn: 264 | - h3 265 | - name: reality_0 266 | type: vless 267 | server: 1.162.51.106 268 | port: 37898 269 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 270 | network: tcp 271 | tls: true 272 | udp: true 273 | flow: xtls-rprx-vision 274 | client-fingerprint: chrome 275 | servername: www.yahoo.com 276 | reality-opts: 277 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 278 | short-id: e12d7fdb 279 | - name: reality_1 280 | type: vless 281 | server: 1.162.51.106 282 | port: 37898 283 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 284 | network: tcp 285 | tls: true 286 | udp: true 287 | flow: xtls-rprx-vision 288 | client-fingerprint: chrome 289 | servername: www.yahoo.com 290 | reality-opts: 291 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 292 | short-id: e12d7fdb 293 | - name: reality_2 294 | type: vless 295 | server: 1.162.51.106 296 | port: 37898 297 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 298 | network: tcp 299 | tls: true 300 | udp: true 301 | flow: xtls-rprx-vision 302 | client-fingerprint: chrome 303 | servername: www.yahoo.com 304 | reality-opts: 305 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 306 | short-id: e12d7fdb 307 | - name: reality_3 308 | type: vless 309 | server: 1.162.51.106 310 | port: 37898 311 | uuid: ec302de4-6b3d-4f03-a228-3c6d303ed370 312 | network: tcp 313 | tls: true 314 | udp: true 315 | flow: xtls-rprx-vision 316 | client-fingerprint: chrome 317 | servername: www.yahoo.com 318 | reality-opts: 319 | public-key: v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ 320 | short-id: e12d7fdb 321 | proxy-groups: 322 | - name: 节点选择 323 | type: select 324 | proxies: 325 | - TW 326 | - WARP 327 | - 自动选择 328 | - 负载均衡 329 | - 手动选择 330 | - DIRECT 331 | - name: WARP前置节点 332 | type: select 333 | proxies: 334 | - 自动选择 335 | - 负载均衡 336 | - 手动选择 337 | - name: 自动选择 338 | type: url-test 339 | url: http://www.gstatic.com/generate_204 340 | interval: 300 341 | tolerance: 50 342 | proxies: 343 | - TW 344 | - hysteria_01 345 | - hysteria_11 346 | - hysteria_21 347 | - vmess_31 348 | - vmess_32 349 | - vmess_33 350 | - vmess_34 351 | - hysteria_41 352 | - hysteria_51 353 | - hysteria_61 354 | - hysteria_71 355 | - hysteria_81 356 | - hysteria_91 357 | - hysteria_0 358 | - hysteria_1 359 | - hysteria_2 360 | - hysteria_3 361 | - reality_0 362 | - reality_1 363 | - reality_2 364 | - reality_3 365 | - name: 手动选择 366 | type: select 367 | proxies: 368 | - TW 369 | - hysteria_01 370 | - hysteria_11 371 | - hysteria_21 372 | - vmess_31 373 | - vmess_32 374 | - vmess_33 375 | - vmess_34 376 | - hysteria_41 377 | - hysteria_51 378 | - hysteria_61 379 | - hysteria_71 380 | - hysteria_81 381 | - hysteria_91 382 | - hysteria_0 383 | - hysteria_1 384 | - hysteria_2 385 | - hysteria_3 386 | - reality_0 387 | - reality_1 388 | - reality_2 389 | - reality_3 390 | - name: 负载均衡 391 | type: load-balance 392 | proxies: 393 | - TW 394 | - hysteria_01 395 | - hysteria_11 396 | - hysteria_21 397 | - vmess_31 398 | - vmess_32 399 | - vmess_33 400 | - vmess_34 401 | - hysteria_41 402 | - hysteria_51 403 | - hysteria_61 404 | - hysteria_71 405 | - hysteria_81 406 | - hysteria_91 407 | - hysteria_0 408 | - hysteria_1 409 | - hysteria_2 410 | - hysteria_3 411 | - reality_0 412 | - reality_1 413 | - reality_2 414 | - reality_3 415 | url: http://www.gstatic.com/generate_204 416 | interval: 300 417 | strategy: round-robin 418 | rules: 419 | - DOMAIN,clash.razord.top,DIRECT 420 | - DOMAIN,yacd.haishan.me,DIRECT 421 | - GEOIP,LAN,DIRECT 422 | - GEOIP,CN,DIRECT 423 | - MATCH,节点选择 424 | -------------------------------------------------------------------------------- /sub/shadowrocket.txt: -------------------------------------------------------------------------------- 1 | hysteria://hy2.dtku47.xyz:15566?peer=&auth=jQrGpwSqp34P&insecure=0&upmbps=50&downmbps=80&alpn=h3&mport=15566&obfs=&protocol=udp&fastopen=1#hysteria_meta_6 2 | hysteria://clash1.dtku47.xyz:11223?peer=&auth=O5tQQiW2xKf5&insecure=0&upmbps=50&downmbps=80&alpn=h3&mport=11223&obfs=&protocol=udp&fastopen=1#hysteria_meta_7 3 | hysteria://hy2.dtku47.xyz:15566?peer=&auth=jQrGpwSqp34P&insecure=0&upmbps=50&downmbps=80&alpn=h3&mport=15566&obfs=&protocol=udp&fastopen=1#hysteria_meta_8 4 | hysteria://hy2.dtku47.xyz:15566?peer=&auth=jQrGpwSqp34P&insecure=0&upmbps=50&downmbps=80&alpn=h3&mport=15566&obfs=&protocol=udp&fastopen=1#hysteria_meta_10 5 | hysteria://hy1.dtku47.xyz:22334?peer=&auth=lASdKzWK0VxL&insecure=0&upmbps=50&downmbps=80&alpn=h3&mport=22334&obfs=&protocol=udp&fastopen=1#hysteria_meta_11 6 | hysteria://208.87.243.151:17549?peer=www.bing.com&auth=&insecure=1&upmbps=50&downmbps=80&alpn=h3&mport=17549&obfs=&protocol=udp&fastopen=1#hysteria_meta_12 7 | hysteria://208.87.243.151:17549?peer=www.bing.com&auth=&insecure=1&upmbps=50&downmbps=80&alpn=h3&mport=17549&obfs=&protocol=udp&fastopen=1#hysteria_meta_13 8 | hysteria://108.181.24.77:11512?peer=apple.com&auth=dongtaiwang.com&insecure=1&upmbps=50&downmbps=80&alpn=h3&mport=11512&obfs=&protocol=udp&fastopen=1#hysteria_meta_14 9 | hysteria://185.22.155.71:10803?peer=www.bing.com&auth=&insecure=1&upmbps=50&downmbps=80&alpn=h3&mport=10803&obfs=&protocol=udp&fastopen=1#hysteria_meta_15 10 | aHR0cHM6Ly9kb25ndGFpd2FuZy5jb206ZG9uZ3RhaXdhbmcuY29tQG5haXZlMjMuY2ZjZG4zLnh5ejo0NDM= 11 | aHR0cHM6Ly9kb25ndGFpd2FuZy5jb206ZG9uZ3RhaXdhbmcuY29tQG5haXZlMjQuY2ZjZG4zLnh5ejo0NDM= 12 | hysteria://185.22.155.71:10803?peer=apple.com&auth=dongtaiwang.com&insecure=1&upmbps=11&downmbps=55&alpn=h3&obfs=&protocol=udp&fastopen=1#hysteria_0 13 | hysteria://185.22.155.71:10803?peer=apple.com&auth=dongtaiwang.com&insecure=1&upmbps=11&downmbps=55&alpn=h3&obfs=&protocol=udp&fastopen=1#hysteria_1 14 | hysteria://185.22.155.71:10803?peer=apple.com&auth=dongtaiwang.com&insecure=1&upmbps=11&downmbps=55&alpn=h3&obfs=&protocol=udp&fastopen=1#hysteria_2 15 | hysteria://185.22.155.71:10803?peer=apple.com&auth=dongtaiwang.com&insecure=1&upmbps=11&downmbps=55&alpn=h3&obfs=&protocol=udp&fastopen=1#hysteria_3 16 | hysteria2://dongtaiwang.com@45.129.2.108:30033?insecure=1&sni=www.bing.com#hysteria2_0 17 | hysteria2://dongtaiwang.com@46.17.41.217:30033?insecure=1&sni=www.bing.com#hysteria2_1 18 | hysteria2://dongtaiwang.com@46.29.163.171:30033?insecure=1&sni=www.bing.com#hysteria2_2 19 | hysteria2://dongtaiwang.com@46.29.163.171:30033?insecure=1&sni=www.bing.com#hysteria2_3 20 | vless://ec302de4-6b3d-4f03-a228-3c6d303ed370@1.162.51.106:37898?security=reality&allowInsecure=0&flow=xtls-rprx-vision&type=tcp&fp=chrome&pbk=v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ&sid=e12d7fdb&sni=www.yahoo.com&serviceName=&path=&host=#vless_0 21 | vless://ec302de4-6b3d-4f03-a228-3c6d303ed370@1.162.51.106:37898?security=reality&allowInsecure=0&flow=xtls-rprx-vision&type=tcp&fp=chrome&pbk=v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ&sid=e12d7fdb&sni=www.yahoo.com&serviceName=&path=&host=#vless_1 22 | vless://ec302de4-6b3d-4f03-a228-3c6d303ed370@1.162.51.106:37898?security=reality&allowInsecure=0&flow=xtls-rprx-vision&type=tcp&fp=chrome&pbk=v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ&sid=e12d7fdb&sni=www.yahoo.com&serviceName=&path=&host=#vless_2 23 | vless://ec302de4-6b3d-4f03-a228-3c6d303ed370@1.162.51.106:37898?security=reality&allowInsecure=0&flow=xtls-rprx-vision&type=tcp&fp=chrome&pbk=v6uWJJmVGFPd0K040QK3PJHCbPc74kXFoQmAhpu30jQ&sid=e12d7fdb&sni=www.yahoo.com&serviceName=&path=&host=#vless_3 24 | -------------------------------------------------------------------------------- /sub/shadowrocket_base64.txt: -------------------------------------------------------------------------------- 1 | aHlzdGVyaWE6Ly9oeTIuZHRrdTQ3Lnh5ejoxNTU2Nj9wZWVyPSZhdXRoPWpRckdwd1NxcDM0UCZpbnNlY3VyZT0wJnVwbWJwcz01MCZkb3dubWJwcz04MCZhbHBuPWgzJm1wb3J0PTE1NTY2Jm9iZnM9JnByb3RvY29sPXVkcCZmYXN0b3Blbj0xI2h5c3RlcmlhX21ldGFfNgpoeXN0ZXJpYTovL2NsYXNoMS5kdGt1NDcueHl6OjExMjIzP3BlZXI9JmF1dGg9TzV0UVFpVzJ4S2Y1Jmluc2VjdXJlPTAmdXBtYnBzPTUwJmRvd25tYnBzPTgwJmFscG49aDMmbXBvcnQ9MTEyMjMmb2Jmcz0mcHJvdG9jb2w9dWRwJmZhc3RvcGVuPTEjaHlzdGVyaWFfbWV0YV83Cmh5c3RlcmlhOi8vaHkyLmR0a3U0Ny54eXo6MTU1NjY/cGVlcj0mYXV0aD1qUXJHcHdTcXAzNFAmaW5zZWN1cmU9MCZ1cG1icHM9NTAmZG93bm1icHM9ODAmYWxwbj1oMyZtcG9ydD0xNTU2NiZvYmZzPSZwcm90b2NvbD11ZHAmZmFzdG9wZW49MSNoeXN0ZXJpYV9tZXRhXzgKaHlzdGVyaWE6Ly9oeTIuZHRrdTQ3Lnh5ejoxNTU2Nj9wZWVyPSZhdXRoPWpRckdwd1NxcDM0UCZpbnNlY3VyZT0wJnVwbWJwcz01MCZkb3dubWJwcz04MCZhbHBuPWgzJm1wb3J0PTE1NTY2Jm9iZnM9JnByb3RvY29sPXVkcCZmYXN0b3Blbj0xI2h5c3RlcmlhX21ldGFfMTAKaHlzdGVyaWE6Ly9oeTEuZHRrdTQ3Lnh5ejoyMjMzND9wZWVyPSZhdXRoPWxBU2RLeldLMFZ4TCZpbnNlY3VyZT0wJnVwbWJwcz01MCZkb3dubWJwcz04MCZhbHBuPWgzJm1wb3J0PTIyMzM0Jm9iZnM9JnByb3RvY29sPXVkcCZmYXN0b3Blbj0xI2h5c3RlcmlhX21ldGFfMTEKaHlzdGVyaWE6Ly8yMDguODcuMjQzLjE1MToxNzU0OT9wZWVyPXd3dy5iaW5nLmNvbSZhdXRoPSZpbnNlY3VyZT0xJnVwbWJwcz01MCZkb3dubWJwcz04MCZhbHBuPWgzJm1wb3J0PTE3NTQ5Jm9iZnM9JnByb3RvY29sPXVkcCZmYXN0b3Blbj0xI2h5c3RlcmlhX21ldGFfMTIKaHlzdGVyaWE6Ly8yMDguODcuMjQzLjE1MToxNzU0OT9wZWVyPXd3dy5iaW5nLmNvbSZhdXRoPSZpbnNlY3VyZT0xJnVwbWJwcz01MCZkb3dubWJwcz04MCZhbHBuPWgzJm1wb3J0PTE3NTQ5Jm9iZnM9JnByb3RvY29sPXVkcCZmYXN0b3Blbj0xI2h5c3RlcmlhX21ldGFfMTMKaHlzdGVyaWE6Ly8xMDguMTgxLjI0Ljc3OjExNTEyP3BlZXI9YXBwbGUuY29tJmF1dGg9ZG9uZ3RhaXdhbmcuY29tJmluc2VjdXJlPTEmdXBtYnBzPTUwJmRvd25tYnBzPTgwJmFscG49aDMmbXBvcnQ9MTE1MTImb2Jmcz0mcHJvdG9jb2w9dWRwJmZhc3RvcGVuPTEjaHlzdGVyaWFfbWV0YV8xNApoeXN0ZXJpYTovLzE4NS4yMi4xNTUuNzE6MTA4MDM/cGVlcj13d3cuYmluZy5jb20mYXV0aD0maW5zZWN1cmU9MSZ1cG1icHM9NTAmZG93bm1icHM9ODAmYWxwbj1oMyZtcG9ydD0xMDgwMyZvYmZzPSZwcm90b2NvbD11ZHAmZmFzdG9wZW49MSNoeXN0ZXJpYV9tZXRhXzE1CmFIUjBjSE02THk5a2IyNW5kR0ZwZDJGdVp5NWpiMjA2Wkc5dVozUmhhWGRoYm1jdVkyOXRRRzVoYVhabE1qTXVZMlpqWkc0ekxuaDVlam8wTkRNPQphSFIwY0hNNkx5OWtiMjVuZEdGcGQyRnVaeTVqYjIwNlpHOXVaM1JoYVhkaGJtY3VZMjl0UUc1aGFYWmxNalF1WTJaalpHNHpMbmg1ZWpvME5ETT0KaHlzdGVyaWE6Ly8xODUuMjIuMTU1LjcxOjEwODAzP3BlZXI9YXBwbGUuY29tJmF1dGg9ZG9uZ3RhaXdhbmcuY29tJmluc2VjdXJlPTEmdXBtYnBzPTExJmRvd25tYnBzPTU1JmFscG49aDMmb2Jmcz0mcHJvdG9jb2w9dWRwJmZhc3RvcGVuPTEjaHlzdGVyaWFfMApoeXN0ZXJpYTovLzE4NS4yMi4xNTUuNzE6MTA4MDM/cGVlcj1hcHBsZS5jb20mYXV0aD1kb25ndGFpd2FuZy5jb20maW5zZWN1cmU9MSZ1cG1icHM9MTEmZG93bm1icHM9NTUmYWxwbj1oMyZvYmZzPSZwcm90b2NvbD11ZHAmZmFzdG9wZW49MSNoeXN0ZXJpYV8xCmh5c3RlcmlhOi8vMTg1LjIyLjE1NS43MToxMDgwMz9wZWVyPWFwcGxlLmNvbSZhdXRoPWRvbmd0YWl3YW5nLmNvbSZpbnNlY3VyZT0xJnVwbWJwcz0xMSZkb3dubWJwcz01NSZhbHBuPWgzJm9iZnM9JnByb3RvY29sPXVkcCZmYXN0b3Blbj0xI2h5c3RlcmlhXzIKaHlzdGVyaWE6Ly8xODUuMjIuMTU1LjcxOjEwODAzP3BlZXI9YXBwbGUuY29tJmF1dGg9ZG9uZ3RhaXdhbmcuY29tJmluc2VjdXJlPTEmdXBtYnBzPTExJmRvd25tYnBzPTU1JmFscG49aDMmb2Jmcz0mcHJvdG9jb2w9dWRwJmZhc3RvcGVuPTEjaHlzdGVyaWFfMwpoeXN0ZXJpYTI6Ly9kb25ndGFpd2FuZy5jb21ANDUuMTI5LjIuMTA4OjMwMDMzP2luc2VjdXJlPTEmc25pPXd3dy5iaW5nLmNvbSNoeXN0ZXJpYTJfMApoeXN0ZXJpYTI6Ly9kb25ndGFpd2FuZy5jb21ANDYuMTcuNDEuMjE3OjMwMDMzP2luc2VjdXJlPTEmc25pPXd3dy5iaW5nLmNvbSNoeXN0ZXJpYTJfMQpoeXN0ZXJpYTI6Ly9kb25ndGFpd2FuZy5jb21ANDYuMjkuMTYzLjE3MTozMDAzMz9pbnNlY3VyZT0xJnNuaT13d3cuYmluZy5jb20jaHlzdGVyaWEyXzIKaHlzdGVyaWEyOi8vZG9uZ3RhaXdhbmcuY29tQDQ2LjI5LjE2My4xNzE6MzAwMzM/aW5zZWN1cmU9MSZzbmk9d3d3LmJpbmcuY29tI2h5c3RlcmlhMl8zCnZsZXNzOi8vZWMzMDJkZTQtNmIzZC00ZjAzLWEyMjgtM2M2ZDMwM2VkMzcwQDEuMTYyLjUxLjEwNjozNzg5OD9zZWN1cml0eT1yZWFsaXR5JmFsbG93SW5zZWN1cmU9MCZmbG93PXh0bHMtcnByeC12aXNpb24mdHlwZT10Y3AmZnA9Y2hyb21lJnBiaz12NnVXSkptVkdGUGQwSzA0MFFLM1BKSENiUGM3NGtYRm9RbUFocHUzMGpRJnNpZD1lMTJkN2ZkYiZzbmk9d3d3LnlhaG9vLmNvbSZzZXJ2aWNlTmFtZT0mcGF0aD0maG9zdD0jdmxlc3NfMAp2bGVzczovL2VjMzAyZGU0LTZiM2QtNGYwMy1hMjI4LTNjNmQzMDNlZDM3MEAxLjE2Mi41MS4xMDY6Mzc4OTg/c2VjdXJpdHk9cmVhbGl0eSZhbGxvd0luc2VjdXJlPTAmZmxvdz14dGxzLXJwcngtdmlzaW9uJnR5cGU9dGNwJmZwPWNocm9tZSZwYms9djZ1V0pKbVZHRlBkMEswNDBRSzNQSkhDYlBjNzRrWEZvUW1BaHB1MzBqUSZzaWQ9ZTEyZDdmZGImc25pPXd3dy55YWhvby5jb20mc2VydmljZU5hbWU9JnBhdGg9Jmhvc3Q9I3ZsZXNzXzEKdmxlc3M6Ly9lYzMwMmRlNC02YjNkLTRmMDMtYTIyOC0zYzZkMzAzZWQzNzBAMS4xNjIuNTEuMTA2OjM3ODk4P3NlY3VyaXR5PXJlYWxpdHkmYWxsb3dJbnNlY3VyZT0wJmZsb3c9eHRscy1ycHJ4LXZpc2lvbiZ0eXBlPXRjcCZmcD1jaHJvbWUmcGJrPXY2dVdKSm1WR0ZQZDBLMDQwUUszUEpIQ2JQYzc0a1hGb1FtQWhwdTMwalEmc2lkPWUxMmQ3ZmRiJnNuaT13d3cueWFob28uY29tJnNlcnZpY2VOYW1lPSZwYXRoPSZob3N0PSN2bGVzc18yCnZsZXNzOi8vZWMzMDJkZTQtNmIzZC00ZjAzLWEyMjgtM2M2ZDMwM2VkMzcwQDEuMTYyLjUxLjEwNjozNzg5OD9zZWN1cml0eT1yZWFsaXR5JmFsbG93SW5zZWN1cmU9MCZmbG93PXh0bHMtcnByeC12aXNpb24mdHlwZT10Y3AmZnA9Y2hyb21lJnBiaz12NnVXSkptVkdGUGQwSzA0MFFLM1BKSENiUGM3NGtYRm9RbUFocHUzMGpRJnNpZD1lMTJkN2ZkYiZzbmk9d3d3LnlhaG9vLmNvbSZzZXJ2aWNlTmFtZT0mcGF0aD0maG9zdD0jdmxlc3NfMwo= -------------------------------------------------------------------------------- /templates/clash_template.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | allow-lan: true 3 | mode: rule 4 | log-level: info 5 | unified-delay: true 6 | global-client-fingerprint: chrome 7 | dns: 8 | enable: true 9 | listen: :53 10 | ipv6: true 11 | enhanced-mode: fake-ip 12 | fake-ip-range: 198.18.0.1/16 13 | default-nameserver: 14 | - 223.5.5.5 15 | - 8.8.8.8 16 | nameserver: 17 | - https://dns.alidns.com/dns-query 18 | - https://doh.pub/dns-query 19 | fallback: 20 | - https://1.0.0.1/dns-query 21 | - tls://dns.google 22 | fallback-filter: 23 | geoip: true 24 | geoip-code: CN 25 | ipcidr: 26 | - 240.0.0.0/4 27 | proxies: 28 | - { name: '111', type: trojan, server: 127.0.0.1, port: 9090, password: 72ac875a-f5b9-461e-a7a4-942b468b0d83, udp: true, sni: gw.alicdn.com, skip-cert-verify: true } 29 | proxy-groups: 30 | - name: 节点选择 31 | type: select 32 | proxies: 33 | - 自动选择 34 | - DIRECT 35 | - 111 36 | 37 | - name: 自动选择 38 | type: url-test 39 | url: http://www.gstatic.com/generate_204 40 | interval: 300 41 | tolerance: 50 42 | proxies: 43 | - 111 44 | 45 | rules: 46 | - DOMAIN,clash.razord.top,DIRECT 47 | - DOMAIN,yacd.haishan.me,DIRECT 48 | - GEOIP,LAN,DIRECT 49 | - GEOIP,CN,DIRECT 50 | - MATCH,节点选择 51 | -------------------------------------------------------------------------------- /templates/clash_warp_template.yaml: -------------------------------------------------------------------------------- 1 | port: 7890 2 | allow-lan: true 3 | mode: rule 4 | log-level: info 5 | unified-delay: true 6 | global-client-fingerprint: chrome 7 | dns: 8 | enable: true 9 | listen: :53 10 | ipv6: true 11 | enhanced-mode: fake-ip 12 | fake-ip-range: 198.18.0.1/16 13 | default-nameserver: 14 | - 223.5.5.5 15 | - 8.8.8.8 16 | nameserver: 17 | - https://dns.alidns.com/dns-query 18 | - https://doh.pub/dns-query 19 | fallback: 20 | - https://1.0.0.1/dns-query 21 | - tls://dns.google 22 | fallback-filter: 23 | geoip: true 24 | geoip-code: CN 25 | ipcidr: 26 | - 240.0.0.0/4 27 | proxies: 28 | - name: TW 29 | type: trojan 30 | server: a 31 | port: 1 32 | password: 72ac875a-f5b9-461e-a7a4-942b468b0d83 33 | udp: true 34 | sni: gw.alicdn.com 35 | skip-cert-verify: true 36 | 37 | - name: WARP 38 | type: wireguard 39 | server: engage.cloudflareclient.com 40 | port: 2408 41 | ip: 172.16.0.2 42 | ipv6: 2606:4700:110:87c0:ba32:773a:8d44:e353 43 | private-key: +HpHpY/KjSv5hJdGrN2ok1A6CKhCmTQv5Unwyul9S1g= 44 | public-key: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= 45 | udp: true 46 | reserved: [0,0,0] 47 | remote-dns-resolve: true 48 | dns: [ 1.1.1.1, 8.8.8.8 ] 49 | dialer-proxy: "WARP前置节点" 50 | 51 | proxy-groups: 52 | - name: 节点选择 53 | type: select 54 | proxies: 55 | - TW 56 | - WARP 57 | - 自动选择 58 | - 负载均衡 59 | - 手动选择 60 | - DIRECT 61 | - name: WARP前置节点 62 | type: select 63 | proxies: 64 | - 自动选择 65 | - 负载均衡 66 | - 手动选择 67 | 68 | - name: 自动选择 69 | type: url-test 70 | url: http://www.gstatic.com/generate_204 71 | interval: 300 72 | tolerance: 50 73 | proxies: 74 | - TW 75 | 76 | - name: 手动选择 77 | type: select 78 | proxies: 79 | - TW 80 | 81 | - name: 负载均衡 82 | type: load-balance #负载均衡 83 | proxies: 84 | - TW 85 | url: 'http://www.gstatic.com/generate_204' 86 | interval: 300 87 | #lazy: true 88 | #disable-udp: true 89 | strategy: round-robin #作为前置节点⽤这个⽐较好 90 | 91 | 92 | rules: 93 | - DOMAIN,clash.razord.top,DIRECT 94 | - DOMAIN,yacd.haishan.me,DIRECT 95 | - GEOIP,LAN,DIRECT 96 | - GEOIP,CN,DIRECT 97 | - MATCH,节点选择 98 | -------------------------------------------------------------------------------- /urls/clash_new_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta2/1/config.yaml 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta2/config.yaml 3 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta2/13/config.yaml 4 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta2/15/config.yaml 5 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta2/2/config.yaml 6 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta2/3/config.yaml 7 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/1/config.yaml 8 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/config.yaml 9 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/13/config.yaml 10 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/15/config.yaml 11 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/2/config.yaml 12 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/3/config.yaml 13 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/4/config.yaml 14 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/3/config.yaml 15 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/1/config.yaml 16 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/config.yaml 17 | -------------------------------------------------------------------------------- /urls/clash_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/1/config.yaml 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/config.yaml 3 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/13/config.yaml 4 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/15/config.yaml 5 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/2/config.yaml 6 | https://raw.githubusercontent.com/Alvin9999/pac2/master/clash.meta/3/config.yaml 7 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/4/config.yaml 8 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/3/config.yaml 9 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/1/config.yaml 10 | https://raw.githubusercontent.com/Alvin9999/pac2/master/quick/config.yaml 11 | -------------------------------------------------------------------------------- /urls/hysteria2_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria2/config.json 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria2/1/config.json 3 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria2/2/config.json 4 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria2/13/config.json -------------------------------------------------------------------------------- /urls/hysteria_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria/1/config.json 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria/13/config.json 3 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria/2/config.json 4 | https://raw.githubusercontent.com/Alvin9999/pac2/master/hysteria/config.json -------------------------------------------------------------------------------- /urls/naiverproxy_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/PAC/master/naiveproxy/1/config.json 2 | https://raw.githubusercontent.com/Alvin9999/PAC/master/naiveproxy/config.json -------------------------------------------------------------------------------- /urls/sb_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/singbox/1/config.json 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/singbox/config.json -------------------------------------------------------------------------------- /urls/ss_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/ssr-wj/ssconfig.txt 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/ssr-wj/1/ssconfig.txt -------------------------------------------------------------------------------- /urls/xray_urls.txt: -------------------------------------------------------------------------------- 1 | https://raw.githubusercontent.com/Alvin9999/pac2/master/xray/1/config.json 2 | https://raw.githubusercontent.com/Alvin9999/pac2/master/xray/2/config.json 3 | https://raw.githubusercontent.com/Alvin9999/pac2/master/xray/3/config.json 4 | https://raw.githubusercontent.com/Alvin9999/pac2/master/xray/config.json --------------------------------------------------------------------------------