Mihomo 内核适配 Clash for Windows / Clash Verge

Mihomo 内核适配 Clash for Windows / Clash Verge

原版 Clash 内核的 Http 混淆默认 UA 为 Go-http-client/1.1 ,如果开启了 Http 混淆(shadowsocks + v2ray-plugin)会被精准打击,切换修改 UA 的内核(Mihomo)可以解决这个问题。

原版 Clash 内核已经不维护了,建议切换到新分支 Mihomo 内核。

目前 Windows平台 clashN 和 Mac平台 ClashX.Meta 是原生支持 Mihomo 内核的 Clash GUI,可以直接使用。

Mihomo 内核原版编译的二进制执行文件无法直接替换 Clash for Windows / Clash Verge 的 Clash 内核。查看源码后,发现 Mihomo 内核加载配置目录与原版 Clash 内核不同,修改一下即可替换。

修改源码

main.go 中修改 init() 函数:

func init() {

    // 获取用户主目录
    userHomeDir, err := os.UserHomeDir()
    if err != nil {
        fmt.Println("Error getting user home directory:", err)
        os.Exit(1)
    }

    // 设置默认的配置目录值
    defaultConfigDir := filepath.Join(userHomeDir, ".config", "clash")

    flag.StringVar(&homeDir, "d", defaultConfigDir, "set configuration directory")
    flag.StringVar(&configFile, "f", os.Getenv("CLASH_CONFIG_FILE"), "specify configuration file")
    flag.StringVar(&externalUI, "ext-ui", os.Getenv("CLASH_OVERRIDE_EXTERNAL_UI_DIR"), "override external ui directory")
    flag.StringVar(&externalController, "ext-ctl", os.Getenv("CLASH_OVERRIDE_EXTERNAL_CONTROLLER"), "override external controller address")
    flag.StringVar(&secret, "secret", os.Getenv("CLASH_OVERRIDE_SECRET"), "override secret for RESTful API")
    flag.BoolVar(&geodataMode, "m", false, "set geodata mode")
    flag.BoolVar(&version, "v", false, "show current version of mihomo")
    flag.BoolVar(&testConfig, "t", false, "test configuration and exit")
    flag.Parse()
}

编译源码

执行编译命令

make

替换内核

Windows 平台

  1. 将编译的内核重命名为 clash-win64.exe

  2. 关闭 Clash for Windows,解压下载文件后替换原内核

内核目录(两个目录其中一个,取决于安装时是否选择为全部用户安装,第二个记得把用户名替换为自己的):

C:\Program Files\Clash for Windows\resources\static\files\win\x64
C:\Users\用户名\AppData\Local\Programs\Clash for Windows\resources\static\files\win\x64

可以提前复制一下原版内核副本做备份,替换 clash-win64.exe (.exe可能是隐藏的) 。

  1. 重新打开 Clash for Windows 使用,注意如果需要使用 TUN Mode,需要右键以管理员身份运行

Clash Verge

Clash Verge 也可以一样操作

C:\Users\用户名\AppData\Local\Clash Verge

将下载好的文件解压后,重命名为 clash.exe (.exe可能是隐藏的),替换即可

Mac 平台

PS:如果首次安装 Clash for Windows 提示已损坏,可以在终端运行 sudo xattr -r -d com.apple.quarantine /Applications/Clash\ for\ Windows.app

  1. 将编译的内核重命名为 clash-darwin

  2. 关闭 Clash for Windows,解压下载文件后替换原内核,在终端执行

# 备份原版内核
mv /Applications/Clash\ for\ Windows.app/Contents/Resources/static/files/darwin/arm64/clash-darwin /Applications/Clash\ for\ Windows.app/Contents/Resources/static/files/darwin/arm64/clash-darwin.bak
# 替换内核
mv clash-darwin /Applications/Clash\ for\ Windows.app/Contents/Resources/static/files/darwin/arm64/clash-darwin
# 授予新内核权限
sudo chown root:admin /Applications/Clash\ for\ Windows.app/Contents/Resources/static/files/darwin/arm64/clash-darwin
sudo chmod +sx /Applications/Clash\ for\ Windows.app/Contents/Resources/static/files/darwin/arm64/clash-darwin
  1. 重新打开 Clash for Windows 使用即可

Clash 付费节点付费订阅服务:

Clash 付费节点