diff --git a/src/services/proxy.ts b/src/services/proxy.ts
index 6cb06d6c47c216b7e2c4571491994ed0da7de27e..c9d6d752433ab2e42215598e95328d7b1d67d07f 100644
--- a/src/services/proxy.ts
+++ b/src/services/proxy.ts
@@ -12,35 +12,39 @@ export interface ProxyItem {
   now?: string;
 }
 
-export type ProxyGroupItem = Omit<ProxyItem, "all" | "now"> & {
-  all?: ProxyItem[];
-  now?: string;
+export type ProxyGroupItem = Omit<ProxyItem, "all"> & {
+  all: ProxyItem[];
 };
 
 /// Get the Proxy infomation
 export async function getProxyInfo() {
   const response = (await axiosIns.get("/proxies")) as any;
-  const results = (response?.proxies ?? {}) as Record<string, ProxyItem>;
-
-  const global = results["GLOBAL"] || results["global"];
-  const proxies = Object.values(results).filter((each) => each.all == null);
-
-  const groups = Object.values(results).filter(
-    (each) => each.name.toLocaleUpperCase() !== "GLOBAL" && each.all != null
-  ) as ProxyGroupItem[];
-
-  groups.forEach((each) => {
-    // @ts-ignore
-    each.all = each.all?.map((item) => results[item]).filter((e) => e);
-  });
-
-  groups.sort((a, b) => b.name.localeCompare(a.name));
-
-  return {
-    global,
-    groups,
-    proxies,
-  };
+  const proxies = (response?.proxies ?? {}) as Record<string, ProxyItem>;
+
+  const global = proxies["GLOBAL"];
+  const order = global?.all;
+
+  let groups: ProxyGroupItem[] = [];
+
+  if (order) {
+    groups = order
+      .filter((name) => proxies[name]?.all)
+      .map((name) => proxies[name])
+      .map((each) => ({
+        ...each,
+        all: each.all!.map((item) => proxies[item]),
+      }));
+  } else {
+    groups = Object.values(proxies)
+      .filter((each) => each.name !== "GLOBAL" && each.all)
+      .map((each) => ({
+        ...each,
+        all: each.all!.map((item) => proxies[item]),
+      }));
+    groups.sort((a, b) => b.name.localeCompare(a.name));
+  }
+
+  return { global, groups, proxies };
 }
 
 /// Update the Proxy Choose