소스 검색

从Auto/clash, Web3Api 项目移动功能到此项目

jack 9 달 전
부모
커밋
3ab9a3a77e

+ 11 - 0
api_tools/3dos/account.txt

@@ -0,0 +1,11 @@
+jack0210_@hotmail.com|||aaaAAA111!!!
+yujieccyj01@hotmail.com|||aaaAAA111!!!
+yujieccyj02@hotmail.com|||aaaAAA111!!!
+yujieccyj03@hotmail.com|||aaaAAA111!!!
+yujieccyj04@hotmail.com|||aaaAAA111!!!
+yujieccyj05@hotmail.com|||aaaaAA111!!!
+yujieccyj06@hotmail.com|||aaaAAA111!!!
+yujieccyj07@hotmail.com|||aaaAAA111!!!
+yujieccyj08@hotmail.com|||aaaAAA111!!!
+yujieccyj09@hotmail.com|||aaaAAA111!!!
+yujieccyj10@hotmail.com|||aaaAAA111!!!

+ 144 - 0
api_tools/3dos/main.py

@@ -0,0 +1,144 @@
+# -*- coding: utf-8 -*-
+import os
+from httpx import Client
+from concurrent.futures import ThreadPoolExecutor, as_completed
+
+
+def daily_claim_3dos(email, password):
+    client = Client(proxies="http://127.0.0.1:7890")
+
+    login_url = "https://api.dashboard.3dos.io/api/auth/login"
+    login_headers = {
+        "Accept": "application/json, text/plain, */*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Content-Type": "application/json",
+        "Origin": "https://dashboard.3dos.io",
+        "Priority": "u=1, i",
+        "Referer": "https://dashboard.3dos.io/",
+        "Sec-CH-UA": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
+        "Sec-CH-UA-Mobile": "?0",
+        "Sec-CH-UA-Platform": '"Windows"',
+        "Sec-Fetch-Dest": "empty",
+        "Sec-Fetch-Mode": "cors",
+        "Sec-Fetch-Site": "same-site",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+    }
+    login_payload = {
+        "email": email,
+        "password": password
+    }
+
+    try:
+        login_response = client.post(login_url, json=login_payload, headers=login_headers)
+    except Exception as e:
+        print(f"登录请求失败:{e}")
+        return False
+
+    if login_response.status_code == 200:
+        # print(f"{email}: 登录成功!")
+        login_data = login_response.json()
+        # print("登录响应内容:", login_data)
+
+        data = login_data.get("data")
+        token = data.get("access_token") or data.get("token")
+        token_type = data.get("token_type")
+        if not token or not token_type:
+            print("登录响应中未找到 Token 或 Token 类型!")
+            return False
+
+        authorization_header = f"{token_type} {token}"
+    else:
+        print("登录失败!")
+        print("登录响应状态码:", login_response.status_code)
+        print("登录响应内容:", login_response.json())
+        return False
+
+    options_url = "https://api.dashboard.3dos.io/api/claim-reward"
+    options_headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Access-Control-Request-Headers": "authorization,cache-control,content-type,expires,pragma",
+        "Access-Control-Request-Method": "POST",
+        "Origin": "https://dashboard.3dos.io",
+        "Priority": "u=1, i",
+        "Referer": "https://dashboard.3dos.io/",
+        "Sec-Fetch-Dest": "empty",
+        "Sec-Fetch-Mode": "cors",
+        "Sec-Fetch-Site": "same-site",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+    }
+
+    try:
+        options_response = client.options(options_url, headers=options_headers)
+    except Exception as e:
+        print(f"OPTIONS 请求失败:{e}")
+        return False
+
+    # print("OPTIONS 请求响应状态码:", options_response.status_code)
+
+    claim_url = "https://api.dashboard.3dos.io/api/claim-reward"
+    claim_headers = {
+        "Accept": "application/json, text/plain, */*",
+        "Authorization": authorization_header,
+        "Cache-Control": "no-cache",
+        "Content-Type": "application/json",
+        "Expires": "0",
+        "Origin": "https://dashboard.3dos.io",
+        "Pragma": "no-cache",
+        "Priority": "u=1, i",
+        "Referer": "https://dashboard.3dos.io/",
+        "Sec-CH-UA": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
+        "Sec-CH-UA-Mobile": "?0",
+        "Sec-CH-UA-Platform": '"Windows"',
+        "Sec-Fetch-Dest": "empty",
+        "Sec-Fetch-Mode": "cors",
+        "Sec-Fetch-Site": "same-site",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+    }
+    claim_payload = {
+        "id": "daily-reward-api"
+    }
+
+    try:
+        claim_response = client.post(claim_url, json=claim_payload, headers=claim_headers)
+    except Exception as e:
+        print(f"{email} claim-reward 请求失败:{e}")
+        return False
+
+    message = claim_response.json().get("message")
+
+    if claim_response.status_code not in [200, 429]:
+        print(f"{email} claim 报错: {message}, 状态码{claim_response.status_code}")
+        return False
+
+    result = f"{email}: {message}"
+    return result
+
+
+def main():
+    print("开始执行...")
+
+    config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "account.txt")
+    try:
+        with open(config_path, "r", encoding="utf-8") as file:
+            account_list = [line.strip() for line in file.readlines()]
+    except Exception as e:
+        print(f"读取配置失败:{e}")
+        return
+
+    with ThreadPoolExecutor(max_workers=len(account_list)) as executor:
+        futures = []
+        for account in account_list:
+            email, password = account.split("|||")
+            futures.append(executor.submit(daily_claim_3dos, email, password))
+
+        for future in as_completed(futures):
+            result = future.result()
+            if result:
+                print(result)
+
+
+if __name__ == "__main__":
+    main()

+ 10 - 0
api_tools/3dos/requirements.txt

@@ -0,0 +1,10 @@
+anyio==4.8.0
+certifi==2025.1.31
+h11==0.14.0
+httpcore==1.0.7
+httpx==0.27.2
+idna==3.10
+setuptools==75.8.0
+sniffio==1.3.1
+typing_extensions==4.12.2
+wheel==0.45.1

+ 5 - 0
api_tools/Agnt/config.json

@@ -0,0 +1,5 @@
+{
+  "cookies": [
+    "_ga=GA1.1.691286698.1738712937; privy-session=privy.agnthub.ai; _ga_HZ81TDGZGW=GS1.1.1741104719.42.1.1741105531.0.0.0; privy-token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVZWDlVRXppSll1ajlpeTFEbmc5NnY3OXZQcGMtaV9DdXU0bm0wWnVCVkkifQ.eyJzaWQiOiJjbTZ3ZXR2eXQwMDBmOHNvajR3YXh0ZjQ4IiwiaXNzIjoicHJpdnkuaW8iLCJpYXQiOjE3NDExNDM1ODUsImF1ZCI6ImNtNmplc3V4ZDAwYTlvam8waTlybHh1ZGsiLCJzdWIiOiJkaWQ6cHJpdnk6Y202cjUzcHg2MDBid3A1aHlncW0zc3pxayIsImV4cCI6MTc0MTE0NzE4NX0.7DnKA0WG5b2CV2C5-iJlF0miKNP9t2ofGJbRe6C4-SOPnSm747ceG9RGUM15b1VdUFOOmXjc4vxUa4rlFVlbtg; privy-id-token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVZWDlVRXppSll1ajlpeTFEbmc5NnY3OXZQcGMtaV9DdXU0bm0wWnVCVkkifQ.eyJjciI6IjE3Mzg3MTM0NjIiLCJsaW5rZWRfYWNjb3VudHMiOiJbe1widHlwZVwiOlwidHdpdHRlcl9vYXV0aFwiLFwic3ViamVjdFwiOlwiMTYzOTM3MzU1ODA5Mzg0MDM4NFwiLFwidXNlcm5hbWVcIjpcIkFsaXNoYU1hcnQxNjkzOFwiLFwibmFtZVwiOlwiQWxpc2hhIE1hcnRpblwiLFwicGZwXCI6XCJodHRwczovL3Bicy50d2ltZy5jb20vcHJvZmlsZV9pbWFnZXMvMTYzOTM3NDE0MDM1OTc0MTQ0MC9LUXg0U0h6al9ub3JtYWwuanBnXCIsXCJsdlwiOjE3MzkwMzIxMzB9LHtcInR5cGVcIjpcIndhbGxldFwiLFwiYWRkcmVzc1wiOlwiMHhjNTVEM2VhNEZmMTVkRDdGMTQ2MjUzNTEyOEZEYmZBQTlGYmQzZUEzXCIsXCJjaGFpbl90eXBlXCI6XCJldGhlcmV1bVwiLFwid2FsbGV0X2NsaWVudF90eXBlXCI6XCJwcml2eVwiLFwibHZcIjoxNzM4NzEzNDczfSx7XCJ0eXBlXCI6XCJkaXNjb3JkX29hdXRoXCIsXCJzdWJqZWN0XCI6XCI5NTI1MTEzNDk0MTY2NjEwMTJcIixcInVzZXJuYW1lXCI6XCJtYXJjaDQwNjQjMFwiLFwibHZcIjoxNzM4NzYzMzE5fV0iLCJpc3MiOiJwcml2eS5pbyIsImlhdCI6MTc0MTE0MzU4NSwiYXVkIjoiY202amVzdXhkMDBhOW9qbzBpOXJseHVkayIsInN1YiI6ImRpZDpwcml2eTpjbTZyNTNweDYwMGJ3cDVoeWdxbTNzenFrIiwiZXhwIjoxNzQxMTQ3MTg1fQ.esW33-NgR46Mf5HMA3rcNg06eigNvtExRNVk9jw94CWvVO4VrUktZ9XUsBoJrZKvs9lUu3n2kr_e14iS_aZzUA"
+  ]
+}

+ 153 - 0
api_tools/Agnt/main.py

@@ -0,0 +1,153 @@
+# -*- coding: utf-8 -*-
+import time
+import os
+import json
+import httpx
+
+
+class AgntTask:
+    def __init__(self, cookies_list):
+        self.cookies_list = cookies_list
+
+    def daily_task(self):
+        for cookies in self.cookies_list:
+            url = "https://hub-api.agnthub.ai/api/daily-rewards/claim"
+            headers = {
+                "accept": "application/json, text/plain, */*",
+                "accept-encoding": "gzip, deflate, br, zstd",
+                "accept-language": "zh-CN,zh;q=0.9",
+                "content-length": "0",
+                "cookie": cookies,
+                "origin": "https://quests.agnthub.ai",
+                "priority": "u=1, i",
+                "referer": "https://quests.agnthub.ai/",
+                "sec-ch-ua": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
+                "sec-ch-ua-mobile": "?0",
+                "sec-ch-ua-platform": '"Windows"',
+                "sec-fetch-dest": "empty",
+                "sec-fetch-mode": "cors",
+                "sec-fetch-site": "same-site",
+                "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+            }
+
+            try:
+                response = httpx.post(url, headers=headers)
+                print(response.json())
+            except Exception as e:
+                print(str(e))
+
+    def upload_task(self):
+        for cookies in self.cookies_list:
+            url = "https://hub-api.agnthub.ai/api/tasks/make-ai-laugh/34ecad1e-94df-48ba-b5f4-242fdd9d6546"
+            headers = {
+                "accept": "application/json, text/plain, */*",
+                "accept-encoding": "gzip, deflate, br, zstd",
+                "accept-language": "zh-CN,zh;q=0.9",
+                "content-length": "0",
+                "cookie": cookies,
+                "origin": "https://quests.agnthub.ai",
+                "priority": "u=1, i",
+                "referer": "https://quests.agnthub.ai/",
+                "sec-ch-ua": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
+                "sec-ch-ua-mobile": "?0",
+                "sec-ch-ua-platform": '"Windows"',
+                "sec-fetch-dest": "empty",
+                "sec-fetch-mode": "cors",
+                "sec-fetch-site": "same-site",
+                "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+            }
+
+            try:
+                response = httpx.post(url, headers=headers)
+                print(response.json())
+            except Exception as e:
+                print(str(e))
+
+    def tasks(self):
+        tasks_list = [
+            "6813de78-f821-4a84-8e8c-3aa89c15b2aa",
+            "fce2e806-a6c7-4de2-abc2-260d13bcfb2f",
+            "0bcb7d19-7c63-4933-96b0-00141ce54dbe",
+            "2f3241c5-29a0-4f47-acf3-9370baf94e74",
+            "d2b35062-40c1-48b8-bca5-c48779ccc66d",
+            "ab2fd158-b894-47bc-aadb-645259b46cc0",
+            "3861cd8e-5393-4285-b6ee-29a5ee301ee5",
+            "1a75844a-a108-4fbd-bfc3-c7476b26b73d",
+            "217e2f67-c110-4ef7-a636-8ac0623df3e8",
+            "49c1db40-8ecf-4454-af0a-fcc81b222135",
+            "2e6ff98c-132b-4886-8f38-6c89d1a7b02a",
+            "9fc278e8-4045-4130-9f52-6ce3b713318c",
+            "4f913da3-58b6-4636-a2c2-912fb01c73d4",
+            "6216f4e1-eafb-4442-a5d4-5b1830f89655",
+            "ebbba0a4-96d9-4fa4-85f9-6fb07fbc282a",
+            "5172f361-d28e-4aa2-a3ba-2adfe5057539",
+            "f81146e9-9ef9-4979-b0a0-437ea5c3e1bb",
+            "22301ec3-3a75-4758-a886-ab768312ffe5",
+            "6debaef3-844e-40f3-be6d-d99a6fd9f2a1",
+            "932d0c29-22ad-4be5-92b4-fc3a2e13aaed",
+            "05027b13-88a3-42a4-992a-0ce2a53068d4",
+            "9e0addfa-51fd-4f3b-a6f2-8dbe301265aa",
+            "4a42ba64-7822-469c-8899-bc07b5dd5d69",
+            "516d941e-b006-4744-a190-6c3207750854",
+            "bf9e7362-5eed-4110-bbe3-1289722a36b3",
+            "7eed7668-e71a-42ed-98ac-a0ded8bc0296",
+            "2cac41ba-36dd-4389-91b6-f8ee840083db",
+            "6f888d49-2b59-4ba9-a7be-199dceff45ab"
+        ]
+
+        for cookies in cookies_list:
+            for tasks in tasks_list:
+                url = "https://hub-api.agnthub.ai/api/tasks/start/" + tasks
+
+                headers = {
+                    "Accept": "application/json, text/plain, */*",
+                    "Accept-Encoding": "gzip, deflate, br, zstd",
+                    "Accept-Language": "zh-CN,zh;q=0.9",
+                    "Content-Length": "0",
+                    "Cookie": cookies,
+                    "Origin": "https://quests.agnthub.ai",
+                    "Priority": "u=1, i",
+                    "Referer": "https://quests.agnthub.ai/",
+                    "Sec-CH-UA": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
+                    "Sec-CH-UA-Mobile": "?0",
+                    "Sec-CH-UA-Platform": '"Windows"',
+                    "Sec-Fetch-Dest": "empty",
+                    "Sec-Fetch-Mode": "cors",
+                    "Sec-Fetch-Site": "same-site",
+                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+                }
+
+                for retry in range(1, 4):
+                    try:
+                        response = httpx.post(url, headers=headers)
+
+                        if response.status_code == 201:
+                            print("请求成功!")
+                            print(response.json())
+                            break
+                        else:
+                            print(f"请求失败,状态码:{response.status_code}")
+                            print(response.text)
+                    except Exception as e:
+                        print(f"出现错误:{e}\n重试...")
+
+                time.sleep(0.5)
+
+
+if __name__ == '__main__':
+    config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "config.json")
+    try:
+        with open(config_path, "r", encoding="utf-8") as file:
+            config_data = json.load(file)
+    except Exception as e:
+        print(f"读取配置失败:{e}")
+        exit(1)
+
+    cookies_list = config_data.get("cookies", [])
+
+    A = AgntTask(cookies_list)
+
+    A.daily_task()
+    A.upload_task()
+
+    A.tasks()

BIN
api_tools/dawn/aa.jpg


+ 1 - 0
api_tools/dawn/config.json

@@ -0,0 +1 @@
+{"version": "1.1.3", "username": "yujieccyj01@hotmail.com", "password": "aaaAAA111!!!", "appid": "67bc1b9b20f45f80e7c94634"}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1009 - 0
api_tools/dawn/main.f4627661.js


+ 285 - 0
api_tools/dawn/main.py

@@ -0,0 +1,285 @@
+import base64
+import datetime
+import json
+import logging
+import os.path
+import time
+import requests
+import ddddocr
+
+# 配置日志
+logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
+
+# 配置文件路径
+CONFIG_FILE = "config.json"
+
+
+# 初始化配置
+def init_config():
+    if not os.path.exists(CONFIG_FILE):
+        with open(CONFIG_FILE, "w", encoding="utf-8") as f:
+            json.dump({}, f)
+
+
+# 读取配置
+def load_config():
+    with open(CONFIG_FILE, "r", encoding="utf-8") as f:
+        return json.load(f)
+
+
+# 保存配置
+def save_config(config):
+    with open(CONFIG_FILE, "w", encoding="utf-8") as f:
+        json.dump(config, f, indent=4)
+
+
+# 获取版本号
+def get_version(config):
+    if "version" not in config:
+        # 这里可以添加获取版本号的逻辑
+        config["version"] = "1.1.3"
+        save_config(config)
+    return config["version"]
+
+
+# 获取App ID
+def get_app_id(config):
+    if "appid" not in config:
+        response = requests.get(
+            f"https://www.aeropres.in/chromeapi/dawn/v1/appid/getappid?app_v={get_version(config)}",
+            proxies=config.get("proxy"),
+            headers={
+                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"},
+            verify=False,
+            timeout=15
+        )
+        if response.status_code != 200:
+            raise Exception("获取appid失败")
+        config["appid"] = response.json()["data"]["appid"]
+        save_config(config)
+    return config["appid"]
+
+
+# 获取Puzzle ID
+def get_puzzle_id(config):
+    app_id = get_app_id(config)
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "priority": "u=1, i",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+        "sec-fetch-dest": "empty",
+        "sec-fetch-mode": "cors",
+        "sec-fetch-site": "cross-site",
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/puzzle/get-puzzle?appid={app_id}",
+        proxies=config.get("proxy"),
+        headers=headers,
+        verify=False,
+        timeout=15
+    )
+    if response.status_code not in [200, 201]:
+        raise Exception("获取puzzle_id失败")
+    res_json = response.json()
+    if not res_json.get('success', False):
+        raise Exception("获取puzzle_id结果失败")
+    return res_json["puzzle_id"]
+
+
+# 获取Puzzle Code
+def get_puzzle_code(config):
+    puzzle_id = get_puzzle_id(config)
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "priority": "u=1, i",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+        "sec-fetch-dest": "empty",
+        "sec-fetch-mode": "cors",
+        "sec-fetch-site": "cross-site",
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/puzzle/get-puzzle-image?puzzle_id={puzzle_id}&appid={get_app_id(config)}",
+        proxies=config.get("proxy"),
+        headers=headers,
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception("获取puzzle_url失败")
+    res_json = response.json()
+    if not res_json.get('success', False):
+        raise Exception("获取puzzle_url结果失败")
+    imgBase64 = res_json["imgBase64"]
+    data = base64.b64decode(imgBase64)
+    return get_code_with_img(puzzle_id, img_data=data)
+
+
+# 获取验证码
+def get_code_with_img(puzzle_id, img_data):
+    print(puzzle_id)
+    with open(f'{str(int(time.time()))}.jpg', 'wb') as file:
+        file.write(img_data)
+    return False
+
+
+# 获取Token
+def get_token(config):
+    if "token" not in config:
+        retry_count = config.get('retry', 3)
+        code = ""
+        puzzle_id = ""
+        while retry_count > 0:
+            try:
+                puzzle_id = get_puzzle_id(config)
+                code = get_puzzle_code(config)
+                break
+            except Exception as e:
+                logging.error(f"获取token失败,{e}")
+                retry_count -= 1
+        if not code or not puzzle_id:
+            return False
+        data = {
+            "username": config.get("username", ""),
+            "password": config.get("password", ""),
+            "logindata": {"_v": {"version": get_version(config)},
+                          "datetime": datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%fZ")[:-3]},
+            "puzzle_id": puzzle_id,
+            "ans": code,
+            "appid": get_app_id(config),
+        }
+        headers = {
+            "Accept": "*/*",
+            "Accept-Encoding": "gzip, deflate, br, zstd",
+            "Accept-Language": "zh-CN,zh;q=0.9",
+            "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+            "priority": "u=1, i",
+            "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+            "sec-ch-ua-mobile": "?0",
+            "sec-ch-ua-platform": '"Windows"',
+            "sec-fetch-dest": "empty",
+            "sec-fetch-mode": "cors",
+            "sec-fetch-site": "cross-site",
+        }
+        retry_count = config.get('retry', 3)
+        while retry_count > 0:
+            try:
+                response = requests.post(
+                    f"https://www.aeropres.in/chromeapi/dawn/v1/user/login/v2?appid={get_app_id(config)}",
+                    json=data,
+                    proxies=config.get("proxy"),
+                    verify=False,
+                    timeout=15,
+                    headers=headers
+                )
+                if response.status_code != 200:
+                    raise Exception("获取token失败")
+                res_json = response.json()
+                if not res_json.get('success', False):
+                    raise Exception("获取token结果失败")
+                config["token"] = res_json["data"]["token"]
+                save_config(config)
+                break
+            except Exception as e:
+                logging.error(f"获取token失败,{e}")
+                retry_count -= 1
+    return config.get("token", "")
+
+
+# 获取积分
+def get_point(config):
+    headers = {
+        "Authorization": f"Bearer {config.get('token', '')}",
+        "Content-Type": "application/json",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/api/atom/v1/userreferral/getpoint?appid={get_app_id(config)}",
+        headers=headers,
+        proxies=config.get("proxy"),
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception(f"获取积分失败,{response.text}")
+    if not response.json().get('success', False):
+        raise Exception(f"获取积分失败,{response.json()}")
+
+
+# 保持活跃
+def keep_alive(config):
+    headers = {
+        "Authorization": f"Bearer {config.get('token', '')}",
+        "Content-Type": "application/json",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+    }
+    data = {
+        "username": config.get("username", ""),
+        "extensionid": "fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "numberoftabs": 0,
+        "_v": get_version(config)
+    }
+    response = requests.post(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/userreward/keepalive?appid={get_app_id(config)}",
+        json=data,
+        headers=headers,
+        proxies=config.get("proxy"),
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception(f"保持活跃失败,{response.text}")
+    if not response.json().get('success', False):
+        raise Exception(f"保持活跃失败,{response.json()}")
+
+
+# 主函数
+def main():
+    init_config()
+    config = load_config()
+    while True:
+        token = get_token(config)
+        if not token:
+            time.sleep(60)
+            del config['token']
+            save_config(config)
+            continue
+        retry_count = 5
+        while retry_count > 0:
+            err = False
+            try:
+                get_point(config)
+            except Exception as e:
+                logging.error(f"获取积分失败,{e}")
+                err = True
+            try:
+                keep_alive(config)
+            except Exception as e:
+                logging.error(f"保持活跃失败,{e}")
+                err = True
+            if not err:
+                retry_count = 5
+            else:
+                retry_count -= 1
+            if retry_count <= 0:
+                break
+            time.sleep(5 * 60)
+
+
+if __name__ == '__main__':
+    main()

+ 7 - 0
api_tools/dawn/test.py

@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+import ddddocr
+
+with open('aa.jpg', 'rb') as f:
+    img_bytes = f.read()
+res = ddddocr.DdddOcr(show_ad=False).classification(img_bytes)
+print(res)

+ 1 - 0
api_tools/magicnewton_roll/config.txt

@@ -0,0 +1 @@
+_ga=GA1.1.610447331.1739317157; __Secure-next-auth.callback-url=https%3A%2F%2Fportal.magicnewton.com; __Host-next-auth.csrf-token=53050a9c7d088d4bd79779264df04ee9d6066f47880c821170896bdaf5afeb4b%7Cac78d88f5ffc08318561307c6ecbb492cf2ee2b3b6b6d821a3e25b8c13a63e24; wagmi.store={"state":{"connections":{"__type":"Map","value":[]},"chainId":1,"current":null},"version":2}; _ga_2BFPMRZ2M3=GS1.1.1741150766.31.1.1741150769.0.0.0; __Secure-next-auth.session-token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..DXHUeefu2S-J7WP1.hrfMTYmqiA-ZANO6TuJECUr38IUvzlMqdwkDr8Ju6zXdhtB6H2HjM-kCS-TcXV0sI69XKK5zddPmIuJw4IwPah9KWShnIwLwTg1bEMMCiDjW-XmzTYDPk6MjuEpQ255gl19QSOibq7xhjbG5tqOrE77RJeyMdyxuJSgt6cmmf7O5wnb1EBloHVAI5CGDvwOPLJLYShGx2xOed311zqJXyJpuMiGoB9juUUoOECsFMIllNDQeOpo0p0jMGefr7YhX722Q0MaFi-RhHdpPnQMlGHEn8QTFTmlUvLEzCEL5BoOLUw.VmOIIif_Bn7WBX1-G_ZRBg

+ 55 - 0
api_tools/magicnewton_roll/main.py

@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+import time
+import os
+import json
+import httpx
+
+class DuDog:
+    def __init__(self, cookies_list):
+        self.cookies_list = cookies_list
+
+    def roll(self):
+        url = "https://www.magicnewton.com/portal/api/userQuests"
+
+        for cookies in self.cookies_list:
+            headers = {
+                "accept": "*/*",
+                "accept-encoding": "gzip, deflate, br, zstd",
+                "accept-language": "zh-CN,zh;q=0.9",
+                "content-type": "application/json",
+                "cookie": cookies,
+                "origin": "https://www.magicnewton.com",
+                "priority": "u=1, i",
+                "referer": "https://www.magicnewton.com/portal/rewards",
+                "sec-ch-ua": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
+                "sec-ch-ua-mobile": "?0",
+                "sec-ch-ua-platform": '"Windows"',
+                "sec-fetch-dest": "empty",
+                "sec-fetch-mode": "cors",
+                "sec-fetch-site": "same-origin",
+                "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+            }
+            payload = {"questId": "f56c760b-2186-40cb-9cbc-3af4a3dc20e2", "metadata": {"action": "ROLL"}}
+
+            for times in range(6):
+                try:
+                    response = httpx.post(url, headers=headers, json=payload)
+                    print(response.json())
+                    if response.json().get('message') == 'Quest already completed':
+                        print('Is Done!')
+                        break
+                except Exception as e:
+                    print(str(e))
+                time.sleep(3)
+
+if __name__ == '__main__':
+    config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "config.txt")
+    try:
+        with open(config_path, "r", encoding="utf-8") as file:
+            cookies_list = file.readlines()
+    except Exception as e:
+        print(f"读取配置失败:{e}")
+        exit(1)
+
+    D = DuDog(cookies_list)
+    D.roll()

+ 62 - 0
porxy_tools/clash/check_all_proxy.py

@@ -0,0 +1,62 @@
+import asyncio
+import aiohttp
+from urllib.parse import quote
+
+
+async def check(url, session):
+    for retry in range(3):
+        try:
+            async with session.get(url) as response:
+                if response.status == 200:
+                    print(f"Success: {url}")
+                    return True
+                else:
+                    print(f"Failed: {url} (Status: {response.status})")
+        except Exception as e:
+            print(f"Error: {url} - {str(e)}")
+    return False
+
+
+async def prepare_check(node_url, ports, proxy_name_list):
+    async with aiohttp.ClientSession() as session:
+        tasks = []
+        for port in ports:
+            proxy_url = f"{node_url}:{port}"
+            for proxy in proxy_name_list:
+                url = f"{proxy_url}/api/proxies/{proxy}/delay?timeout=5000&url=http:%2F%2Fwww.gstatic.com%2Fgenerate_204"
+                tasks.append(check(url, session))
+        await asyncio.gather(*tasks)
+
+
+async def load_nodes_details():
+    tasks = []
+    async with aiohttp.ClientSession() as session:
+        for node_url, ports in nodes.items():
+            clash_tool_url = f"{node_url}:{ports[0]}"
+            url = f"{clash_tool_url}/api/proxies"
+            try:
+                async with session.get(url) as response:
+                    if response.status == 200:
+                        proxies = await response.json()
+                        proxy_name_list = list(proxies['proxies'].keys())
+                        tasks.append(prepare_check(node_url, ports, proxy_name_list))
+                    else:
+                        print(f"Failed to load proxies from {url} (Status: {response.status})")
+            except Exception as e:
+                print(f"Error: {url} - {str(e)}")
+        await asyncio.gather(*tasks)
+
+
+async def main():
+    await load_nodes_details()
+
+
+if __name__ == "__main__":
+    nodes = {
+        "http://192.168.31.194": ['58001', '58002', '58003', '58004', '58005', '58006', '58007', '58008', '58009',
+                                  '58010'],
+        "http://192.168.31.201": ['32001', '32002', '32003', '32004', '32005', '32006', '32007', '32008', '32009',
+                                  '32010', '32011', '32012']
+    }
+    asyncio.run(main())
+    print("All done!")

+ 567 - 0
porxy_tools/clash/config_depin.yaml

@@ -0,0 +1,567 @@
+allow-lan: true
+bind-address: '*'
+dns:
+  enable: false
+  fallback: []
+  ipv6: false
+  nameserver: []
+external-controller: 0.0.0.0:9090
+log-level: info
+mixed-port: 7890
+mode: rule
+proxies:
+- alterId: 0
+  cipher: auto
+  name: DE-Detour 01 AEAD
+  port: 15801
+  server: de-detour-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: DE-Detour 02 AEAD
+  port: 15802
+  server: de-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: DE-Detour-03 AEAD
+  port: 15803
+  server: de-detour-03.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: LA-Detour 02 AEAD
+  port: 15502
+  server: la-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: LA-Detour 03 AEAD
+  port: 15503
+  server: la-detour-03.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: LA-Detour 05 AEAD
+  port: 15505
+  server: la-detour-05.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: LA-Detour 07 AEAD
+  port: 15507
+  server: la-detour-07.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: LA-Detour 09 AEAD
+  port: 15509
+  server: la-detour-09.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: LA-Detour 10 AEAD
+  port: 15510
+  server: la-detour-10.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: Oz-Detour 01 AEAD
+  port: 15811
+  server: oz-detour-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: Oz-Detour 02 AEAD
+  port: 15812
+  server: oz-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: UK Detour-01 AEAD
+  port: 15711
+  server: uk-detour-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: UK Detour-02 AEAD
+  port: 15712
+  server: uk-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: UK Detour-03 AEAD
+  port: 15713
+  server: uk-detour-03.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: UK Detour-04 AEAD
+  port: 15714
+  server: uk-detour-04.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: UK Detour-05 AEAD
+  port: 15715
+  server: uk-detour-05.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: UK Detour-06 AEAD
+  port: 15716
+  server: uk-detour-06.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- name: 🇦🇶 南极-广东专线 WARP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32041
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇦🇷 阿根廷 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12066
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇦🇷 阿根廷-广东专线 DonWeb
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32015
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇦🇺 澳大利亚 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12068
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇦🇺 澳大利亚-广东专线 GCore
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32023
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇦🇺 澳大利亚-广东专线 VUAU
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32012
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇧🇷 巴西-广东专线 GCore 1
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32016
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇧🇷 巴西-广东专线 GCore 2
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32025
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇨🇦 加拿大-广东专线 BGP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32039
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇩🇪 德国 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12070
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇩🇪 德国-广东专线 BGP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32011
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇫🇷 法国 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12065
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇫🇷 法国-广东专线 BGP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32009
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇬🇧 英国 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12069
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇬🇧 英国-广东专线 BGP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32010
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇮🇩 印尼 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12061
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇮🇳 印度 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12072
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇮🇳 印度-广东专线 DOIN
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32017
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇮🇳 印度-广东专线 GCore
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32024
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇮🇹 意大利 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12062
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇰🇷 韩国 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12041
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇰🇷 韩国-广东专线 VUKR
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32005
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇲🇴 澳门 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12007
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇳🇬 尼日利亚 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12073
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇳🇬 尼日利亚-广东专线 Melbicom
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32034
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇳🇱 荷兰 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12074
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇵🇭 菲律宾-广东专线 Comfac
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32030
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇵🇭 菲律宾-广东专线 Zenlayer
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32013
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇵🇰 巴基斯坦 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12077
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇷🇺 俄罗斯 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12075
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇷🇺 俄罗斯-广东专线 PQ
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32008
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇸🇦 沙特-广东专线 STC
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32035
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇸🇪 瑞典 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12071
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇹🇭 泰国 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12076
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇹🇭 泰国-广东专线 Bangmod
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32043
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇹🇷 土耳其 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12064
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇹🇷 土耳其-广东专线 GCore
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32026
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇹🇷 土耳其-广东专线 Kapteyan
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32014
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇺🇦 乌克兰-广东专线 Vik
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32019
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12051
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国 02
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12052
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国 03
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12053
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国 04
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12054
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国-广东专线 BGP 1
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32001
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国-广东专线 BGP 2
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32028
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国-广东专线 DAOport
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32031
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇺🇸 美国-广东专线 GCore
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32021
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+proxy-groups:
+- name: GLOBAL
+  proxies:
+  - DE-Detour 01 AEAD
+  - DE-Detour 02 AEAD
+  - DE-Detour-03 AEAD
+  - LA-Detour 02 AEAD
+  - LA-Detour 03 AEAD
+  - LA-Detour 05 AEAD
+  - LA-Detour 07 AEAD
+  - LA-Detour 09 AEAD
+  - LA-Detour 10 AEAD
+  - Oz-Detour 01 AEAD
+  - Oz-Detour 02 AEAD
+  - UK Detour-01 AEAD
+  - UK Detour-02 AEAD
+  - UK Detour-03 AEAD
+  - UK Detour-04 AEAD
+  - UK Detour-05 AEAD
+  - UK Detour-06 AEAD
+  - 🇦🇶 南极-广东专线 WARP
+  - 🇦🇷 阿根廷 01
+  - 🇦🇷 阿根廷-广东专线 DonWeb
+  - 🇦🇺 澳大利亚 01
+  - 🇦🇺 澳大利亚-广东专线 GCore
+  - 🇦🇺 澳大利亚-广东专线 VUAU
+  - 🇧🇷 巴西-广东专线 GCore 1
+  - 🇧🇷 巴西-广东专线 GCore 2
+  - 🇨🇦 加拿大-广东专线 BGP
+  - 🇩🇪 德国 01
+  - 🇩🇪 德国-广东专线 BGP
+  - 🇫🇷 法国 01
+  - 🇫🇷 法国-广东专线 BGP
+  - 🇬🇧 英国 01
+  - 🇬🇧 英国-广东专线 BGP
+  - 🇮🇩 印尼 01
+  - 🇮🇳 印度 01
+  - 🇮🇳 印度-广东专线 DOIN
+  - 🇮🇳 印度-广东专线 GCore
+  - 🇮🇹 意大利 01
+  - 🇰🇷 韩国 01
+  - 🇰🇷 韩国-广东专线 VUKR
+  - 🇲🇴 澳门 01
+  - 🇳🇬 尼日利亚 01
+  - 🇳🇬 尼日利亚-广东专线 Melbicom
+  - 🇳🇱 荷兰 01
+  - 🇵🇭 菲律宾-广东专线 Comfac
+  - 🇵🇭 菲律宾-广东专线 Zenlayer
+  - 🇵🇰 巴基斯坦 01
+  - 🇷🇺 俄罗斯 01
+  - 🇷🇺 俄罗斯-广东专线 PQ
+  - 🇸🇦 沙特-广东专线 STC
+  - 🇸🇪 瑞典 01
+  - 🇹🇭 泰国 01
+  - 🇹🇭 泰国-广东专线 Bangmod
+  - 🇹🇷 土耳其 01
+  - 🇹🇷 土耳其-广东专线 GCore
+  - 🇹🇷 土耳其-广东专线 Kapteyan
+  - 🇺🇦 乌克兰-广东专线 Vik
+  - 🇺🇸 美国 01
+  - 🇺🇸 美国 02
+  - 🇺🇸 美国 03
+  - 🇺🇸 美国 04
+  - 🇺🇸 美国-广东专线 BGP 1
+  - 🇺🇸 美国-广东专线 BGP 2
+  - 🇺🇸 美国-广东专线 DAOport
+  - 🇺🇸 美国-广东专线 GCore
+  type: select
+secret: ''

+ 686 - 0
porxy_tools/clash/config_web3.yaml

@@ -0,0 +1,686 @@
+allow-lan: true
+bind-address: '*'
+dns:
+  enable: false
+  fallback: []
+  ipv6: false
+  nameserver: []
+external-controller: 0.0.0.0:9090
+log-level: info
+mixed-port: 7890
+mode: rule
+proxies:
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 01 AEAD
+  port: 15101
+  server: hkt-detour-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 02 AEAD
+  port: 15102
+  server: hkt-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 05 AEAD
+  port: 15105
+  server: hkt-detour-05.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 06 AEAD
+  port: 15106
+  server: hkt-detour-06.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 09 AEAD
+  port: 15109
+  server: hkt-detour-09.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 10 AEAD
+  port: 15110
+  server: hkt-detour-10.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 11 AEAD
+  port: 15111
+  server: hkt-detour-11.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 12 AEAD
+  port: 15112
+  server: hkt-detour-12.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 13 AEAD
+  port: 15113
+  server: hkt-detour-13.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 14 AEAD
+  port: 15114
+  server: hkt-detour-14.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 17 AEAD
+  port: 15117
+  server: hkt-detour-17.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 18 AEAD
+  port: 15118
+  server: hkt-detour-18.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 19 AEAD
+  port: 15119
+  server: hkt-detour-19.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 20 AEAD
+  port: 15120
+  server: hkt-detour-20.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 21 AEAD
+  port: 15131
+  server: hkt-detour-21.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: HKT-Detour 23 AEAD
+  port: 15133
+  server: hkt-detour-23.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: JP-Detour 01 AEAD
+  port: 15601
+  server: jp-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: JP-Detour 02 AEAD
+  port: 15602
+  server: jp-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: JP-Detour 03 AEAD
+  port: 15603
+  server: jp-03.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: JP-Detour 04 AEAD
+  port: 15604
+  server: jp-04.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: JP-Detour 05 AEAD
+  port: 15605
+  server: jp-05.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: JP-Detour 06 AEAD
+  port: 15606
+  server: jp-06.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: SG-Detour 01 AEAD
+  port: 15301
+  server: sg-detour-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: SG-Detour 02 AEAD
+  port: 15302
+  server: sg-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: SG-Detour 03 AEAD
+  port: 15303
+  server: sg-detour-03.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 01 AEAD
+  port: 15201
+  server: tw-detour-01.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 02 AEAD
+  port: 15202
+  server: tw-detour-02.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 03 AEAD
+  port: 15203
+  server: tw-detour-03.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 05 AEAD
+  port: 15205
+  server: tw-detour-05.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 06 AEAD
+  port: 15206
+  server: tw-detour-06.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 08 AEAD
+  port: 15208
+  server: tw-detour-08.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 09 AEAD
+  port: 15209
+  server: tw-detour-09.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 10 AEAD
+  port: 15210
+  server: tw-detour-10.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 12 AEAD
+  port: 15212
+  server: tw-detour-12.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 13 AEAD
+  port: 15213
+  server: tw-detour-13.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 15 AEAD
+  port: 15215
+  server: tw-detour-15.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 16 AEAD
+  port: 15216
+  server: tw-detour-16.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 18 AEAD
+  port: 15218
+  server: tw-detour-18.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 19 AEAD
+  port: 15219
+  server: tw-detour-19.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 20 AEAD
+  port: 15220
+  server: tw-detour-20.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 22 AEAD
+  port: 15222
+  server: tw-detour-22.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- alterId: 0
+  cipher: auto
+  name: TW-Detour 23 AEAD
+  port: 15223
+  server: tw-detour-23.grabgo.pro
+  type: vmess
+  uuid: 22a14509-a8ab-46cb-bb26-d47d4d18e1d6
+  ws-path: /
+- name: 🇨🇳 台湾 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12011
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇨🇳 台湾 02
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12012
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12001
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港 02
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12002
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港 03
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12003
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港 04
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12004
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港 05
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12005
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港 06
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12006
+  server: cn1.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 Akari
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32037
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 BGP 1
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32443
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 BGP 2
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32445
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 GCore
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32027
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 HGC
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32042
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 HKBN
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32000
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 HKT
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32033
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇭🇰 香港-广东专线 NeaRoute
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32029
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12031
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本 02
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12032
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本 03
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12033
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本 04
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12034
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本 05
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12035
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本-广东专线 Akari
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32036
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本-广东专线 BGP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32004
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇯🇵 日本-广东专线 GCore
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32022
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇲🇾 马来西亚 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12067
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇲🇾 马来西亚-广东专线 Shin
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32038
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇸🇬 新加坡 01
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12021
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇸🇬 新加坡 02
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12022
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇸🇬 新加坡 03
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12023
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇸🇬 新加坡 04
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12024
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇸🇬 新加坡 05
+  password: d058a1cb-5dbd-4664-9d8b-ae26bc699ed4
+  port: 12025
+  server: cn2.cdn.xfltd-cdn.top
+  skip-cert-verify: true
+  sni: cdn.alibaba.com
+  type: trojan
+  udp: true
+- name: 🇸🇬 新加坡-广东专线 BGP
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32007
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇹🇼 台湾-广东专线 NeaRoute
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32003
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+- name: 🇹🇼 台湾-广东专线 STUIX
+  password: f2e8e50c-ffb8-48a1-a460-2e72dfaf7845
+  port: 32040
+  server: lbso.bnnodeservice.com
+  sni: cert.bitbyte.one
+  type: trojan
+  udp: true
+proxy-groups:
+- name: GLOBAL
+  proxies:
+  - HKT-Detour 01 AEAD
+  - HKT-Detour 02 AEAD
+  - HKT-Detour 05 AEAD
+  - HKT-Detour 06 AEAD
+  - HKT-Detour 09 AEAD
+  - HKT-Detour 10 AEAD
+  - HKT-Detour 11 AEAD
+  - HKT-Detour 12 AEAD
+  - HKT-Detour 13 AEAD
+  - HKT-Detour 14 AEAD
+  - HKT-Detour 17 AEAD
+  - HKT-Detour 18 AEAD
+  - HKT-Detour 19 AEAD
+  - HKT-Detour 20 AEAD
+  - HKT-Detour 21 AEAD
+  - HKT-Detour 23 AEAD
+  - JP-Detour 01 AEAD
+  - JP-Detour 02 AEAD
+  - JP-Detour 03 AEAD
+  - JP-Detour 04 AEAD
+  - JP-Detour 05 AEAD
+  - JP-Detour 06 AEAD
+  - SG-Detour 01 AEAD
+  - SG-Detour 02 AEAD
+  - SG-Detour 03 AEAD
+  - TW-Detour 01 AEAD
+  - TW-Detour 02 AEAD
+  - TW-Detour 03 AEAD
+  - TW-Detour 05 AEAD
+  - TW-Detour 06 AEAD
+  - TW-Detour 08 AEAD
+  - TW-Detour 09 AEAD
+  - TW-Detour 10 AEAD
+  - TW-Detour 12 AEAD
+  - TW-Detour 13 AEAD
+  - TW-Detour 15 AEAD
+  - TW-Detour 16 AEAD
+  - TW-Detour 18 AEAD
+  - TW-Detour 19 AEAD
+  - TW-Detour 20 AEAD
+  - TW-Detour 22 AEAD
+  - TW-Detour 23 AEAD
+  - 🇨🇳 台湾 01
+  - 🇨🇳 台湾 02
+  - 🇭🇰 香港 01
+  - 🇭🇰 香港 02
+  - 🇭🇰 香港 03
+  - 🇭🇰 香港 04
+  - 🇭🇰 香港 05
+  - 🇭🇰 香港 06
+  - 🇭🇰 香港-广东专线 Akari
+  - 🇭🇰 香港-广东专线 BGP 1
+  - 🇭🇰 香港-广东专线 BGP 2
+  - 🇭🇰 香港-广东专线 GCore
+  - 🇭🇰 香港-广东专线 HGC
+  - 🇭🇰 香港-广东专线 HKBN
+  - 🇭🇰 香港-广东专线 HKT
+  - 🇭🇰 香港-广东专线 NeaRoute
+  - 🇯🇵 日本 01
+  - 🇯🇵 日本 02
+  - 🇯🇵 日本 03
+  - 🇯🇵 日本 04
+  - 🇯🇵 日本 05
+  - 🇯🇵 日本-广东专线 Akari
+  - 🇯🇵 日本-广东专线 BGP
+  - 🇯🇵 日本-广东专线 GCore
+  - 🇲🇾 马来西亚 01
+  - 🇲🇾 马来西亚-广东专线 Shin
+  - 🇸🇬 新加坡 01
+  - 🇸🇬 新加坡 02
+  - 🇸🇬 新加坡 03
+  - 🇸🇬 新加坡 04
+  - 🇸🇬 新加坡 05
+  - 🇸🇬 新加坡-广东专线 BGP
+  - 🇹🇼 台湾-广东专线 NeaRoute
+  - 🇹🇼 台湾-广东专线 STUIX
+  type: select
+secret: ''

+ 143 - 0
porxy_tools/clash/merge.yaml

@@ -0,0 +1,143 @@
+proxies:
+  - {"name":"剩余流量:76.66 GB","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12001,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"套餐到期:长期有效","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12001,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇭🇰 香港 01","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12001,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇭🇰 香港 02","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12002,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇭🇰 香港 03","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12003,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇭🇰 香港 04","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12004,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇭🇰 香港 05","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12005,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇭🇰 香港 06","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12006,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇲🇴 澳门 01","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12007,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇨🇳 台湾 01","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12011,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇨🇳 台湾 02","type":"trojan","server":"cn1.cdn.xfltd-cdn.top","port":12012,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇸🇬 新加坡 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12021,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇸🇬 新加坡 02","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12022,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇸🇬 新加坡 03","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12023,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇸🇬 新加坡 04","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12024,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇸🇬 新加坡 05","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12025,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇯🇵 日本 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12031,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇯🇵 日本 02","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12032,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇯🇵 日本 03","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12033,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇯🇵 日本 04","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12034,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇯🇵 日本 05","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12035,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇺🇸 美国 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12051,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇺🇸 美国 02","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12052,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇺🇸 美国 03","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12053,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇺🇸 美国 04","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12054,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇵🇰 巴基斯坦 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12077,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇰🇷 韩国 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12041,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇮🇩 印尼 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12061,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇮🇹 意大利 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12062,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇹🇷 土耳其 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12064,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇫🇷 法国 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12065,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇦🇷 阿根廷 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12066,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇲🇾 马来西亚 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12067,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇦🇺 澳大利亚 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12068,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇬🇧 英国 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12069,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇩🇪 德国 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12070,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇸🇪 瑞典 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12071,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇮🇳 印度 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12072,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇳🇬 尼日利亚 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12073,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇳🇱 荷兰 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12074,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇷🇺 俄罗斯 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12075,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"🇹🇭 泰国 01","type":"trojan","server":"cn2.cdn.xfltd-cdn.top","port":12076,"password":"d058a1cb-5dbd-4664-9d8b-ae26bc699ed4","udp":true,"sni":"cdn.alibaba.com","skip-cert-verify":true}
+  - {"name":"DE-Detour 01 AEAD","type":"vmess","server":"de-detour-01.grabgo.pro","port":15801,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"DE-Detour 02 AEAD","type":"vmess","server":"de-detour-02.grabgo.pro","port":15802,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"DE-Detour-03 AEAD","type":"vmess","server":"de-detour-03.grabgo.pro","port":15803,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 01 AEAD","type":"vmess","server":"hkt-detour-01.grabgo.pro","port":15101,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 02 AEAD","type":"vmess","server":"hkt-detour-02.grabgo.pro","port":15102,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 05 AEAD","type":"vmess","server":"hkt-detour-05.grabgo.pro","port":15105,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 06 AEAD","type":"vmess","server":"hkt-detour-06.grabgo.pro","port":15106,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 09 AEAD","type":"vmess","server":"hkt-detour-09.grabgo.pro","port":15109,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 10 AEAD","type":"vmess","server":"hkt-detour-10.grabgo.pro","port":15110,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 11 AEAD","type":"vmess","server":"hkt-detour-11.grabgo.pro","port":15111,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 12 AEAD","type":"vmess","server":"hkt-detour-12.grabgo.pro","port":15112,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 13 AEAD","type":"vmess","server":"hkt-detour-13.grabgo.pro","port":15113,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 14 AEAD","type":"vmess","server":"hkt-detour-14.grabgo.pro","port":15114,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 17 AEAD","type":"vmess","server":"hkt-detour-17.grabgo.pro","port":15117,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 18 AEAD","type":"vmess","server":"hkt-detour-18.grabgo.pro","port":15118,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 19 AEAD","type":"vmess","server":"hkt-detour-19.grabgo.pro","port":15119,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 20 AEAD","type":"vmess","server":"hkt-detour-20.grabgo.pro","port":15120,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 21 AEAD","type":"vmess","server":"hkt-detour-21.grabgo.pro","port":15131,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"HKT-Detour 23 AEAD","type":"vmess","server":"hkt-detour-23.grabgo.pro","port":15133,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"JP-Detour 01 AEAD","type":"vmess","server":"jp-01.grabgo.pro","port":15601,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"JP-Detour 02 AEAD","type":"vmess","server":"jp-02.grabgo.pro","port":15602,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"JP-Detour 03 AEAD","type":"vmess","server":"jp-03.grabgo.pro","port":15603,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"JP-Detour 04 AEAD","type":"vmess","server":"jp-04.grabgo.pro","port":15604,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"JP-Detour 05 AEAD","type":"vmess","server":"jp-05.grabgo.pro","port":15605,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"JP-Detour 06 AEAD","type":"vmess","server":"jp-06.grabgo.pro","port":15606,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"LA-Detour 02 AEAD","type":"vmess","server":"la-detour-02.grabgo.pro","port":15502,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"LA-Detour 03 AEAD","type":"vmess","server":"la-detour-03.grabgo.pro","port":15503,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"LA-Detour 05 AEAD","type":"vmess","server":"la-detour-05.grabgo.pro","port":15505,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"LA-Detour 07 AEAD","type":"vmess","server":"la-detour-07.grabgo.pro","port":15507,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"LA-Detour 09 AEAD","type":"vmess","server":"la-detour-09.grabgo.pro","port":15509,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"LA-Detour 10 AEAD","type":"vmess","server":"la-detour-10.grabgo.pro","port":15510,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"Oz-Detour 01 AEAD","type":"vmess","server":"oz-detour-01.grabgo.pro","port":15811,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"Oz-Detour 02 AEAD","type":"vmess","server":"oz-detour-02.grabgo.pro","port":15812,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"SG-Detour 01 AEAD","type":"vmess","server":"sg-detour-01.grabgo.pro","port":15301,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"SG-Detour 02 AEAD","type":"vmess","server":"sg-detour-02.grabgo.pro","port":15302,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"SG-Detour 03 AEAD","type":"vmess","server":"sg-detour-03.grabgo.pro","port":15303,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 01 AEAD","type":"vmess","server":"tw-detour-01.grabgo.pro","port":15201,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 02 AEAD","type":"vmess","server":"tw-detour-02.grabgo.pro","port":15202,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 03 AEAD","type":"vmess","server":"tw-detour-03.grabgo.pro","port":15203,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 05 AEAD","type":"vmess","server":"tw-detour-05.grabgo.pro","port":15205,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 06 AEAD","type":"vmess","server":"tw-detour-06.grabgo.pro","port":15206,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 08 AEAD","type":"vmess","server":"tw-detour-08.grabgo.pro","port":15208,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 09 AEAD","type":"vmess","server":"tw-detour-09.grabgo.pro","port":15209,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 10 AEAD","type":"vmess","server":"tw-detour-10.grabgo.pro","port":15210,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 12 AEAD","type":"vmess","server":"tw-detour-12.grabgo.pro","port":15212,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 13 AEAD","type":"vmess","server":"tw-detour-13.grabgo.pro","port":15213,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 15 AEAD","type":"vmess","server":"tw-detour-15.grabgo.pro","port":15215,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 16 AEAD","type":"vmess","server":"tw-detour-16.grabgo.pro","port":15216,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 18 AEAD","type":"vmess","server":"tw-detour-18.grabgo.pro","port":15218,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 19 AEAD","type":"vmess","server":"tw-detour-19.grabgo.pro","port":15219,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 20 AEAD","type":"vmess","server":"tw-detour-20.grabgo.pro","port":15220,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 22 AEAD","type":"vmess","server":"tw-detour-22.grabgo.pro","port":15222,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"TW-Detour 23 AEAD","type":"vmess","server":"tw-detour-23.grabgo.pro","port":15223,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"UK Detour-01 AEAD","type":"vmess","server":"uk-detour-01.grabgo.pro","port":15711,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"UK Detour-02 AEAD","type":"vmess","server":"uk-detour-02.grabgo.pro","port":15712,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"UK Detour-03 AEAD","type":"vmess","server":"uk-detour-03.grabgo.pro","port":15713,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"UK Detour-04 AEAD","type":"vmess","server":"uk-detour-04.grabgo.pro","port":15714,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"UK Detour-05 AEAD","type":"vmess","server":"uk-detour-05.grabgo.pro","port":15715,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"UK Detour-06 AEAD","type":"vmess","server":"uk-detour-06.grabgo.pro","port":15716,"uuid":"22a14509-a8ab-46cb-bb26-d47d4d18e1d6","alterId":0,"cipher":"auto","ws-path":"/"}
+  - {"name":"🇭🇰 香港-广东专线 BGP 1","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32443,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 BGP 2","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32445,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 Akari","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32037,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 NeaRoute","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32029,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 HKBN","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32000,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 HGC","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32042,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 HKT","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32033,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇭🇰 香港-广东专线 GCore","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32027,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇺🇸 美国-广东专线 BGP 1","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32001,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇺🇸 美国-广东专线 BGP 2","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32028,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇺🇸 美国-广东专线 DAOport","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32031,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇺🇸 美国-广东专线 GCore","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32021,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇹🇼 台湾-广东专线 NeaRoute","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32003,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇹🇼 台湾-广东专线 STUIX","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32040,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇯🇵 日本-广东专线 BGP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32004,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇯🇵 日本-广东专线 Akari","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32036,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇯🇵 日本-广东专线 GCore","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32022,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇰🇷 韩国-广东专线 VUKR","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32005,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇸🇬 新加坡-广东专线 BGP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32007,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇷🇺 俄罗斯-广东专线 PQ","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32008,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇫🇷 法国-广东专线 BGP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32009,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇬🇧 英国-广东专线 BGP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32010,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇨🇦 加拿大-广东专线 BGP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32039,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇩🇪 德国-广东专线 BGP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32011,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇦🇺 澳大利亚-广东专线 VUAU","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32012,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇦🇺 澳大利亚-广东专线 GCore","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32023,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇲🇾 马来西亚-广东专线 Shin","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32038,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇵🇭 菲律宾-广东专线 Zenlayer","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32013,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇵🇭 菲律宾-广东专线 Comfac","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32030,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇹🇭 泰国-广东专线 Bangmod","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32043,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇹🇷 土耳其-广东专线 Kapteyan","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32014,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇹🇷 土耳其-广东专线 GCore","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32026,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇦🇷 阿根廷-广东专线 DonWeb","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32015,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇳🇬 尼日利亚-广东专线 Melbicom","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32034,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇺🇦 乌克兰-广东专线 Vik","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32019,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇧🇷 巴西-广东专线 GCore 1","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32016,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇧🇷 巴西-广东专线 GCore 2","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32025,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇮🇳 印度-广东专线 DOIN","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32017,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇮🇳 印度-广东专线 GCore","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32024,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇸🇦 沙特-广东专线 STC","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32035,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}
+  - {"name":"🇦🇶 南极-广东专线 WARP","password":"f2e8e50c-ffb8-48a1-a460-2e72dfaf7845","port":32041,"server":"lbso.bnnodeservice.com","sni":"cert.bitbyte.one","type":"trojan","udp":true}

+ 107 - 0
porxy_tools/clash/merge2config.py

@@ -0,0 +1,107 @@
+# -*- coding: utf-8 -*-
+import os
+import copy
+import yaml
+
+file_name = 'merge.yaml'
+
+filter_proxy_group = ['HK', '香港', 'TW', '台湾', 'JP', '日本', '马来西亚', 'SG', '新加坡']
+
+web3_config_file = {
+    "mixed-port": 7890,
+    "allow-lan": True,
+    "bind-address": "*",
+    "mode": "rule",
+    "log-level": "info",
+    "external-controller": "0.0.0.0:9090",
+    "secret": "",
+    "dns": {
+        "enable": False,
+        "ipv6": False,
+        "nameserver": [],
+        "fallback": []
+    },
+    "proxies": [],
+    "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}],
+}
+
+depin_config_file = {
+    "mixed-port": 7890,
+    "allow-lan": True,
+    "bind-address": "*",
+    "mode": "rule",
+    "log-level": "info",
+    "external-controller": "0.0.0.0:9090",
+    "secret": "",
+    "dns": {
+        "enable": False,
+        "ipv6": False,
+        "nameserver": [],
+        "fallback": []
+    },
+    "proxies": [],
+    "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}],
+}
+
+
+def process_yaml_file():
+    web3_proxy_list = []
+    depin_proxy_list = []
+    data = None
+    with open(file_name, 'r', encoding='utf-8') as file:
+        data = yaml.safe_load(file)
+
+    if not data:
+        print(f"Error reading {file_name}")
+        return
+
+    proxies = data['proxies']
+    for proxy in proxies:
+        if '剩余流量' in proxy['name']:
+            continue
+        if '套餐到期' in proxy['name']:
+            continue
+
+        # 默认将代理节点归类到 depin_proxy_list
+        is_web3_proxy = False
+
+        for keyword in filter_proxy_group:
+            if keyword in proxy['name']:
+                # 如果匹配到关键词,则归类到 web3_proxy_list
+                web3_proxy_list.append(proxy)
+                is_web3_proxy = True
+                break
+
+        if not is_web3_proxy:
+            # 如果没有匹配到任何关键词,则归类到 depin_proxy_list
+            depin_proxy_list.append(proxy)
+
+    web3_proxy_list_sorted = sorted(web3_proxy_list, key=lambda x: x['name'] if 'name' in x else '')
+    depin_proxy_list_sorted = sorted(depin_proxy_list, key=lambda x: x['name'] if 'name' in x else '')
+
+    return web3_proxy_list_sorted, depin_proxy_list_sorted
+
+
+def create_config_file(web3_proxy_list_sorted, depin_proxy_list_sorted):
+    web3_config_file['proxies'] = web3_proxy_list_sorted
+    depin_config_file['proxies'] = depin_proxy_list_sorted
+
+    for web3 in web3_proxy_list_sorted:
+        web3_config_file['proxy-groups'][0]['proxies'].append(web3['name'])
+
+    for depin in depin_proxy_list_sorted:
+        depin_config_file['proxy-groups'][0]['proxies'].append(depin['name'])
+
+
+if __name__ == '__main__':
+    web3_proxy_list_sorted, depin_proxy_list_sorted = process_yaml_file()
+
+    create_config_file(web3_proxy_list_sorted, depin_proxy_list_sorted)
+
+    with open(f'config_web3.yaml', 'w', encoding='utf-8') as file:
+        yaml.dump(web3_config_file, file, allow_unicode=True, default_flow_style=False)
+
+    with open(f'config_depin.yaml', 'w', encoding='utf-8') as file:
+        yaml.dump(depin_config_file, file, allow_unicode=True, default_flow_style=False)
+
+    print('done!')

+ 163 - 0
porxy_tools/clash/switch_random_proxy_depin.py

@@ -0,0 +1,163 @@
+# -*- coding: utf-8 -*-
+'''
+切换到随机代理
+'''
+import random
+from urllib.parse import quote
+import httpx
+import time
+import subprocess
+from typing import List
+
+BASE_URL = "http://192.168.31.201"
+
+PORT_LIST = ['32001', '32002', '32003', '32004', '32005', '32006', '32007', '32008', '32009', '32010', '32011', '32012']
+
+PROXY_GROUP = ['香港', 'HK', '新加坡', 'SG', '台湾', 'TW', '日本', 'JP', '韩国', '澳门']
+
+GROUP = 2
+
+
+class ClashProxyManager:
+    def __init__(self, base_url, base_port):
+        self.key_group = 0
+        self.base_url = base_url
+        self.base_port = base_port
+        self.all_proxies = []
+        self.used_proxy = []
+
+    def get_all_proxies(self, clash_tool_url: str) -> List[str]:
+        # 连接其中一个代理服务器, 获取所有代理节点, 因为每个代理服务器的所有节点都是一样的, 所以获取一个就行了
+        url = f"{clash_tool_url}/api/proxies"
+        try:
+            response = httpx.get(url)
+            response.raise_for_status()
+            proxies = response.json()
+            # 输出读取的所有代理信息
+            # for proxy_name, proxy_info in proxies['proxies'].items():
+            #     logging.info(f"Name: {proxy_name}, Type: {proxy_info.get('type', 'Unknown')}")
+            proxy_list = list(proxies['proxies'].keys())
+
+            result_data = []
+
+            if GROUP == 1:
+                for filtered in proxy_list:
+                    for group in PROXY_GROUP:
+                        if group.lower() in filtered.lower() and filtered not in {'REJECT', 'GLOBAL', 'DIRECT'}:
+                            result_data.append(filtered)
+            elif GROUP == 2:
+                for filtered in proxy_list:
+                    if all(group.lower() not in filtered.lower() for group in PROXY_GROUP) and filtered not in {
+                        'REJECT', 'GLOBAL', 'DIRECT'}:
+                        result_data.append(filtered)
+            else:
+                print(f'选择代理组为 {GROUP}')
+                exit(1)
+            print(f'读取所有代理节点, 一共 {len(result_data)} 个节点')
+            return result_data
+        except Exception as e:
+            print(f"Failed to get proxies: {e}")
+            return []
+
+    def switch_proxy(self, proxy_name: str, url_and_port: str) -> None:
+        # 根据节点名称和代理服务器url, 切换到指定的代理节点
+        url = f"{url_and_port}/api/proxies/GLOBAL"
+        data = {"name": proxy_name}
+        try:
+            response = httpx.put(url, json=data)
+            if response.status_code == 204:
+                print(f"Switched to proxy: {proxy_name}")
+            else:
+                print(f"Failed to switch proxy: {response.status_code} - {proxy_name}")
+        except Exception as e:
+            print(f"Failed to switch proxy: {e}")
+
+    def update_configs(self):
+        for base_port in self.base_port:
+            url_and_port = self.base_url + ":" + base_port
+            key = "/api/configs"
+            url = url_and_port + key
+
+            # 构造 curl 命令
+            curl_cmd = [
+                "curl",
+                "-X", "PATCH",
+                url,
+                "-H", "Content-Type: application/json",
+                "-d", '{"mode": "Global"}'
+            ]
+
+            try:
+                # 使用 subprocess 运行 curl 命令
+                result = subprocess.run(curl_cmd, capture_output=True, text=True, check=True)
+
+                # 检查 curl 命令的返回状态
+                if result.returncode != 0:
+                    print(f"请求失败,状态码: {result.returncode}")
+                    print("错误信息:", result.stderr.strip())
+            except subprocess.CalledProcessError as exc:
+                print(f"请求失败: {exc}")
+                print("错误信息:", exc.stderr.strip())
+
+    def check_proxy(self, proxy_url, choose_proxy):
+        encode_proxy_name = quote(choose_proxy, safe="")
+        command = [
+            "curl",
+            "-X", "GET",
+            f"{proxy_url}/api/proxies/{encode_proxy_name}/delay?timeout=5000&url=http:%2F%2Fwww.gstatic.com%2Fgenerate_204"
+        ]
+
+        try:
+            result = subprocess.run(command, capture_output=True, text=True, check=True)
+            print("Output:", result.stdout)
+            if 'Timeout' in result.stdout:
+                return False
+            return True
+        except subprocess.CalledProcessError as e:
+            print("Error:", e.stderr)
+            return False
+
+    def main(self) -> None:
+        self.update_configs()
+
+        if not self.all_proxies:
+            for port_list in self.base_port:
+                base_url = self.base_url + ":" + port_list
+                clash_tool_url = f"{base_url}"
+                self.all_proxies = self.get_all_proxies(clash_tool_url)
+                if self.all_proxies:
+                    break
+
+        if not self.all_proxies:
+            return
+        else:
+            print(f'待切换节点一共 {len(self.all_proxies)} 个')
+
+        for base_port in self.base_port:
+            url_and_port = self.base_url + ":" + base_port
+            while True:
+                choose_proxy = random.choice(self.all_proxies)
+                if choose_proxy in self.used_proxy:
+                    if len(self.used_proxy) >= len(self.all_proxies):
+                        print('=' * 88)
+                        print(f'所有节点已尝试过, 退出')
+                        print('=' * 88)
+                        return
+                    continue
+
+                self.switch_proxy(choose_proxy, url_and_port)
+
+                self.used_proxy.append(choose_proxy)
+
+                if self.check_proxy(url_and_port, choose_proxy):
+                    print(f"代理 {choose_proxy} 切换成功,检测通过!")
+                    print('=' * 88)
+                    break
+                else:
+                    print(f"{url_and_port} 切换 xxxxxxxx {choose_proxy} xxxxxxxx 检测失败")
+                    time.sleep(1)
+
+
+if __name__ == "__main__":
+    manager = ClashProxyManager(BASE_URL, PORT_LIST)
+    manager.main()

+ 163 - 0
porxy_tools/clash/switch_random_proxy_web3.py

@@ -0,0 +1,163 @@
+# -*- coding: utf-8 -*-
+'''
+切换到随机代理
+'''
+import random
+from urllib.parse import quote
+import httpx
+import time
+import subprocess
+from typing import List
+
+BASE_URL = "http://192.168.31.194"
+
+PORT_LIST = ['58001', '58002', '58003', '58004', '58005', '58006', '58007', '58008', '58009', '58010']
+
+PROXY_GROUP = ['香港', 'HK', '新加坡', 'SG', '台湾', 'TW', '日本', 'JP', '韩国', '澳门']
+
+GROUP = 1
+
+
+class ClashProxyManager:
+    def __init__(self, base_url, base_port):
+        self.key_group = 0
+        self.base_url = base_url
+        self.base_port = base_port
+        self.all_proxies = []
+        self.used_proxy = []
+
+    def get_all_proxies(self, clash_tool_url: str) -> List[str]:
+        # 连接其中一个代理服务器, 获取所有代理节点, 因为每个代理服务器的所有节点都是一样的, 所以获取一个就行了
+        url = f"{clash_tool_url}/api/proxies"
+        try:
+            response = httpx.get(url)
+            response.raise_for_status()
+            proxies = response.json()
+            # 输出读取的所有代理信息
+            # for proxy_name, proxy_info in proxies['proxies'].items():
+            #     logging.info(f"Name: {proxy_name}, Type: {proxy_info.get('type', 'Unknown')}")
+            proxy_list = list(proxies['proxies'].keys())
+
+            result_data = []
+
+            if GROUP == 1:
+                for filtered in proxy_list:
+                    for group in PROXY_GROUP:
+                        if group.lower() in filtered.lower() and filtered not in {'REJECT', 'GLOBAL', 'DIRECT'}:
+                            result_data.append(filtered)
+            elif GROUP == 2:
+                for filtered in proxy_list:
+                    if all(group.lower() not in filtered.lower() for group in PROXY_GROUP) and filtered not in {
+                        'REJECT', 'GLOBAL', 'DIRECT'}:
+                        result_data.append(filtered)
+            else:
+                print(f'选择代理组为 {GROUP}')
+                exit(1)
+            print(f'读取所有代理节点, 一共 {len(result_data)} 个节点')
+            return result_data
+        except Exception as e:
+            print(f"Failed to get proxies: {e}")
+            return []
+
+    def switch_proxy(self, proxy_name: str, url_and_port: str) -> None:
+        # 根据节点名称和代理服务器url, 切换到指定的代理节点
+        url = f"{url_and_port}/api/proxies/GLOBAL"
+        data = {"name": proxy_name}
+        try:
+            response = httpx.put(url, json=data)
+            if response.status_code == 204:
+                print(f"Switched to proxy: {proxy_name}")
+            else:
+                print(f"Failed to switch proxy: {response.status_code} - {proxy_name}")
+        except Exception as e:
+            print(f"Failed to switch proxy: {e}")
+
+    def update_configs(self):
+        for base_port in self.base_port:
+            url_and_port = self.base_url + ":" + base_port
+            key = "/api/configs"
+            url = url_and_port + key
+
+            # 构造 curl 命令
+            curl_cmd = [
+                "curl",
+                "-X", "PATCH",
+                url,
+                "-H", "Content-Type: application/json",
+                "-d", '{"mode": "Global"}'
+            ]
+
+            try:
+                # 使用 subprocess 运行 curl 命令
+                result = subprocess.run(curl_cmd, capture_output=True, text=True, check=True)
+
+                # 检查 curl 命令的返回状态
+                if result.returncode != 0:
+                    print(f"请求失败,状态码: {result.returncode}")
+                    print("错误信息:", result.stderr.strip())
+            except subprocess.CalledProcessError as exc:
+                print(f"请求失败: {exc}")
+                print("错误信息:", exc.stderr.strip())
+
+    def check_proxy(self, proxy_url, choose_proxy):
+        encode_proxy_name = quote(choose_proxy, safe="")
+        command = [
+            "curl",
+            "-X", "GET",
+            f"{proxy_url}/api/proxies/{encode_proxy_name}/delay?timeout=5000&url=http:%2F%2Fwww.gstatic.com%2Fgenerate_204"
+        ]
+
+        try:
+            result = subprocess.run(command, capture_output=True, text=True, check=True)
+            print("Output:", result.stdout)
+            if 'Timeout' in result.stdout:
+                return False
+            return True
+        except subprocess.CalledProcessError as e:
+            print("Error:", e.stderr)
+            return False
+
+    def main(self) -> None:
+        self.update_configs()
+
+        if not self.all_proxies:
+            for port_list in self.base_port:
+                base_url = self.base_url + ":" + port_list
+                clash_tool_url = f"{base_url}"
+                self.all_proxies = self.get_all_proxies(clash_tool_url)
+                if self.all_proxies:
+                    break
+
+        if not self.all_proxies:
+            return
+        else:
+            print(f'待切换节点一共 {len(self.all_proxies)} 个')
+
+        for base_port in self.base_port:
+            url_and_port = self.base_url + ":" + base_port
+            while True:
+                choose_proxy = random.choice(self.all_proxies)
+                if choose_proxy in self.used_proxy:
+                    if len(self.used_proxy) >= len(self.all_proxies):
+                        print('=' * 88)
+                        print(f'所有节点已尝试过, 退出')
+                        print('=' * 88)
+                        return
+                    continue
+
+                self.switch_proxy(choose_proxy, url_and_port)
+
+                self.used_proxy.append(choose_proxy)
+
+                if self.check_proxy(url_and_port, choose_proxy):
+                    print(f"代理 {choose_proxy} 切换成功,检测通过!")
+                    print('=' * 88)
+                    break
+                else:
+                    print(f"{url_and_port} 切换 xxxxxxxx {choose_proxy} xxxxxxxx 检测失败")
+                    time.sleep(1)
+
+
+if __name__ == "__main__":
+    manager = ClashProxyManager(BASE_URL, PORT_LIST)
+    manager.main()

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.