From 9bf2edede9a6395c0ddc6a91958ca96b5ef4f94b Mon Sep 17 00:00:00 2001 From: ghol Date: Fri, 9 Jan 2026 22:08:37 +0000 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E3=80=8Cz.ai/ip-replace=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- z.ai/ip-replace/vmess-replace.php | 253 ++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 z.ai/ip-replace/vmess-replace.php diff --git a/z.ai/ip-replace/vmess-replace.php b/z.ai/ip-replace/vmess-replace.php new file mode 100644 index 0000000..048fa9a --- /dev/null +++ b/z.ai/ip-replace/vmess-replace.php @@ -0,0 +1,253 @@ + 0) { + $b64 .= str_repeat('=', 4 - $mod); + } + + $json_str = base64_decode($b64, true); + if ($json_str === false) { + return [false, null]; + } + + $data = json_decode($json_str, true); + if (!is_array($data)) { + return [false, null]; + } + + return [true, $data]; +} + +// 辅助函数:将配置重新编码为 vmess 行 +function build_vmess_line(array $data): string { + $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + $b64 = base64_encode($json); + return 'vmess://' . $b64; +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $target_ip = trim($_POST['target_ip'] ?? ''); + $original_content = trim($_POST['content'] ?? ''); + $replace_from = trim($_POST['replace_from'] ?? ''); + $replace_to = trim($_POST['replace_to'] ?? ''); + + if ($original_content !== '') { + $lines = preg_split("/\r\n|\n|\r/", $original_content); + $result_lines = []; + + foreach ($lines as $line) { + $raw_line = rtrim($line, "\r\n"); + if (trim($raw_line) === '') { + $result_lines[] = $raw_line; + continue; + } + + [$ok, $data] = parse_vmess_line($raw_line); + if (!$ok) { + // 不是合法的 vmess 链接,原样返回 + $result_lines[] = $raw_line; + continue; + } + + // 1. 替换 IP:修改 JSON 中的 add 字段 + if ($target_ip !== '') { + $data['add'] = $target_ip; + } + + // 2. 批量字符串替换:在所有字符串字段中做 str_replace + if ($replace_from !== '' && $replace_to !== '') { + array_walk_recursive($data, function (&$value) use ($replace_from, $replace_to) { + if (is_string($value) && $value !== '') { + $value = str_replace($replace_from, $replace_to, $value); + } + }); + } + + $result_lines[] = build_vmess_line($data); + } + + $result_content = implode(PHP_EOL, $result_lines); + } +} else { + // 默认演示文本:一条 vmess 链接示例 + $original_content = "vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogIkFsaVBDLUdHWS1TaGFyZS1CZXN0dm0tU0ciLA0KICAiYWRkIjogIjEuMS4xLjEiLA0KICAicG9ydCI6ICIzMzg4OCIsDQogICJpZCI6ICI3N2MwYWFmZC03MTNhLTQwZDUtYmI2MS1mZWMyN2JiMTI0MTEiLA0KICAiYWlkIjogIjAiLA0KICAic2N5IjogImF1dG8iLA0KICAibmV0IjogInRjcCIsDQogICJ0eXBlIjogIm5vbmUiLA0KICAiaG9zdCI6ICIiLA0KICAicGF0aCI6ICIiLA0KICAidGxzIjogIiIsDQogICJzbmkiOiAiIiwNCiAgImFscG4iOiAiIiwNCiAgImZwIjogIiIsDQogICJpbnNlY3VyZSI6ICIwIg0KfQ=="; + $result_content = $original_content; // 默认结果显示原样 +} +?> + + + + + + + vmess 批量替换工具 + + + + +
+

vmess 批量替换工具

+ +
+
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+
+
+ 原始 vmess 地址(每行一条) + Input +
+ +
+ +
+
+ 替换后的 vmess 地址 + Output +
+ +
+
+ +
+ +
+
+
+ + +