update 2024-10-26 16:23:41

This commit is contained in:
kenzok8 2024-10-26 16:23:41 +08:00
parent c63d2f26c1
commit f972b8f273
12 changed files with 1380 additions and 707 deletions

View File

@ -1,6 +1,6 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=1.9.0
PKG_VERSION:=1.9.1
LUCI_TITLE:=LuCI Support for mihomo
LUCI_DEPENDS:=+luci-base +mihomo

View File

@ -41,6 +41,22 @@ function getSingboxVersion() {
$singBoxVersion = getSingboxVersion();
?>
<?php
function getUiVersion() {
$versionFile = '/etc/neko/ui/metacubexd/version.txt';
if (file_exists($versionFile)) {
return trim(file_get_contents($versionFile));
} else {
return "版本文件不存在";
}
}
$uiVersion = getUiVersion();
?>
<!doctype html>
<html lang="en" data-bs-theme="<?php echo substr($neko_theme,0,-4) ?>">
<head>
@ -53,6 +69,7 @@ $singBoxVersion = getSingboxVersion();
<link href="./assets/css/custom.css" rel="stylesheet">
<script type="text/javascript" src="./assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="./assets/js/feather.min.js"></script>
<script type="text/javascript" src="./assets/bootstrap/bootstrap.bundle.min.js"></script>
<script type="text/javascript" src="./assets/js/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="./assets/js/neko.js"></script>
</head>
@ -99,42 +116,55 @@ $singBoxVersion = getSingboxVersion();
<tr>
<td colspan="2">
<div class="row">
<div class="col-md-4 mb-3">
<div class="col-md-6 mb-3">
<div class="text-center">
<h3>客户端版本</h3>
<div class="form-control text-center" style="font-family: monospace; text-align: center;">
<span id="cliver"></span>&nbsp;<span id="NewCliver"> </span>
</div>
<div class="text-center mt-2">
<button class="btn btn-cyan" id="checkCliverButton">🔍 检测</button>
<button class="btn btn-info" id="updateButton" title="更新到最新版本">🔄 更新</button>
<button class="btn btn-pink" id="checkCliverButton">🔍 检测版本</button>
<button class="btn btn-info" id="updateButton" title="更新到最新版本">🔄 更新版本</button>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="col-md-6 mb-3">
<div class="text-center">
<h3>Sing-box核心版本</h3>
<h3>Metacubexd 面板</h3>
<div class="form-control text-center">
<?php echo htmlspecialchars($uiVersion); ?>&nbsp;<span id="NewUi"> </span>
</div>
<div class="text-center mt-2">
<button class="btn btn-pink" id="checkUiButton">🔍 检测版本</button>
<button class="btn btn-info" id="updateUiButton" title="更新 Metacubexd 面板">🔄 更新版本</button>
</div>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="text-center">
<h3>Sing-box 核心版本</h3>
<div class="form-control text-center">
<div id="singBoxCorever">
<?php echo htmlspecialchars($singBoxVersion); ?>&nbsp;<span id="NewSingbox"></span>
</div>
</div>
<div class="text-center mt-2">
<button class="btn btn-cyan" id="checkSingboxButton">🔍 检测</button>
<button class="btn btn-pink" id="updateSingboxButton" title="更新 Singbox 内核">🔄 更新</button>
<button class="btn btn-info" id="updatePuernyaButton" title="切换 Puernya 内核">🔄 切换</button>
<button class="btn btn-pink" id="checkSingboxButton">🔍 检测版本</button>
<button class="btn btn-success" id="updatePuernyaButton" title="切换 Puernya 内核">🔄 切换内核</button>
<button class="btn btn-info" id="updateSingboxButton" title="更新 Singbox 内核">🔄 更新版本</button>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="col-md-6 mb-3">
<div class="text-center">
<h3>Mihomo核心版本</h3>
<h3>Mihomo 核心版本</h3>
<div class="form-control text-center">
<span id="corever"></span>&nbsp;<span id="NewMihomo"> </span>
</div>
<div class="text-center mt-2">
<button class="btn btn-cyan" id="checkMihomoButton">🔍 检测</button>
<button class="btn btn-success" id="updateCoreButton" title="更新 Mihomo 内核">🔄 更新</button>
<button class="btn btn-pink" id="checkMihomoButton">🔍 检测版本</button>
<button id="updateConfigButton" class="btn btn-primary" title="更新 Mihomo 配置文件">🔄 更新配置</button>
<button class="btn btn-info" id="updateCoreButton" title="更新 Mihomo 内核">🔄 更新版本</button>
</div>
</div>
</div>
@ -143,267 +173,235 @@ $singBoxVersion = getSingboxVersion();
</tr>
</tbody>
</table>
<div class="modal fade" id="updateModal" tabindex="-1" role="dialog" aria-labelledby="updateModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="updateModalLabel">更新状态</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<pre id="logOutput">开始下载更新...</pre>
</div>
</div>
</div>
</div>
<div id="logOutput" class="mt-3"></div>
<div id="logOutput" class="mt-3"></div>
<style>
.table-container {
overflow-x: auto;
}
<style>
.table-container {
overflow-x: auto;
}
.table {
width: 100%;
border-collapse: collapse;
}
.table {
width: 100%;
border-collapse: collapse;
}
.table td {
padding: 10px;
word-wrap: break-word;
}
.table td {
padding: 10px;
word-wrap: break-word;
}
.form-control {
width: 100%;
}
.form-control {
width: 100%;
}
.btn {
white-space: nowrap;
flex: 1;
}
.btn {
white-space: nowrap;
flex: 1;
}
@media (max-width: 767px) {
.table td {
display: block;
width: 100%;
}
@media (max-width: 767px) {
.table td {
display: block;
width: 100%;
}
.form-control {
display: flex;
flex-direction: column;
}
.form-control {
display: flex;
flex-direction: column;
}
.btn-group {
flex-direction: column;
}
}
.btn-group {
flex-direction: column;
}
}
#updateButton:hover {
background-color: #20B2AA;
}
#updateButton:hover {
background-color: #20B2AA;
}
#updateSingboxButton:hover {
background-color: #FF69B4;
}
#updateSingboxButton:hover {
background-color: #FF69B4;
}
#updateCoreButton:hover {
background-color: #90EE90;
}
#updateCoreButton:hover {
background-color: #90EE90;
}
#updatePuernyaButton:hover {
background-color: #87CEFA;
}
</style>
#updatePuernyaButton:hover {
background-color: #87CEFA;
}
</style>
<script>
document.getElementById('updateButton').addEventListener('click', function() {
function initiateUpdate(url, logMessage) {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'update_script.php', true);
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
document.getElementById('logOutput').innerHTML = '开始下载更新...';
$('#updateModal').modal('show');
document.getElementById('logOutput').textContent = logMessage;
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('logOutput').innerHTML += '\n更新完成';
document.getElementById('logOutput').innerHTML += '\n' + xhr.responseText;
document.getElementById('logOutput').textContent += '\n更新完成';
document.getElementById('logOutput').textContent += '\n' + xhr.responseText;
setTimeout(function() {
location.reload();
}, 3000);
$('#updateModal').modal('hide');
setTimeout(function() {
location.reload();
}, 500);
}, 10000);
} else {
document.getElementById('logOutput').innerHTML += '\n发生错误' + xhr.statusText;
document.getElementById('logOutput').textContent += '\n发生错误' + xhr.statusText;
}
};
xhr.onerror = function() {
document.getElementById('logOutput').textContent += '\n网络错误请稍后再试。';
};
xhr.send();
}
document.getElementById('updateButton').addEventListener('click', function() {
initiateUpdate('update_script.php', '开始下载更新...');
});
document.getElementById('updateSingboxButton').addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'singbox.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
document.getElementById('logOutput').innerHTML = '开始下载核心更新...';
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('logOutput').innerHTML += '\n核心更新完成';
document.getElementById('logOutput').innerHTML += '\n' + xhr.responseText;
setTimeout(function() {
location.reload();
}, 3000);
} else {
document.getElementById('logOutput').innerHTML += '\n发生错误' + xhr.statusText;
}
};
xhr.send();
initiateUpdate('singbox.php', '开始下载 Singbox 核心更新...');
});
document.getElementById('updatePuernyaButton').addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'puernya.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
document.getElementById('logOutput').innerHTML = '开始下载核心更新...';
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('logOutput').innerHTML += '\n核心更新完成';
document.getElementById('logOutput').innerHTML += '\n' + xhr.responseText;
setTimeout(function() {
location.reload();
}, 3000);
} else {
document.getElementById('logOutput').innerHTML += '\n发生错误' + xhr.statusText;
}
};
xhr.send();
initiateUpdate('puernya.php', '开始下载 Puernya 核心更新...');
});
document.getElementById('updateCoreButton').addEventListener('click', function() {
initiateUpdate('core.php', '开始下载 Mihomo 核心更新...');
});
document.getElementById('updateUiButton').addEventListener('click', function() {
initiateUpdate('ui.php', '开始下载 UI 面板更新...');
});
</script>
<script>
document.getElementById('updateConfigButton').addEventListener('click', function() {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'core.php', true);
xhr.open('POST', 'update_config.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
document.getElementById('logOutput').innerHTML = '开始下载核心更新...';
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('logOutput').innerHTML += '\n核心更新完成';
document.getElementById('logOutput').innerHTML += '\n' + xhr.responseText;
setTimeout(function() {
location.reload();
}, 3000);
alert(xhr.responseText);
} else {
document.getElementById('logOutput').innerHTML += '\n发生错误' + xhr.statusText;
alert('更新失败,请稍后重试。');
}
};
xhr.send();
xhr.send('action=update_config');
});
</script>
<script>
function checkVersion(buttonId, outputId, url) {
document.getElementById(outputId).innerHTML = '正在检查新版本...';
var xhr = new XMLHttpRequest();
xhr.open('GET', url + '?check_version=true', true);
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById(outputId).innerHTML = xhr.responseText;
} else {
document.getElementById(outputId).innerHTML = '版本检测失败,请稍后重试。';
}
};
xhr.onerror = function() {
document.getElementById(outputId).innerHTML = '网络错误,请稍后重试';
};
xhr.send();
}
document.getElementById('checkCliverButton').addEventListener('click', function() {
document.getElementById('NewCliver').innerHTML = '正在检查新版本...';
var xhr = new XMLHttpRequest();
xhr.open('GET', 'update_script.php?check_version=true', true);
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('NewCliver').innerHTML = xhr.responseText;
} else {
document.getElementById('NewCliver').innerHTML = '版本检测失败,请稍后重试。';
}
};
xhr.onerror = function() {
document.getElementById('NewCliver').innerHTML = '网络错误,请稍后重试';
};
xhr.send();
checkVersion('checkCliverButton', 'NewCliver', 'update_script.php');
});
</script>
<script>
document.getElementById('checkMihomoButton').addEventListener('click', function() {
document.getElementById('NewMihomo').innerHTML = '正在检查新版本...';
var xhr = new XMLHttpRequest();
xhr.open('GET', 'core.php?check_version=true', true);
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('NewMihomo').innerHTML = xhr.responseText;
} else {
document.getElementById('NewMihomo').innerHTML = '版本检测失败,请稍后重试。';
}
};
xhr.onerror = function() {
document.getElementById('NewMihomo').innerHTML = '网络错误,请稍后重试';
};
xhr.send();
checkVersion('checkMihomoButton', 'NewMihomo', 'core.php');
});
</script>
<script>
document.getElementById('checkSingboxButton').addEventListener('click', function() {
document.getElementById('NewSingbox').innerHTML = '正在检查新版本...';
var xhr = new XMLHttpRequest();
xhr.open('GET', 'singbox.php?check_version=true', true);
xhr.onload = function() {
if (xhr.status === 200) {
document.getElementById('NewSingbox').innerHTML = xhr.responseText;
} else {
document.getElementById('NewSingbox').innerHTML = '版本检测失败,请稍后重试。';
}
};
xhr.onerror = function() {
document.getElementById('NewSingbox').innerHTML = '网络错误,请稍后重试';
};
xhr.send();
checkVersion('checkSingboxButton', 'NewSingbox', 'singbox.php');
});
document.getElementById('checkUiButton').addEventListener('click', function() {
checkVersion('checkUiButton', 'NewUi', 'ui.php');
});
</script>
<script>
function compareVersions(v1, v2) {
const v1parts = v1.split(/[-.]/).filter(x => x !== 'alpha' && x !== 'beta');
const v2parts = v2.split(/[-.]/).filter(x => x !== 'alpha' && x !== 'beta');
for (let i = 0; i < Math.max(v1parts.length, v2parts.length); ++i) {
const v1part = parseInt(v1parts[i]) || 0;
const v2part = parseInt(v2parts[i]) || 0;
function compareVersions(v1, v2) {
const v1parts = v1.split(/[-.]/).filter(x => x !== 'alpha' && x !== 'beta');
const v2parts = v2.split(/[-.]/).filter(x => x !== 'alpha' && x !== 'beta');
if (v1part > v2part) return 1;
if (v1part < v2part) return -1;
}
return 0;
}
function checkSingboxVersion() {
var currentVersion = '<?php echo getSingboxVersion(); ?>';
var minVersion = '1.10.0';
if (compareVersions(currentVersion, minVersion) >= 0) {
return;
for (let i = 0; i < Math.max(v1parts.length, v2parts.length); ++i) {
const v1part = parseInt(v1parts[i]) || 0;
const v2part = parseInt(v2parts[i]) || 0;
if (v1part > v2part) return 1;
if (v1part < v2part) return -1;
}
return 0;
}
var modalHtml = `
<div class="modal fade" id="versionWarningModal" tabindex="-1" aria-labelledby="versionWarningModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="versionWarningModalLabel">版本警告</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>您的 Sing-box 版本 (${currentVersion}) 低于推荐的最低版本 (v1.10.0)</p>
<p>请考虑升级到更高版本以获得最佳性能。</p>
function checkSingboxVersion() {
var currentVersion = '<?php echo getSingboxVersion(); ?>';
var minVersion = '1.10.0';
if (compareVersions(currentVersion, minVersion) >= 0) {
return;
}
var modalHtml = `
<div class="modal fade" id="versionWarningModal" tabindex="-1" aria-labelledby="versionWarningModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="versionWarningModalLabel">版本警告</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>您的 Sing-box 版本 (${currentVersion}) 低于推荐的最低版本 (v1.10.0)</p>
<p>请考虑升级到更高版本以获得最佳性能。</p>
</div>
</div>
</div>
</div>
</div>
`;
document.body.insertAdjacentHTML('beforeend', modalHtml);
var modal = new bootstrap.Modal(document.getElementById('versionWarningModal'));
modal.show();
setTimeout(function() {
modal.hide();
}, 5000);
}
`;
document.body.insertAdjacentHTML('beforeend', modalHtml);
var modal = new bootstrap.Modal(document.getElementById('versionWarningModal'));
modal.show();
setTimeout(function() {
modal.hide();
}, 5000);
}
document.addEventListener('DOMContentLoaded', checkSingboxVersion);
document.addEventListener('DOMContentLoaded', checkSingboxVersion);
</script>
<!DOCTYPE html>

View File

@ -195,14 +195,16 @@ if (!file_exists($subscriptionFile)) {
file_put_contents($subscriptionFile, json_encode([]));
}
$subscriptions = json_decode(file_get_contents($subscriptionFile), true);
if (!$subscriptions) {
for ($i = 0; $i < 3; $i++) {
$subscriptions[$i] = [
if (!$subscriptions || !is_array($subscriptions)) {
$subscriptions = [];
for ($i = 1; $i <= 3; $i++) {
$subscriptions[$i - 1] = [
'url' => '',
'file_name' => "subscription_{$i}.yaml",
];
}
}
if (isset($_POST['saveSubscription'])) {
$index = intval($_POST['index']);
if ($index >= 0 && $index < 3) {

View File

@ -0,0 +1,84 @@
<?php
ini_set('memory_limit', '128M');
function logMessage($message) {
$logFile = '/var/log/sing-box_update.log';
$timestamp = date('Y-m-d H:i:s');
file_put_contents($logFile, "[$timestamp] $message\n", FILE_APPEND);
}
function getUiVersion() {
$versionFile = '/etc/neko/ui/metacubexd/version.txt';
if (file_exists($versionFile)) {
return trim(file_get_contents($versionFile));
} else {
return "版本文件不存在";
}
}
function writeVersionToFile($version) {
$versionFile = '/etc/neko/ui/metacubexd/version.txt';
file_put_contents($versionFile, $version);
}
$repo_owner = "MetaCubeX";
$repo_name = "metacubexd";
$api_url = "https://api.github.com/repos/$repo_owner/$repo_name/releases/latest";
$curl_command = "curl -s -H 'User-Agent: PHP' --connect-timeout 10 " . escapeshellarg($api_url);
$response = shell_exec($curl_command);
if ($response === false || empty($response)) {
logMessage("GitHub API 请求失败,可能是网络问题或 GitHub API 限制。");
die("GitHub API 请求失败。请检查网络连接或稍后重试。");
}
$data = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
logMessage("解析 GitHub API 响应时出错: " . json_last_error_msg());
die("解析 GitHub API 响应时出错: " . json_last_error_msg());
}
$latest_version = $data['tag_name'] ?? '';
$install_path = '/etc/neko/ui/metacubexd';
$temp_file = '/tmp/compressed-dist.tgz';
if (!is_dir($install_path)) {
mkdir($install_path, 0755, true);
}
$current_version = getUiVersion();
if (isset($_GET['check_version'])) {
if (trim($current_version) === trim($latest_version)) {
echo "当前版本已是最新: $current_version";
} else {
echo "最新版本: $latest_version";
}
exit;
}
$download_url = $data['assets'][0]['browser_download_url'] ?? '';
if (empty($download_url)) {
die("未找到下载链接,请检查发布版本的资源。");
}
exec("wget -O '$temp_file' '$download_url'", $output, $return_var);
if ($return_var !== 0) {
die("下载失败!");
}
exec("tar -xzf '$temp_file' -C '$install_path'", $output, $return_var);
if ($return_var !== 0) {
die("解压失败!");
}
writeVersionToFile($latest_version);
echo "更新完成!当前版本: $latest_version";
unlink($temp_file);
?>

View File

@ -0,0 +1,24 @@
<?php
if (isset($_POST['action']) && $_POST['action'] === 'update_config') {
$configFilePath = '/etc/neko/config/mihomo.yaml';
$url = 'https://raw.githubusercontent.com/Thaolga/openwrt-nekobox/nekobox/luci-app-nekobox/root/etc/neko/config/mihomo.yaml';
$ch = curl_init($url);
$fp = fopen($configFilePath, 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$success = curl_exec($ch);
curl_close($ch);
fclose($fp);
if ($success) {
echo "<script>alert('Mihomo 配置文件已更新成功!');</script>";
error_log("Mihomo 配置文件已更新成功!");
} else {
echo "<script>alert('配置文件更新失败!');</script>";
error_log("配置文件更新失败!");
}
}
?>

View File

@ -520,7 +520,7 @@
"tag": "🛫 ",
"type": "remote",
"download_url": "https://example.com/xxx/xxx&flag=clash",
"path": "./proxy/subscription_0.yaml",
"path": "./proxy/subscription_1.yaml",
"download_interval": "24h",
"download_ua": "clash.meta",
"includes": [
@ -534,7 +534,7 @@
"tag": "🛫. ",
"type": "remote",
"download_url": "https://example.com/xxx/xxx&flag=clash",
"path": "./proxy/subscription_1.yaml",
"path": "./proxy/subscription_2.yaml",
"download_interval": "24h",
"download_ua": "clash.meta",
"includes": [
@ -548,7 +548,7 @@
"tag": "🛫.. ",
"type": "remote",
"download_url": "https://example.com/xxx/xxx&flag=clash",
"path": "./proxy/subscription_2.yaml",
"path": "./proxy/subscription_3.yaml",
"download_interval": "24h",
"download_ua": "clash.meta",
"includes": [

View File

@ -1,367 +0,0 @@
######### 锚点 start #######
# 策略组相关
pr: &pr
type: select
proxies: [⚡️ 全局规则,🇭🇰 香港手动,🇹🇼 台湾手动,🇸🇬 新加坡手动,🇯🇵 日本手动,🇰🇷 韩国手动,🇺🇲 美国手动,🇩🇪 德国手动,🇭🇰 香港自动,🇹🇼 台湾自动,🇸🇬 新加坡自动,🇯🇵 日本自动,🇰🇷 韩国自动,🇺🇲 美国自动,🇩🇪 德国自动,其它地区,全部节点,DIRECT]
exclude-filter-list: &exclude-filter "网站|地址|剩余|过期|时间|有效|套餐|到期|tg|邀请|官网"
#这里是订阅更新和延迟测试相关的
p: &p
type: http
interval: 3600
health-check: {enable: true, url: https://1.1.1.1/generate_204, interval: 300}
#规则集相关
c: &c {type: http, interval: 86400, behavior: classical, format: text}
#延迟测试
t: &t {type: url-test, url: https://1.1.1.1/generate_204, interval: 300, tolerance: 50}
######### 锚点 end #######
# url 里填写自己的订阅,名称不能重复
proxy-providers:
provider1:
<<: *p
url: ""
path: ./proxy_provider/subscription_1.yaml
exclude-filter: *exclude-filter
override:
skip-cert-verify: true
provider2:
<<: *p
url: ""
path: ./proxy_provider/subscription_2.yaml
exclude-filter: *exclude-filter
override:
skip-cert-verify: true
provider3:
<<: *p
url: ""
path: ./proxy_provider/subscription_3.yaml
exclude-filter: *exclude-filter
override:
skip-cert-verify: true
provider4:
<<: *p
url: ""
path: ./proxy_provider/subscription_4.yaml
exclude-filter: *exclude-filter
override:
skip-cert-verify: true
redir-port: 7892
port: 7890
socks-port: 7891
mixed-port: 7893
mode: rule
log-level: info
allow-lan: true
unified-delay: true
external-controller: 0.0.0.0:9090
secret: Akun
bind-address: 0.0.0.0
external-ui: ui
tproxy-port: 7895
tcp-concurrent: true
enable-process: true
find-process-mode: always
ipv6: true
experimental:
ignore-resolve-fail: true
sniff-tls-sni: true
tracing: true
hosts:
"localhost": 127.0.0.1
profile:
store-selected: true
store-fake-ip: true
sniffer:
enable: true
sniff:
http: { ports: [1-442, 444-8442, 8444-65535], override-destination: true }
tls: { ports: [1-79, 81-8079, 8081-65535], override-destination: true }
force-domain:
- "+.v2ex.com"
- www.google.com
- google.com
skip-domain:
- Mijia Cloud
- dlg.io.mi.com
sniffing:
- tls
- http
port-whitelist:
- "80"
- "443"
tun:
enable: true
prefer-h3: true
listen: 0.0.0.0:53
stack: gvisor
dns-hijack:
- "any:53"
- "tcp://any:53"
auto-redir: true
auto-route: true
auto-detect-interface: true
dns:
enable: true
ipv6: true
default-nameserver:
- '1.1.1.1'
- '8.8.8.8'
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- 'stun.*.*'
- 'stun.*.*.*'
- '+.stun.*.*'
- '+.stun.*.*.*'
- '+.stun.*.*.*.*'
- '+.stun.*.*.*.*.*'
- '*.lan'
- '+.msftncsi.com'
- msftconnecttest.com
- 'time?.*.com'
- 'time.*.com'
- 'time.*.gov'
- 'time.*.apple.com'
- time-ios.apple.com
- 'time1.*.com'
- 'time2.*.com'
- 'time3.*.com'
- 'time4.*.com'
- 'time5.*.com'
- 'time6.*.com'
- 'time7.*.com'
- 'ntp?.*.com'
- 'ntp.*.com'
- 'ntp1.*.com'
- 'ntp2.*.com'
- 'ntp3.*.com'
- 'ntp4.*.com'
- 'ntp5.*.com'
- 'ntp6.*.com'
- 'ntp7.*.com'
- '+.pool.ntp.org'
- '+.ipv6.microsoft.com'
- speedtest.cros.wr.pvp.net
- network-test.debian.org
- detectportal.firefox.com
- cable.auth.com
- miwifi.com
- routerlogin.com
- routerlogin.net
- tendawifi.com
- tendawifi.net
- tplinklogin.net
- tplinkwifi.net
- '*.xiami.com'
- tplinkrepeater.net
- router.asus.com
- '*.*.*.srv.nintendo.net'
- '*.*.stun.playstation.net'
- '*.openwrt.pool.ntp.org'
- resolver1.opendns.com
- 'GC._msDCS.*.*'
- 'DC._msDCS.*.*'
- 'PDC._msDCS.*.*'
use-hosts: true
nameserver:
- '8.8.4.4'
- '1.0.0.1'
- "https://1.0.0.1/dns-query"
- "https://8.8.4.4/dns-query"
proxy-groups:
- name: ⚡️ 全局规则
type: select
proxies: [ 🇭🇰 香港手动,🇹🇼 台湾手动,🇸🇬 新加坡手动,🇯🇵 日本手动,🇰🇷 韩国手动,🇺🇲 美国手动,🇩🇪 德国手动,🇭🇰 香港自动,🇹🇼 台湾自动,🇸🇬 新加坡自动,🇯🇵 日本自动,🇰🇷 韩国自动,🇺🇲 美国自动,🇩🇪 德国自动,其它地区,全部节点,DIRECT]
- name: 🎥 Emby服务
<<: *pr
- name: 📲 电报信息
<<: *pr
- name: ✈️ 测速服务
<<: *pr
- name: 🇬 谷歌服务
<<: *pr
- name: 💎 Instagram
<<: *pr
- name: 📹 油管视频
<<: *pr
- name: Ⓜ️ 微软服务
<<: *pr
- name: 🤖 OpenAI
<<: *pr
- name: ▶️ 奈飞服务
<<: *pr
- name: 🎵 Spotify
<<: *pr
- name: 🐟 漏网之鱼
<<: *pr
#地区分组
- name: 🇭🇰 香港手动
type: select
include-all-providers: true
filter: "(?i)港|hk|hongkong|hong kong"
- name: 🇹🇼 台湾手动
type: select
include-all-providers: true
filter: "(?i)台|新北|彰化|TW|Taiwan"
- name: 🇸🇬 新加坡手动
type: select
include-all-providers: true
filter: "(?i)(新|sg|singapore)"
- name: 🇯🇵 日本手动
type: select
include-all-providers: true
filter: "(?i)日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan"
- name: 🇰🇷 韩国手动
type: select
include-all-providers: true
filter: "(?i)(KR|Korea|KOR|首尔|韩|韓|春川)"
- name: 🇺🇲 美国手动
type: select
include-all-providers: true
filter: "(?i)美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States"
- name: 🇩🇪 德国手动
type: select
include-all-providers: true
filter: "(?i)(德|DE|DEU|Germany)"
- name: 🇭🇰 香港自动
<<: *t
include-all-providers: true
filter: "(?i)港|hk|hongkong|hong kong"
- name: 🇹🇼 台湾自动
<<: *t
include-all-providers: true
filter: "(?i)台|新北|彰化|TW|Taiwan"
- name: 🇸🇬 新加坡自动
<<: *t
include-all-providers: true
filter: "(?i)(新|sg|singapore)"
- name: 🇯🇵 日本自动
<<: *t
include-all-providers: true
filter: "(?i)日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan"
- name: 🇰🇷 韩国自动
<<: *t
include-all-providers: true
filter: "(?i)(KR|Korea|KOR|首尔|韩|韓|春川)"
- name: 🇺🇲 美国自动
<<: *t
include-all-providers: true
filter: "(?i)美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States"
- name: 🇩🇪 德国自动
<<: *t
include-all-providers: true
filter: "(?i)(德|DE|DEU|Germany)"
- name: 其它地区
type: select
include-all-providers: true
filter: "(?i)^(?!.*(?:🇭🇰|🇯🇵|🇺🇸|🇸🇬|🇹🇼|港|hk|hongkong|台|tw|taiwan|日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan|德|DE|DEU|Germany|新|sg|KR|Korea|KOR|首尔|韩|韓|春川|singapore|美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States)).*"
- name: 全部节点
type: select
include-all-providers: true
rules:
- RULE-SET,lan,DIRECT
- RULE-SET,ChinaASN,DIRECT
- DST-PORT,8080,✈️ 测速服务
- RULE-SET,speedtest,✈️ 测速服务
- RULE-SET,emby,🎥 Emby服务
- RULE-SET,telegram,📲 电报信息
- RULE-SET,Instagram,💎 Instagram
- RULE-SET,openai,🤖 OpenAI
- RULE-SET,youtube,📹 油管视频
- RULE-SET,google,🇬 谷歌服务
- RULE-SET,microsoft,Ⓜ️ 微软服务
- RULE-SET,netflix,▶️ 奈飞服务
- RULE-SET,spotify,🎵 Spotify
- RULE-SET,geolocation-!cn,🐟 漏网之鱼
- MATCH,🐟 漏网之鱼
rule-providers:
lan:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Lan/Lan.list"
path: ./rules/Lan.list
ChinaASN:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/ChinaASN/ChinaASN.list"
path: ./rules/ChinaASN.list
emby:
<<: *c
url: "https://cf-workers-text2kv-eh7.pages.dev/emby.list?token=071496"
path: ./rules/emby.list
telegram:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Telegram/Telegram.list"
path: ./rules/telegram.list
speedtest:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Speedtest/Speedtest.list"
path: ./rules/speedtest.list
microsoft:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.list"
path: ./rules/microsoft.list
openai:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/OpenAI/OpenAI.list"
path: ./rules/OpenAI.list
Instagram:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Instagram/Instagram.list"
path: ./rules/Instagram.list
youtube:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/YouTube/YouTube.list"
path: ./rules/youtube.list
google:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.list"
path: ./rules/google.list
netflix:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.list"
path: ./rules/netflix.list
spotify:
<<: *c
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Spotify/Spotify.list"
path: ./rules/Spotify.list
geolocation-!cn:
<<: *c
url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/classical/geolocation-!cn.list"
path: ./rules/geolocation-!cn.list

View File

@ -137,26 +137,8 @@ filtered_lines: &filtered_lines # 处理重复节点
- *all
final_lines: *filtered_lines
# 备用应急
backup: &backup {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8], filter: "(?i)津巴布韦|🇿🇼|ZW|Zimbabwe|越南|🇻🇳|VNVietnam|乌克兰|🇺🇦|UA|Ukraine|土耳其|🇹🇷|Turkey|法国|都柏林|🇫🇷|FR|France|阿根廷|🇦🇷|AR|Argentina|印度|🇮🇳|IN|India|加拿大|🇨🇦|CA|Canada|马来西亚|🇲🇾|MY|Malaysia|德国|🇩🇪|DE|Germany|荷兰|🇳🇱|NL|Netherlands|泰国|🇹🇭|TH|Thailand|澳大利亚|🇦🇺|AU|Australia|西班牙|🇪🇸|ES|Spain|爱沙尼亚|🇪🇪|EE|Estonia|英国|🇬🇧|United Kingdom|巴西|🇧🇷|BR|Brazil|印度|🇮🇳|IN|India|阿联酋迪拜|🇦🇪|AE|United Arab Emirates|南非|🇿🇦|ZA|South Africa|奥地利|🇦🇹|AT|Austria|哈萨克斯坦|🇰🇿|KZ|Kazakhstan|立陶宛|🇱🇹|LT|Lithuania|瑞士|🇨🇭|CH|Switzerland|瑞典|🇸🇪|SE|Sweden"}
# 亚洲地区
Asia: &Asia {type: selectk, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8], filter: "(?i)阿富汗|🇦🇫|AF|Afghanistan|亚美尼亚|🇦🇲|AM|Armenia|阿塞拜疆|🇦🇿|AZ|Azerbaijan|孟加拉国|🇧🇩|BD|Bangladesh|不丹|🇧🇹|BT|Bhutan|文莱|🇧🇳|BN|Brunei|柬埔寨|🇰🇭|KH|Cambodia|中国|🇨🇳|CN|China|塞浦路斯|🇨🇾|CY|Cyprus|东帝汶|🇹🇱|TL|Timor-Leste|格鲁吉亚|🇬🇪|GE|Georgia|印度尼西亚|🇮🇩|ID|Indonesia|伊朗|🇮🇷|IR|Iran|伊拉克|🇮🇶|IQ|Iraq|以色列|🇮🇱|IL|Israel|约旦|🇯🇴|JO|Jordan|哈萨克斯坦|🇰🇿|KZ|Kazakhstan|科威特|🇰🇼|KW|Kuwait|吉尔吉斯斯坦|🇰🇬|KG|Kyrgyzstan|老挝|🇱🇦|LA|Laos|黎巴嫩|🇱🇧|LB|Lebanon|马来西亚|🇲🇾|MY|Malaysia|马尔代夫|🇲🇻|MV|Maldives|蒙古|🇲🇳|MN|Mongolia|缅甸|🇲🇲|MM|Myanmar|尼泊尔|🇳🇵|NP|Nepal|朝鲜|🇰🇵|KP|North Korea|阿曼|🇴🇲|OM|Oman|巴基斯坦|🇵🇰|PK|Pakistan|巴勒斯坦|🇵🇸|PS|Palestine|菲律宾|🇵🇭|PH|Philippines|卡塔尔|🇶🇦|QA|Qatar|沙特阿拉伯|🇸🇦|SA|Saudi Arabia|斯里兰卡|🇱🇰|LK|Sri Lanka|叙利亚|🇸🇾|SY|Syria|塔吉克斯坦|🇹🇯|TJ|Tajikistan|泰国|🇹🇭|TH|Thailand|土库曼斯坦|🇹🇲|TM|Turkmenistan|阿联酋|🇦🇪|AE|United Arab Emirates|乌兹别克斯坦|🇺🇿|UY|Uzbekistan|也门|🇾🇪|YE|Yemen|越南|🇻🇳|VNVietnam"}
# 欧洲地区
Europe: &Europe {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)阿尔巴尼亚|🇦🇱|AL|Albania|安道尔|🇦🇩|AD|Andorra|亚美尼亚|🇦🇲|AM|Armenia|奥地利|🇦🇹|AT|Austria|阿塞拜疆|🇦🇿|AZ|Azerbaijan|白俄罗斯|🇧🇾|BY|Belarus|比利时|🇧🇪|BE|Belgium|波黑|🇧🇦|BA|Bosnia and Herzegovina|保加利亚|🇧🇬|BG|Bulgaria|克罗地亚|🇭🇷|HR|Croatia|塞浦路斯|🇨🇾|CY|Cyprus|捷克|🇨🇿|CZ|Czech Republic|丹麦|🇩🇰|DK|Denmark|爱沙尼亚|🇪🇪|EE|Estonia|芬兰|🇫🇮|FI|Finland|格鲁吉亚|🇬🇪|GE|Georgia|希腊|🇬🇷|GR|Greece|匈牙利|🇭🇺|HU|Hungary|冰岛|🇮🇸|IS|Iceland|爱尔兰|🇮🇪|IE|Ireland|意大利|🇮🇹|IT|Italy|拉脱维亚|🇱🇻|LV|Latvia|列支敦士登|🇱🇮|LI|Liechtenstein|立陶宛|🇱🇹|LT|Lithuania|卢森堡|🇱🇺|LU|Luxembourg|马其顿|🇲🇰|MK|Macedonia|马耳他|🇲🇹|MT|Malta|摩尔多瓦|🇲🇩|MD|Moldova|摩纳哥|🇲🇨|MC|Monaco|黑山|🇲🇪|ME|Montenegro|挪威|🇳🇴|NO|Norway|波兰|🇵🇱|PL|Poland|葡萄牙|🇵🇹|PT|Portugal|罗马尼亚|🇷🇴|RO|Romania|圣马力诺|🇸🇲|SM|San Marino|塞尔维亚|🇷🇸|RS|Serbia|斯洛伐克|🇸🇰|SK|Slovakia|斯洛文尼亚|🇸🇮|SI|Slovenia|西班牙|🇪🇸|ES|Spain|瑞典|🇸🇪|SE|Sweden|瑞士|🇨🇭|CH|Switzerland|土耳其|🇹🇷|TR|Turkey|乌克兰|🇺🇦|UA|Ukraine|梵蒂冈|🇻🇦|VA|Vatican City"}
# 北美洲地区
America: &America {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)安提瓜和巴布达|🇦🇬|AG|Antigua and Barbuda|巴哈马|🇧🇸|BS|Bahamas|巴巴多斯|🇧🇧|BB|Barbados|伯利兹|🇧🇿|BZ|Belize|哥斯达黎加|🇨🇷|CR|Costa Rica|古巴|🇨🇺|CU|Cuba|多米尼克|🇩🇲|DM|Dominica|多米尼加|🇩🇴|DO|Dominican Republic|萨尔瓦多|🇸🇻|SV|El Salvador|格林纳达|🇬🇩|GD|Grenada|危地马拉|🇬🇹|GT|Guatemala|海地|🇭🇹|HT|Haiti|洪都拉斯|🇭🇳|HN|Honduras|牙买加|🇯🇲|JM|Jamaica|墨西哥|🇲🇽|MX|Mexico|尼加拉瓜|🇳🇮|NI|Nicaragua|巴拿马|🇵🇦|PA|Panama|圣基茨和尼维斯|🇰🇳|KN|Saint Kitts and Nevis|圣卢西亚|🇱🇨|LC|Saint Lucia|圣文森特和格林纳丁斯|🇻🇨|VC|Saint Vincent and the Grenadines|特立尼达和多巴哥|🇹🇹|TT|Trinidad and Tobago"}
# 南美洲地区
Oceania: &Oceania {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)阿根廷|🇦🇷|AR|Argentina|玻利维亚|🇧🇴|BO|Bolivia|巴西|🇧🇷|BR|Brazil|智利|🇨🇱|CL|Chile|哥伦比亚|🇨🇴|CO|Colombia|厄瓜多尔|🇪🇨|EC|Ecuador|圭亚那|🇬🇾|GY|Guyana|巴拉圭|🇵🇾|PY|Paraguay|秘鲁|🇵🇪|PE|Peru|苏里南|🇸🇷|SR|Suriname|特立尼达和多巴哥|🇹🇹|TT|Trinidad and Tobago|乌拉圭|🇺🇾|UY|Uruguay|委内瑞拉|🇻🇪|VE|Venezuela"}
# 非洲地区
Africa: &Africa {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)阿尔及利亚|🇩🇿|DZ|Algeria|安哥拉|🇦🇴|AO|Angola|贝宁|🇧🇯|BJ|Benin|博茨瓦纳|🇧🇼|BW|Botswana|布基纳法索|🇧🇫|BF|Burkina Faso|布隆迪|🇧🇮|BI|Burundi|佛得角|🇨🇻|CV|Cape Verde|喀麦隆|🇨🇲|CM|Cameroon|中非共和国|🇨🇫|CF|Central African Republic|乍得|🇹🇩|TD|Chad|科摩罗|🇰🇲|KM|Comoros|刚果(布)|🇨🇬|CG|Congo (Brazzaville)|刚果(金)|🇨🇩|CD|Congo (Kinshasa)|科特迪瓦|🇨🇮|CI|Ivory Coast|吉布提|🇩🇯|DJ|Djibouti|埃及|🇪🇬|EG|Egypt|赤道几内亚|🇬🇶|GQ|Equatorial Guinea|厄立特里亚|🇪🇷|ER|Eritrea|埃塞俄比亚|🇪🇹|ET|Ethiopia|加蓬|🇬🇦|GA|Gabon|冈比亚|🇬🇲|GM|Gambia|加纳|🇬🇭|GH|Ghana|几内亚|🇬🇳|GN|Guinea|几内亚比绍|🇬🇼|GW|Guinea-Bissau|肯尼亚|🇰🇪|KE|Kenya|莱索托|🇱🇸|LS|Lesotho|利比里亚|🇱🇷|LR|Liberia|利比亚|🇱🇾|LY|Libya|马达加斯加|🇲🇬|MG|Madagascar|马拉维|🇲🇼|MW|Malawi|马里|🇲🇱|ML|Mali|毛里塔尼亚|🇲🇷|MR|Mauritania|毛里求斯|🇲🇺|MU|Mauritius|摩洛哥|🇲🇦|MA|Morocco|莫桑比克|🇲🇿|MZ|Mozambique|纳米比亚|🇳🇦|NA|Namibia|尼日尔|🇳🇪|NE|Niger|尼日利亚|🇳🇬|NG|Nigeria|卢旺达|🇷🇼|RW|Rwanda|圣多美和普林西比|🇸🇹|ST|São Tomé and Príncipe|塞内加尔|🇸🇳|SN|Senegal|塞舌尔|🇸🇨|SC|Seychelles|塞拉利昂|🇸🇱|SL|Sierra Leone|索马里|🇸🇴|SO|Somalia|南非|🇿🇦|ZA|South Africa|南苏丹|🇸🇸|SS|South Sudan|苏丹|🇸🇩|SD|Sudan|坦桑尼亚|🇹🇿|TZ|Tanzania|多哥|🇹🇬|TG|Togo|突尼斯|🇹🇳|TN|Tunisia|乌干达|🇺🇬|UG|Uganda|赞比亚|🇿🇲|ZM|Zambia|津巴布韦|🇿🇼|ZW|Zimbabwe"}
# 精选节点
best: &best {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)港|hk|hongkong|hong kong|台|tw|taiwan|日本|jp|japan|新|sg|singapore|🇺🇲|UM|U.S. Outlying Islands|🇺🇳|UN|United Nations|美国|洛杉矶|芝加哥|达拉斯|🇺🇸|US|United States|韩国|🇰🇷|KR|South Korea"}
# 其他地区
backup: &backup {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8], exclude-filter: "(?i)港|🇭🇰|hk|hongkong|hong kong|台|🇹🇼|tw|taiwan|新|🇸🇬|sg|singapore|日本|🇯🇵|jp|japan|俄罗斯|🇷🇺|RU|Russia|美|纽约|🇺🇲|UM|U.S. Outlying Islands|🇺🇳|UN|United Nations|洛杉矶|芝加哥|达拉斯|🇺🇸|US|United States|德国|🇩🇪|DE|Germany|荷兰|🇳🇱|NL|Netherlands|印度|🇮🇳|IN|India|英国|🇬🇧|United Kingdom|法国|都柏林|🇫🇷|FR|France|加拿大|🇨🇦|CA|Canada|韩国|🇰🇷|KR|South Korea"}
# 自动筛选最快节点
fly: &fly {type: url-test, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)港|hk|hongkong|hong kong|台|tw|taiwan|日本|jp|japan|新|sg|singapore|美|us|unitedstates|united states|韩国|🇰🇷|KR|South Korea"}
@ -172,42 +154,42 @@ proxy-providers: # Meta支持机场通用订阅 直接替换 url 后方链
订阅 1:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_0.yaml
path: ./proxy_provider/subscription_1.yaml
exclude-filter: *exclude-filter
订阅 2:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_1.yaml
path: ./proxy_provider/subscription_2.yaml
exclude-filter: *exclude-filter
订阅 3:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_2.yaml
path: ./proxy_provider/subscription_3.yaml
exclude-filter: *exclude-filter
订阅 4:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_3.yaml
path: ./proxy_provider/subscription_4.yaml
exclude-filter: *exclude-filter
订阅 5: #
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_4.yaml
path: ./proxy_provider/subscription_5.yaml
exclude-filter: *exclude-filter
订阅 6:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_5.yaml
path: ./proxy_provider/subscription_6.yaml
exclude-filter: *exclude-filter
订阅 7:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_6.yaml
path: ./proxy_provider/subscription_7.yaml
exclude-filter: *exclude-filter
订阅 8: # 手动添加节点使用
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_7.json
path: ./proxy_provider/subscription_8.json
exclude-filter: *exclude-filter
proxy-groups:
- name: "✈️ 国际代理"
@ -216,47 +198,25 @@ proxy-groups:
interval: 300
tolerance: 50
proxies:
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ♻️ 自动选择
- 🔯 故障转移
- 🔮 负载均衡
- ⭕️ 直连
- name: 🌍️亚洲地区
type: select
proxies:
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🇷🇺 俄罗斯节点
- 🇨🇦 加拿大节点
- 🇮🇳 印度节点
<<: *Asia
- name: 🌍欧洲地区
type: select
proxies:
- 🇬🇧 英国节点
- 🇫🇷 法国节点
- 🇩🇪 德国节点
- 🇳🇱 荷兰节点
<<: *Europe
- name: 🌍非洲地区
type: select
<<: *Africa
- name: 🌍️北美洲地区
type: select
proxies:
- 🇺🇸 美国节点
- 🇨🇦 加拿大节点
<<: *America
- name: 🌍️南美洲地区
type: select
<<: *Oceania
- 📌 全部节点
- 🚀 其他地区
- 🔯 故障转移
- 🔮 负载均衡
- ⭕️ 直连
- name: "🇭🇰 香港节点"
<<: *all
filter: "(?i)港|🇭🇰|hk|hongkong|hong kong"
@ -296,6 +256,9 @@ proxy-groups:
- name: "🇨🇦 加拿大节点"
<<: *all
filter: "(?i)加拿大|🇨🇦|CA|Canada"
- name: "🚀 其他地区"
type: select
<<: *backup
- name: "🎥 国际媒体"
type: select
proxies:
@ -306,8 +269,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ♻️ 自动选择
- 🔯 故障转移
- 🔮 负载均衡
@ -323,13 +286,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
- name: 📹 油管视频
type: select
@ -342,13 +300,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
- name: "📺 网飞视频"
type: select
@ -361,13 +314,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
- name: "🎬 迪士尼+"
type: select
@ -380,13 +328,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
- name: "🤖 OpenAI"
type: select
@ -399,13 +342,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
- name: "📡 电报服务"
type: select
@ -418,13 +356,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
- name: "🍎 苹果服务"
type: select
@ -437,13 +370,8 @@ proxy-groups:
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 📌 全部节点
- 🚀 其他地区
- name: "Ⓜ️ 微软服务"
type: select
proxies:
@ -469,7 +397,6 @@ proxy-groups:
proxies:
- 📽 国内媒体
- ⭕️ 直连
- name: "🌏 大陆网络"
type: select
proxies:
@ -479,7 +406,12 @@ proxy-groups:
type: select
proxies:
- 🌏 大陆网络
- 🌍️亚洲地区
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- name: "🆎 广告拦截"
type: select
proxies:
@ -499,12 +431,9 @@ proxy-groups:
interval: 300
proxies:
<<: *all
- name: "📌 精选节点"
- name: "📌 全部节点"
type: select
<<: *best
- name: "🚀 备用应急"
type: select
<<: *backup
<<: *all
- name: ♻️ 自动选择
<<: *fly
- name: 🔯 故障转移
@ -525,13 +454,20 @@ proxy-groups:
type: select
proxies:
- ✈️ 国际代理
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🇨🇦 加拿大节点
- 🇮🇳 印度节点
- 🇬🇧 英国节点
- 🇫🇷 法国节点
- 🇩🇪 德国节点
- 🇳🇱 荷兰节点
- 📌 全部节点
- 🚀 其他地区
- ⭕️ 直连
rule-providers:
# 直连和广告拦截

View File

@ -0,0 +1,992 @@
# 2024年09月13日 13:40 By:𝐓𝐮𝐚̂𝐧 𝐁𝐞́ UTC/GMT +8
redir-port: 7892
port: 7890
socks-port: 7891
mixed-port: 7893
mode: rule
log-level: info
allow-lan: true
unified-delay: true
external-controller: 0.0.0.0:9090
secret: Akun
bind-address: 0.0.0.0
external-ui: ui
tproxy-port: 7895
tcp-concurrent: true
enable-process: true
find-process-mode: always
ipv6: true
experimental:
ignore-resolve-fail: true
sniff-tls-sni: true
tracing: true
hosts:
"localhost": 127.0.0.1
profile:
store-selected: true
store-fake-ip: true
sniffer:
enable: true
sniff:
http: { ports: [1-442, 444-8442, 8444-65535], override-destination: true }
tls: { ports: [1-79, 81-8079, 8081-65535], override-destination: true }
force-domain:
- "+.v2ex.com"
- www.google.com
- google.com
skip-domain:
- Mijia Cloud
- dlg.io.mi.com
sniffing:
- tls
- http
port-whitelist:
- "80"
- "443"
tun:
enable: true
prefer-h3: true
listen: 0.0.0.0:53
stack: gvisor
dns-hijack:
- "any:53"
- "tcp://any:53"
auto-redir: true
auto-route: true
auto-detect-interface: true
dns:
enable: true
ipv6: true
default-nameserver:
- '1.1.1.1'
- '8.8.8.8'
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- 'stun.*.*'
- 'stun.*.*.*'
- '+.stun.*.*'
- '+.stun.*.*.*'
- '+.stun.*.*.*.*'
- '+.stun.*.*.*.*.*'
- '*.lan'
- '+.msftncsi.com'
- msftconnecttest.com
- 'time?.*.com'
- 'time.*.com'
- 'time.*.gov'
- 'time.*.apple.com'
- time-ios.apple.com
- 'time1.*.com'
- 'time2.*.com'
- 'time3.*.com'
- 'time4.*.com'
- 'time5.*.com'
- 'time6.*.com'
- 'time7.*.com'
- 'ntp?.*.com'
- 'ntp.*.com'
- 'ntp1.*.com'
- 'ntp2.*.com'
- 'ntp3.*.com'
- 'ntp4.*.com'
- 'ntp5.*.com'
- 'ntp6.*.com'
- 'ntp7.*.com'
- '+.pool.ntp.org'
- '+.ipv6.microsoft.com'
- speedtest.cros.wr.pvp.net
- network-test.debian.org
- detectportal.firefox.com
- cable.auth.com
- miwifi.com
- routerlogin.com
- routerlogin.net
- tendawifi.com
- tendawifi.net
- tplinklogin.net
- tplinkwifi.net
- '*.xiami.com'
- tplinkrepeater.net
- router.asus.com
- '*.*.*.srv.nintendo.net'
- '*.*.stun.playstation.net'
- '*.openwrt.pool.ntp.org'
- resolver1.opendns.com
- 'GC._msDCS.*.*'
- 'DC._msDCS.*.*'
- 'PDC._msDCS.*.*'
use-hosts: true
nameserver:
- '8.8.4.4'
- '1.0.0.1'
- "https://1.0.0.1/dns-query"
- "https://8.8.4.4/dns-query"
###开始建立锚点
# 所有节点
all: &all {type: select, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8]}
filtered_lines: &filtered_lines # 处理重复节点
- *all
final_lines: *filtered_lines
# 备用应急
backup: &backup {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8], filter: "(?i)津巴布韦|🇿🇼|ZW|Zimbabwe|越南|🇻🇳|VNVietnam|乌克兰|🇺🇦|UA|Ukraine|土耳其|🇹🇷|Turkey|法国|都柏林|🇫🇷|FR|France|阿根廷|🇦🇷|AR|Argentina|印度|🇮🇳|IN|India|加拿大|🇨🇦|CA|Canada|马来西亚|🇲🇾|MY|Malaysia|德国|🇩🇪|DE|Germany|荷兰|🇳🇱|NL|Netherlands|泰国|🇹🇭|TH|Thailand|澳大利亚|🇦🇺|AU|Australia|西班牙|🇪🇸|ES|Spain|爱沙尼亚|🇪🇪|EE|Estonia|英国|🇬🇧|United Kingdom|巴西|🇧🇷|BR|Brazil|印度|🇮🇳|IN|India|阿联酋迪拜|🇦🇪|AE|United Arab Emirates|南非|🇿🇦|ZA|South Africa|奥地利|🇦🇹|AT|Austria|哈萨克斯坦|🇰🇿|KZ|Kazakhstan|立陶宛|🇱🇹|LT|Lithuania|瑞士|🇨🇭|CH|Switzerland|瑞典|🇸🇪|SE|Sweden"}
# 亚洲地区
Asia: &Asia {type: selectk, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8], filter: "(?i)阿富汗|🇦🇫|AF|Afghanistan|亚美尼亚|🇦🇲|AM|Armenia|阿塞拜疆|🇦🇿|AZ|Azerbaijan|孟加拉国|🇧🇩|BD|Bangladesh|不丹|🇧🇹|BT|Bhutan|文莱|🇧🇳|BN|Brunei|柬埔寨|🇰🇭|KH|Cambodia|中国|🇨🇳|CN|China|塞浦路斯|🇨🇾|CY|Cyprus|东帝汶|🇹🇱|TL|Timor-Leste|格鲁吉亚|🇬🇪|GE|Georgia|印度尼西亚|🇮🇩|ID|Indonesia|伊朗|🇮🇷|IR|Iran|伊拉克|🇮🇶|IQ|Iraq|以色列|🇮🇱|IL|Israel|约旦|🇯🇴|JO|Jordan|哈萨克斯坦|🇰🇿|KZ|Kazakhstan|科威特|🇰🇼|KW|Kuwait|吉尔吉斯斯坦|🇰🇬|KG|Kyrgyzstan|老挝|🇱🇦|LA|Laos|黎巴嫩|🇱🇧|LB|Lebanon|马来西亚|🇲🇾|MY|Malaysia|马尔代夫|🇲🇻|MV|Maldives|蒙古|🇲🇳|MN|Mongolia|缅甸|🇲🇲|MM|Myanmar|尼泊尔|🇳🇵|NP|Nepal|朝鲜|🇰🇵|KP|North Korea|阿曼|🇴🇲|OM|Oman|巴基斯坦|🇵🇰|PK|Pakistan|巴勒斯坦|🇵🇸|PS|Palestine|菲律宾|🇵🇭|PH|Philippines|卡塔尔|🇶🇦|QA|Qatar|沙特阿拉伯|🇸🇦|SA|Saudi Arabia|斯里兰卡|🇱🇰|LK|Sri Lanka|叙利亚|🇸🇾|SY|Syria|塔吉克斯坦|🇹🇯|TJ|Tajikistan|泰国|🇹🇭|TH|Thailand|土库曼斯坦|🇹🇲|TM|Turkmenistan|阿联酋|🇦🇪|AE|United Arab Emirates|乌兹别克斯坦|🇺🇿|UY|Uzbekistan|也门|🇾🇪|YE|Yemen|越南|🇻🇳|VNVietnam"}
# 欧洲地区
Europe: &Europe {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)阿尔巴尼亚|🇦🇱|AL|Albania|安道尔|🇦🇩|AD|Andorra|亚美尼亚|🇦🇲|AM|Armenia|奥地利|🇦🇹|AT|Austria|阿塞拜疆|🇦🇿|AZ|Azerbaijan|白俄罗斯|🇧🇾|BY|Belarus|比利时|🇧🇪|BE|Belgium|波黑|🇧🇦|BA|Bosnia and Herzegovina|保加利亚|🇧🇬|BG|Bulgaria|克罗地亚|🇭🇷|HR|Croatia|塞浦路斯|🇨🇾|CY|Cyprus|捷克|🇨🇿|CZ|Czech Republic|丹麦|🇩🇰|DK|Denmark|爱沙尼亚|🇪🇪|EE|Estonia|芬兰|🇫🇮|FI|Finland|格鲁吉亚|🇬🇪|GE|Georgia|希腊|🇬🇷|GR|Greece|匈牙利|🇭🇺|HU|Hungary|冰岛|🇮🇸|IS|Iceland|爱尔兰|🇮🇪|IE|Ireland|意大利|🇮🇹|IT|Italy|拉脱维亚|🇱🇻|LV|Latvia|列支敦士登|🇱🇮|LI|Liechtenstein|立陶宛|🇱🇹|LT|Lithuania|卢森堡|🇱🇺|LU|Luxembourg|马其顿|🇲🇰|MK|Macedonia|马耳他|🇲🇹|MT|Malta|摩尔多瓦|🇲🇩|MD|Moldova|摩纳哥|🇲🇨|MC|Monaco|黑山|🇲🇪|ME|Montenegro|挪威|🇳🇴|NO|Norway|波兰|🇵🇱|PL|Poland|葡萄牙|🇵🇹|PT|Portugal|罗马尼亚|🇷🇴|RO|Romania|圣马力诺|🇸🇲|SM|San Marino|塞尔维亚|🇷🇸|RS|Serbia|斯洛伐克|🇸🇰|SK|Slovakia|斯洛文尼亚|🇸🇮|SI|Slovenia|西班牙|🇪🇸|ES|Spain|瑞典|🇸🇪|SE|Sweden|瑞士|🇨🇭|CH|Switzerland|土耳其|🇹🇷|TR|Turkey|乌克兰|🇺🇦|UA|Ukraine|梵蒂冈|🇻🇦|VA|Vatican City"}
# 北美洲地区
America: &America {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)安提瓜和巴布达|🇦🇬|AG|Antigua and Barbuda|巴哈马|🇧🇸|BS|Bahamas|巴巴多斯|🇧🇧|BB|Barbados|伯利兹|🇧🇿|BZ|Belize|哥斯达黎加|🇨🇷|CR|Costa Rica|古巴|🇨🇺|CU|Cuba|多米尼克|🇩🇲|DM|Dominica|多米尼加|🇩🇴|DO|Dominican Republic|萨尔瓦多|🇸🇻|SV|El Salvador|格林纳达|🇬🇩|GD|Grenada|危地马拉|🇬🇹|GT|Guatemala|海地|🇭🇹|HT|Haiti|洪都拉斯|🇭🇳|HN|Honduras|牙买加|🇯🇲|JM|Jamaica|墨西哥|🇲🇽|MX|Mexico|尼加拉瓜|🇳🇮|NI|Nicaragua|巴拿马|🇵🇦|PA|Panama|圣基茨和尼维斯|🇰🇳|KN|Saint Kitts and Nevis|圣卢西亚|🇱🇨|LC|Saint Lucia|圣文森特和格林纳丁斯|🇻🇨|VC|Saint Vincent and the Grenadines|特立尼达和多巴哥|🇹🇹|TT|Trinidad and Tobago"}
# 南美洲地区
Oceania: &Oceania {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)阿根廷|🇦🇷|AR|Argentina|玻利维亚|🇧🇴|BO|Bolivia|巴西|🇧🇷|BR|Brazil|智利|🇨🇱|CL|Chile|哥伦比亚|🇨🇴|CO|Colombia|厄瓜多尔|🇪🇨|EC|Ecuador|圭亚那|🇬🇾|GY|Guyana|巴拉圭|🇵🇾|PY|Paraguay|秘鲁|🇵🇪|PE|Peru|苏里南|🇸🇷|SR|Suriname|特立尼达和多巴哥|🇹🇹|TT|Trinidad and Tobago|乌拉圭|🇺🇾|UY|Uruguay|委内瑞拉|🇻🇪|VE|Venezuela"}
# 非洲地区
Africa: &Africa {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)阿尔及利亚|🇩🇿|DZ|Algeria|安哥拉|🇦🇴|AO|Angola|贝宁|🇧🇯|BJ|Benin|博茨瓦纳|🇧🇼|BW|Botswana|布基纳法索|🇧🇫|BF|Burkina Faso|布隆迪|🇧🇮|BI|Burundi|佛得角|🇨🇻|CV|Cape Verde|喀麦隆|🇨🇲|CM|Cameroon|中非共和国|🇨🇫|CF|Central African Republic|乍得|🇹🇩|TD|Chad|科摩罗|🇰🇲|KM|Comoros|刚果(布)|🇨🇬|CG|Congo (Brazzaville)|刚果(金)|🇨🇩|CD|Congo (Kinshasa)|科特迪瓦|🇨🇮|CI|Ivory Coast|吉布提|🇩🇯|DJ|Djibouti|埃及|🇪🇬|EG|Egypt|赤道几内亚|🇬🇶|GQ|Equatorial Guinea|厄立特里亚|🇪🇷|ER|Eritrea|埃塞俄比亚|🇪🇹|ET|Ethiopia|加蓬|🇬🇦|GA|Gabon|冈比亚|🇬🇲|GM|Gambia|加纳|🇬🇭|GH|Ghana|几内亚|🇬🇳|GN|Guinea|几内亚比绍|🇬🇼|GW|Guinea-Bissau|肯尼亚|🇰🇪|KE|Kenya|莱索托|🇱🇸|LS|Lesotho|利比里亚|🇱🇷|LR|Liberia|利比亚|🇱🇾|LY|Libya|马达加斯加|🇲🇬|MG|Madagascar|马拉维|🇲🇼|MW|Malawi|马里|🇲🇱|ML|Mali|毛里塔尼亚|🇲🇷|MR|Mauritania|毛里求斯|🇲🇺|MU|Mauritius|摩洛哥|🇲🇦|MA|Morocco|莫桑比克|🇲🇿|MZ|Mozambique|纳米比亚|🇳🇦|NA|Namibia|尼日尔|🇳🇪|NE|Niger|尼日利亚|🇳🇬|NG|Nigeria|卢旺达|🇷🇼|RW|Rwanda|圣多美和普林西比|🇸🇹|ST|São Tomé and Príncipe|塞内加尔|🇸🇳|SN|Senegal|塞舌尔|🇸🇨|SC|Seychelles|塞拉利昂|🇸🇱|SL|Sierra Leone|索马里|🇸🇴|SO|Somalia|南非|🇿🇦|ZA|South Africa|南苏丹|🇸🇸|SS|South Sudan|苏丹|🇸🇩|SD|Sudan|坦桑尼亚|🇹🇿|TZ|Tanzania|多哥|🇹🇬|TG|Togo|突尼斯|🇹🇳|TN|Tunisia|乌干达|🇺🇬|UG|Uganda|赞比亚|🇿🇲|ZM|Zambia|津巴布韦|🇿🇼|ZW|Zimbabwe"}
# 精选节点
best: &best {type: select, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)港|hk|hongkong|hong kong|台|tw|taiwan|日本|jp|japan|新|sg|singapore|🇺🇲|UM|U.S. Outlying Islands|🇺🇳|UN|United Nations|美国|洛杉矶|芝加哥|达拉斯|🇺🇸|US|United States|韩国|🇰🇷|KR|South Korea"}
# 自动筛选最快节点
fly: &fly {type: url-test, url: "http://www.google.com/generate_204", interval: 300, tolerance: 50, lazy: true, use: [订阅 1, 订阅 2, 订阅 3, 订阅 4, 订阅 5, 订阅 6, 订阅 7, 订阅 8],filter: "(?i)港|hk|hongkong|hong kong|台|tw|taiwan|日本|jp|japan|新|sg|singapore|美|us|unitedstates|united states|韩国|🇰🇷|KR|South Korea"}
# 订阅更新和延迟测试相关
p: &p {type: http, interval: 21600, health-check: {enable: true, url: "http://www.google.com/generate_204", interval: 1800, filter: "(?i)^(?!unavailable).*$"}}
# 订阅节点关键字过滤
exclude-filter-list: &exclude-filter "剩余流量|距离下次重置剩余|套餐到期|跳转域名{请勿连接}|邀请好友|关注频道|收费就说明被骗了"
###结束建立锚点
proxy-providers: # Meta支持机场通用订阅 直接替换 url 后方链接使用
订阅 1:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_1.yaml
exclude-filter: *exclude-filter
订阅 2:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_2.yaml
exclude-filter: *exclude-filter
订阅 3:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_3.yaml
exclude-filter: *exclude-filter
订阅 4:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_4.yaml
exclude-filter: *exclude-filter
订阅 5: #
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_5.yaml
exclude-filter: *exclude-filter
订阅 6:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_6.yaml
exclude-filter: *exclude-filter
订阅 7:
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_7.yaml
exclude-filter: *exclude-filter
订阅 8: # 手动添加节点使用
<<: *p
url: "机场订阅"
path: ./proxy_provider/subscription_8.json
exclude-filter: *exclude-filter
proxy-groups:
- name: "✈️ 国际代理"
type: select
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
proxies:
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ♻️ 自动选择
- 🔯 故障转移
- 🔮 负载均衡
- ⭕️ 直连
- name: 🌍️亚洲地区
type: select
proxies:
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇮🇳 印度节点
<<: *Asia
- name: 🌍欧洲地区
type: select
proxies:
- 🇬🇧 英国节点
- 🇫🇷 法国节点
- 🇩🇪 德国节点
- 🇳🇱 荷兰节点
<<: *Europe
- name: 🌍非洲地区
type: select
<<: *Africa
- name: 🌍️北美洲地区
type: select
proxies:
- 🇺🇸 美国节点
- 🇨🇦 加拿大节点
<<: *America
- name: 🌍️南美洲地区
type: select
<<: *Oceania
- name: "🇭🇰 香港节点"
<<: *all
filter: "(?i)港|🇭🇰|hk|hongkong|hong kong"
- name: "🇹🇼 台湾节点"
<<: *all
filter: "(?i)台|🇹🇼|tw|taiwan"
- name: "🇸🇬 新加坡节点"
<<: *all
filter: "(?i)新|🇸🇬|sg|singapore"
- name: "🇯🇵 日本节点"
<<: *all
filter: "(?i)日本|🇯🇵|jp|japan"
- name: "🇷🇺 俄罗斯节点"
<<: *all
filter: "(?i)俄罗斯|🇷🇺|RU|Russia"
- name: "🇰🇷 韩国节点"
<<: *all
filter: "(?i)韩国|🇰🇷|KR|South Korea"
- name: "🇺🇸 美国节点"
<<: *all
filter: "(?i)美|纽约|🇺🇲|UM|U.S. Outlying Islands|🇺🇳|UN|United Nations|洛杉矶|芝加哥|达拉斯|🇺🇸|US|United States"
- name: "🇩🇪 德国节点"
<<: *all
filter: "(?i)德国|🇩🇪|DE|Germany"
- name: "🇳🇱 荷兰节点"
<<: *all
filter: "(?i)荷兰|🇳🇱|NL|Netherlands"
- name: "🇮🇳 印度节点"
<<: *all
filter: "(?i)印度|🇮🇳|IN|India"
- name: "🇬🇧 英国节点"
<<: *all
filter: "(?i)英国|🇬🇧|United Kingdom"
- name: "🇫🇷 法国节点"
<<: *all
filter: "(?i)法国|都柏林|🇫🇷|FR|France"
- name: "🇨🇦 加拿大节点"
<<: *all
filter: "(?i)加拿大|🇨🇦|CA|Canada"
- name: "🎥 国际媒体"
type: select
proxies:
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 📌 精选节点
- 🚀 备用应急
- ♻️ 自动选择
- 🔯 故障转移
- 🔮 负载均衡
- ⭕️ 直连
- name: "🎶 国际抖音"
type: select
proxies:
- 🎥 国际媒体
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
- name: 📹 油管视频
type: select
proxies:
- 🎥 国际媒体
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
- name: "📺 网飞视频"
type: select
proxies:
- 🎥 国际媒体
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
- name: "🎬 迪士尼+"
type: select
proxies:
- 🎥 国际媒体
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
- name: "🤖 OpenAI"
type: select
proxies:
- 🎥 国际媒体
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
- name: "📡 电报服务"
type: select
proxies:
- 🎥 国际媒体
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
- name: "🍎 苹果服务"
type: select
proxies:
- ⭕️ 直连
- ✈️ 国际代理
- 🇭🇰 香港节点
- 🇹🇼 台湾节点
- 🇸🇬 新加坡节点
- 🇯🇵 日本节点
- 🇰🇷 韩国节点
- 🇺🇸 美国节点
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- name: "Ⓜ️ 微软服务"
type: select
proxies:
- ⭕️ 直连
- ✈️ 国际代理
- name: "🎮 游戏平台"
type: select
proxies:
- ✈️ 国际代理
- ⭕️ 直连
- name: "🎧 声田音乐"
type: select
proxies:
- 🎥 国际媒体
- ⭕️ 直连
- name: "💳 贝宝服务"
type: select
proxies:
- ✈️ 国际代理
- ⭕️ 直连
- name: "🎵 网易云音乐"
type: select
proxies:
- 📽 国内媒体
- ⭕️ 直连
- name: "🌏 大陆网络"
type: select
proxies:
- ⭕️ 直连
- ✈️ 国际代理
- name: "📽 国内媒体"
type: select
proxies:
- 🌏 大陆网络
- 🌍️亚洲地区
- name: "🆎 广告拦截"
type: select
proxies:
- ❌ 拦截
- ⭕️ 直连
- name: "⭕️ 直连"
type: select
proxies:
- DIRECT
- name: "❌ 拦截"
type: select
proxies:
- REJECT
- name: "⏳ 网速测试"
type: select
url: http://www.google.com/generate_204
interval: 300
proxies:
<<: *all
- name: "📌 精选节点"
type: select
<<: *best
- name: "🚀 备用应急"
type: select
<<: *backup
- name: ♻️ 自动选择
<<: *fly
- name: 🔯 故障转移
type: fallback
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
<<: *all
- name: 🔮 负载均衡
type: load-balance
strategy: consistent-hashing
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
<<: *all
filter: "(?i)港|hk|hongkong|hong kong|台|tw|taiwan|日本|jp|japan|新|sg|singapore|美|us|unitedstates|united states|韩国|🇰🇷|KR|South Korea"
- name: "🐟 漏网之鱼"
type: select
proxies:
- ✈️ 国际代理
- 🌍️亚洲地区
- 🌍欧洲地区
- 🌍非洲地区
- 🌍️南美洲地区
- 🌍️北美洲地区
- 📌 精选节点
- 🚀 备用应急
- ⭕️ 直连
rule-providers:
# 直连和广告拦截
Special:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Special.yaml
path: ./rule_provider/Special.yaml
interval: 86400
Reject:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Reject.yaml
path: ./rule_provider/Reject.yaml
interval: 86400
AD:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/AD.yaml"
path: ./rule_provider/AD.yaml
interval: 86400
EasyList:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/EasyList.yaml"
path: ./rule_provider/EasyList.yaml
interval: 86400
EasyListChina:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/EasyListChina.yaml"
path: ./rule_provider/EasyListChina.yaml
interval: 86400
EasyPrivacy:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/EasyPrivacy.yaml"
path: ./rule_provider/EasyPrivacy.yaml
interval: 86400
ProgramAD:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/ProgramAD.yaml"
path: ./rule_provider/ProgramAD.yaml
interval: 86400
# 国内媒体分组
Bilibili:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Bilibili.yaml
path: ./rule_provider/Bilibili.yaml
interval: 86400
IQ:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/IQ.yaml
path: ./rule_provider/IQI.yaml
interval: 86400
IQIYI:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/IQIYI.yaml
path: ./rule_provider/IQYI.yaml
interval: 86400
Letv:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Letv.yaml
path: ./rule_provider/Letv.yaml
interval: 86400
Netease Music:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Netease%20Music.yaml
path: ./rule_provider/Netease_Music.yaml
interval: 86400
Tencent Video:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Tencent%20Video.yaml
path: ./rule_provider/Tencent_Video.yaml
interval: 86400
Youku:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Youku.yaml
path: ./rule_provider/Youku.yaml
interval: 86400
WeTV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/WeTV.yaml
path: ./rule_provider/WeTV.yaml
interval: 86400
# 国际媒体分组
ABC:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/ABC.yaml
path: ./rule_provider/ABC.yaml
interval: 86400
Abema TV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Abema%20TV.yaml
path: ./rule_provider/Abema_TV.yaml
interval: 86400
Amazon:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Amazon.yaml
path: ./rule_provider/Amazon.yaml
interval: 86400
Apple Music:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Apple%20Music.yaml
path: ./rule_provider/Apple_Music.yaml
interval: 86400
Apple News:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Apple%20News.yaml
path: ./rule_provider/Apple_News.yaml
interval: 86400
Apple TV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Apple%20TV.yaml
path: ./rule_provider/Apple_TV.yaml
interval: 86400
Bahamut:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Bahamut.yaml
path: ./rule_provider/Bahamut.yaml
interval: 86400
BBC iPlayer:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/BBC%20iPlayer.yaml
path: ./rule_provider/BBC_iPlayer.yaml
interval: 86400
DAZN:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/DAZN.yaml
path: ./rule_provider/DAZN.yaml
interval: 86400
Discovery Plus:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Discovery%20Plus.yaml
path: ./rule_provider/Discovery_Plus.yaml
interval: 86400
Disney Plus:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Disney%20Plus.yaml
path: ./rule_provider/Disney_Plus.yaml
interval: 86400
encoreTVB:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/encoreTVB.yaml
path: ./rule_provider/encoreTVB.yaml
interval: 86400
F1 TV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/F1%20TV.yaml
path: ./rule_provider/F1_TV.yaml
interval: 86400
Fox Now:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Fox%20Now.yaml
path: ./rule_provider/Fox_Now.yaml
interval: 86400
Fox+:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Fox%2B.yaml
path: ./rule_provider/Fox+.yaml
interval: 86400
HBO Go:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/HBO%20Go.yaml
path: ./rule_provider/HBO_Go.yaml
interval: 86400
HBO Max:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/HBO%20Max.yaml
path: ./rule_provider/HBO_Max.yaml
interval: 86400
Hulu Japan:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Hulu%20Japan.yaml
path: ./rule_provider/Hulu_Japan.yaml
interval: 86400
Hulu:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Hulu.yaml
path: ./rule_provider/Hulu.yaml
interval: 86400
Japonx:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Japonx.yaml
path: ./rule_provider/Japonx.yaml
interval: 86400
JOOX:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/JOOX.yaml
path: ./rule_provider/JOOX.yaml
interval: 86400
KKBOX:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/KKBOX.yaml
path: ./rule_provider/KKBOX.yaml
interval: 86400
KKTV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/KKTV.yaml
path: ./rule_provider/KKTV.yaml
interval: 86400
Line TV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Line%20TV.yaml
path: ./rule_provider/Line_TV.yaml
interval: 86400
myTV SUPER:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/myTV%20SUPER.yaml
path: ./rule_provider/myTV_SUPER.yaml
interval: 86400
Netflix:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Netflix.yaml
path: ./rule_provider/Netflix.yaml
interval: 86400
Pandora:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Pandora.yaml
path: ./rule_provider/Pandora.yaml
interval: 86400
PBS:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/PBS.yaml
path: ./rule_provider/PBS.yaml
interval: 86400
Pornhub:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Pornhub.yaml
path: ./rule_provider/Pornhub.yaml
interval: 86400
Soundcloud:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Soundcloud.yaml
path: ./rule_provider/Soundcloud.yaml
interval: 86400
Spotify:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/Spotify.yaml
path: ./rule_provider/Spotify.yaml
interval: 86400
ViuTV:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/ViuTV.yaml
path: ./rule_provider/ViuTV.yaml
interval: 86400
YouTube:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/YouTube.yaml
path: ./rule_provider/YouTube.yaml
interval: 86400
YouTube Music:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Media/YouTube%20Music.yaml
path: ./rule_provider/YouTube_Music.yaml
interval: 86400
# 苹果服务规则列表
Apple:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Apple.yaml
path: ./rule_provider/Apple.yaml
interval: 86400
# 电报、微软、OpenAI、Steam、PayPal 及 TikTok 可选规则列表
Telegram:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Telegram.yaml
path: ./rule_provider/Telegram.yaml
interval: 86400
Microsoft:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Microsoft.yaml
path: ./rule_provider/Microsoft.yaml
interval: 86400
OpenAI:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/OpenAI.yaml
path: ./rule_provider/OpenAI.yaml
interval: 86400
Steam:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Steam.yaml
path: ./rule_provider/Steam.yaml
interval: 86400
PayPal:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/PayPal.yaml
path: ./rule_provider/PayPal.yaml
interval: 86400
TikTok:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/ios_rule_script/master/rule/Clash/TikTok/TikTok.yaml
path: ./rule_provider/TikTok.yaml
interval: 86400
# 必须规则列表
Speedtest:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Speedtest.yaml
path: ./rule_provider/Speedtest.yaml
interval: 86400
Proxy:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Proxy.yaml
path: ./rule_provider/Proxy.yaml
interval: 86400
Domestic:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/Domestic.yaml
path: ./rule_provider/Domestic.yaml
interval: 86400
LAN:
type: http
behavior: classical
url: https://raw.githubusercontent.com/Thaolga/Rules/main/Clash/Provider/LAN.yaml
path: ./rule_provider/LAN.yaml
interval: 86400
rules:
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,100.64.0.0/10,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,169.254.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,224.0.0.0/3,DIRECT
- IP-CIDR6,::1/128,DIRECT
- IP-CIDR6,fc00::/7,DIRECT
- IP-CIDR6,fe80::/10,DIRECT
- IP-CIDR6,fd00::/8,DIRECT
# 直连和广告拦截
- RULE-SET,AD,REJECT
- RULE-SET,EasyList,REJECT
- RULE-SET,EasyListChina,REJECT
- RULE-SET,EasyPrivacy,REJECT
- RULE-SET,ProgramAD,REJECT
- RULE-SET,Special,DIRECT
- RULE-SET,Reject,🆎 广告拦截
# 国内媒体分组
- RULE-SET,Bilibili,📽 国内媒体
- RULE-SET,IQ,📽 国内媒体
- RULE-SET,IQIYI,📽 国内媒体
- RULE-SET,Letv,📽 国内媒体
- RULE-SET,Netease Music,📽 国内媒体 #🎵 网易云音乐
- RULE-SET,Tencent Video,📽 国内媒体
- RULE-SET,Youku,📽 国内媒体
- RULE-SET,WeTV,📽 国内媒体
# 国际媒体分组
- RULE-SET,Netflix,🎥 国际媒体 #📺 网飞视频
- RULE-SET,Disney Plus,🎥 国际媒体 #🎬 迪士尼+
- RULE-SET,Spotify,🎥 国际媒体 #🎧 声田音乐
- RULE-SET,YouTube Music,🎥 国际媒体
- RULE-SET,ABC,🎥 国际媒体
- RULE-SET,Abema TV,🎥 国际媒体
- RULE-SET,Amazon,🎥 国际媒体
- RULE-SET,Apple News,🎥 国际媒体
- RULE-SET,Apple TV,🎥 国际媒体
- RULE-SET,Bahamut,🎥 国际媒体
- RULE-SET,BBC iPlayer,🎥 国际媒体
- RULE-SET,DAZN,🎥 国际媒体
- RULE-SET,Discovery Plus,🎥 国际媒体
- RULE-SET,encoreTVB,🎥 国际媒体
- RULE-SET,F1 TV,🎥 国际媒体
- RULE-SET,Fox Now,🎥 国际媒体
- RULE-SET,Fox+,🎥 国际媒体
- RULE-SET,HBO Go,🎥 国际媒体
- RULE-SET,HBO Max,🎥 国际媒体
- RULE-SET,Hulu Japan,🎥 国际媒体
- RULE-SET,Hulu,🎥 国际媒体
- RULE-SET,Japonx,🎥 国际媒体
- RULE-SET,JOOX,🎥 国际媒体
- RULE-SET,KKBOX,🎥 国际媒体
- RULE-SET,KKTV,🎥 国际媒体
- RULE-SET,Line TV,🎥 国际媒体
- RULE-SET,myTV SUPER,🎥 国际媒体
- RULE-SET,Pandora,🎥 国际媒体
- RULE-SET,PBS,🎥 国际媒体
- RULE-SET,Pornhub,🎥 国际媒体
- RULE-SET,Soundcloud,🎥 国际媒体
- RULE-SET,ViuTV,🎥 国际媒体
# 苹果服务
- RULE-SET,Apple,🍎 苹果服务
# 电报、微软、贝宝及 Steam 可选规则,如需为某个规则列表单独设置策略,请直接修改策略名称与上方策略组名称保持一致
- RULE-SET,Microsoft,🌏 大陆网络 #Ⓜ️ 微软服务
- RULE-SET,OpenAI,✈️ 国际代理 #🤖 OpenAI
- RULE-SET,YouTube,📹 油管视频
- RULE-SET,Telegram,📡 电报服务
- RULE-SET,PayPal,✈️ 国际代理 #💳 贝宝服务
- RULE-SET,Steam,🎮 游戏平台
- RULE-SET,TikTok,🎶 国际抖音
# 必须规则
- RULE-SET,Speedtest,⏳ 网速测试
- RULE-SET,Proxy,✈️ 国际代理
- RULE-SET,Domestic,🌏 大陆网络
- RULE-SET,LAN,DIRECT
# 最终规则
- GEOIP,CN,🌏 大陆网络
- MATCH,🐟 漏网之鱼

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mihomo
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git

View File

@ -302,6 +302,10 @@ start_service() {
nft -f "$HIJACK_NFT" -D FW_MARK="$FW_MARK" -D FW_MARK_MASK="$FW_MARK_MASK" -D TUN_DEVICE="$TUN_DEVICE" -D DNS_PORT="$dns_port" -D REDIR_PORT="$redir_port" -D TPROXY_PORT="$tproxy_port"
nft -f "$RESERVED_IP_NFT"
nft -f "$RESERVED_IP6_NFT"
if [ "$tcp_transparent_proxy_mode" != "redirect" ]; then
nft flush chain inet "$FW_TABLE" nat_output
nft flush chain inet "$FW_TABLE" dstnat
fi
nft add element inet "$FW_TABLE" bypass_group \{ "$MIHOMO_GROUP" \}
nft add element inet "$FW_TABLE" fake_ip \{ "$fake_ip_range" \}
# dns hijack