撸了一个 Clash 的 GUI, 自带规则开箱即用

2022-05-15 09:49:35 +08:00
 wenjie0032

一直使用 ClashX 连接机场, 但是配置文件的维护上很不方便

一是需要手动维护, 二是订阅多个机场时 proxy 的规则无法复用, 需要来回复制

所以就撸了一个小工具, 自带规则, 维护相关配置, 使用时只需要填写机场的订阅链接即可

默认的规则已经基本够用了, 包括: 广告屏蔽, 本地走 REJECT, GFW 走 proxy 等

技术栈: 使用 wails : go + webview 来构建程序

github 直达: https://github.com/daodao97/EasyClash

欢迎下载使用

11863 次点击
所在节点    程序员
105 条回复
hxse
2022-05-15 12:35:49 +08:00
有计划支持 windows 吗
Buges
2022-05-15 12:44:03 +08:00
提醒一下使用 clash 内置分流的用户,如果你启用了 clash 内置的 dns 功能,并且配置中有这样的项(来自官方示例):
nameserver:
- 114.114.114.114 # default value
- 8.8.8.8 # default value
- tls://dns.rubyfish.cn:853 # DNS over TLS
- https://1.1.1.1/dns-query # DNS over HTTPS
- dhcp://en0 # dns from dhcp

那么你访问的*所有域名(包括走代理和直连的)将会全部暴露给本地 ISP 运营商与有关部门*。
YOU HAVE BEEN WARNED

因为 clash 具有这样的分流逻辑:获得一个域名后向所有 dns 服务器并发发送请求,取最快返回结果并判断是否为 CN ip ,且 clash 的 dns 请求只支持直连,无法通过代理发送。所以如果你的 nameserver 列表中包含:任何非 DoT 和 DoH 的项;任何大陆服务器。那么你的所有请求都会暴露。
除此以外如果你使用包括 chinadns 在内的各种同类软件都会出现同样的后果。
Macolor21
2022-05-15 13:01:58 +08:00
> 二是订阅多个机场时 proxy 的规则无法复用, 需要来回复制

热知识,Clash 有个配置叫:proxy-providers

https://github.com/Dreamacro/clash/wiki/configuration#proxy-providers
Macolor21
2022-05-15 13:03:38 +08:00
@Macolor21 #22 我没有多机场,但自己写一份规则,然后多个订阅链接,应该满足这个需求
ericgui
2022-05-15 13:09:35 +08:00
golang 也可以写 GUI 了,不错
yanyumihuang
2022-05-15 14:42:29 +08:00
@Buges 你的说法是不完整的。fakeIP 模式下,第一如果你规则列表里只有域名或者 ip 规则后面有 noreslove ,那只有在匹配完成后才进行 dns 请求,直连就走 nameserver 里面写的 dns ,走代理则直接将域名发往远方服务器。如果你有 IP 类规则或者 geoip ,那只有在匹配到 IP 类规则时,才会进行 dns 请求来进行对比,匹配完成后跟上面的流程一样。只要有 IP 类的匹配规则就必须要进行 dns 解析,无解。这与 clash 无关,跟规则有很大关系
magicdawn
2022-05-15 15:25:33 +08:00
啊, 我也写过 clash 配置合并工具
https://github.com/magicdawn/clash-config-manager
Buges
2022-05-15 16:14:50 +08:00
@yanyumihuang 不会真有人不使用 IP 类规则吧? geoip 匹配 CN ,这基本是分流的标配了,也只有 IP 匹配相对准确。clash 的 dns 模块不支持走代理只能直连,再加上从官方示例到各种托管提供的配置都在使用这种类似 chinadns 的“智能”分流方式,如果用户没有非常仔细地阅读文档并自己编写配置的话,那么他十有八九正在暴露所有访问的域名而不自知。另外还有些事情连文档都没写,不去仔细看代码都发现不了。你知道节点不支持 UDP 的情况下,你的 UDP 流量会怎么样吗?
sunny2580839896
2022-05-15 16:33:41 +08:00
@Macolor21 #23 可以使用预处理
studyingss
2022-05-15 17:00:23 +08:00
@Buges 然而并没有其他办法可以完全避免这一点,如果想完全控制 dns 解析行为,可以考虑使用 script 模式。

另外,有 ip 规则不代表一定会进行 ip 解析,假如规则这么写:

DOMAIN,google.com,Proxy
GEOIP,CN,direct
match,Proxy

访问 google.com 的时候是一定不会产生 dns 请求的,因为匹配到第一条直接就走代理了。

简单来说一个配置了代理规则的规则列表并不会导致“所有域名”暴露,起码常用域名不会暴露。

最后,你的第一句话就有误导,“如果你启用了 clash 内置的 dns 功能”,“域名暴露给 ISP”与是否启用 clash 内置 dns 并没有太大关联。

如果遇到会触发 dns 解析的情况,是否配置 dns 功能都不能阻止你的域名暴露,如果你只是简单地关掉了内置 dns ,却没有采取其他措施,你的 dns 请求也只是通过系统默认的 dns 而已,而系统 dns 一般也是运营商下发的。
Buges
2022-05-15 17:15:42 +08:00
@studyingss 你怎么就觉得没有呢,最简单的,全部通过 dot/doh 走代理解析,再配合一个大陆常用域名的白名单,不过就是牺牲一些准确性罢了。再比如用 edns 提供一个任意的 CN ip 通过代理以 dot/doh 向 8888 查询,再判断结果是否为 CN ip ,是的话再从国内直连解析。
当然以上这些使用 clash 内置的 dns 与规则分流是做不到的,连解析都不能走代理。问题就是 clash 的 dns 模块本身,不使用 clash 内置 dns 可以用外置的 dns ,配好走代理的 dot/doh ,你告诉我怎么会泄露?
另外像你这种规则写法是没必要的,除了耐飞等需要特殊配置的以外,在能被兜底规则匹配到的情况下提前加规则有啥意义?就算你请求中的少部分“热门”、“常用”域名没有产生 DNS 请求,你访问的不存在于规则列表中的域名是比前者更不宜暴露的。
WAHSUN
2022-05-15 17:41:32 +08:00
star +1
Celebi
2022-05-15 17:46:11 +08:00
@Buges #31 怎么使用外置的 dns ?
yanyumihuang
2022-05-15 17:49:34 +08:00
@Buges clash 也是支持 doh 和 dot 的。这种写法有可以避免一次 dns 请求,某种程度上可以加快访问速度。说到底是规则的问题不是 clash 本身的问题。你觉得这种泄露查询记录,那你可以通过配置加密 dns 和修改规则来避免。
lion9527
2022-05-15 17:55:06 +08:00
有 win 版计划吗?
Buges
2022-05-15 17:55:19 +08:00
@yanyumihuang 你配置哪个 doh/dot ?如果是境内的那结果一样,如果是境外的现在还有哪个境外 dot/doh 服务器可以直连?就算能连上,极差的速度和稳定性对网络访问体验的影响就不用我多说了。
clash 的 dns 模块就是这样设计的,无论你怎么写规则,只要用到 dns 就会泄露。你非要说“用到 dns 就是规则的问题”那我也无话可说。
@Celebi 就正常使用啊,把 clash 的 dns 关掉,再启动另一个 dns 服务,然后把客户端使用这个服务。
yanyumihuang
2022-05-15 17:56:25 +08:00
@Buges clash 本身的优点就是不同的域名可以使用不同的节点。我查了第三方规则,无论是 aclssr 还是神机,他们的 IP 类规则都加了 noreslove ,也就说如果你用他们的规则,且自己不乱写,dns 泄露并没有你想象的那么严重。最后解决 dns 泄露的唯一方法就是加密 dns ,而这 clash 本身也是支持的,所以请不要将自己的使用问题怪罪到工具上。
yanyumihuang
2022-05-15 18:02:59 +08:00
@Buges 建议你去好好看看 github 的 issue 。
给你一个最简单的避免 dns 泄露的办法,规则里只写域名,ip 类后面加上 noreslove ,不用 geoip ,这样就可以解决
或者你可以用 adghome ,用 adh 来进行 dns 分流。
clash 这样设计在规则完善的情况下可以减少一次 dns 请求。
Buges
2022-05-15 18:09:04 +08:00
@yanyumihuang IP 类规则 noresolve 除了直接访问 ip ,通过域名解析到的都不会生效了,大部分场景都没意义了。这些规则加 resolve 是为了避免影响用户的配置,正常来说匹配到这些规则前已经被其他规则 resolve 过了。
你倒是说说怎么配置加密 dns 能正常使用还不泄露。我上面说过了,如果 dot/doh 指定了境内的服务器,那同样还是泄露,只不过泄露的对象从 ISP 变成了 dns 提供商,最后都会归到有关部门;如果只指定境外的 dot/doh 服务,且不说大部分都被屏蔽了,就算能直连对响应速度的影响也是剧烈的。
clash 的 dns 模块不支持通过代理解析,这是“把自己的使用问题归到工具上”。
另外 clash 的 dns 提供的 dns 模块 nameserver 和 fallback-nameserver 的并发查询本身就是 leaked by design ,泄露就是软件设计的符合预期的行为。
Buges
2022-05-15 18:11:59 +08:00
@yanyumihuang 然而我看到的 issues 显示类似问题基本都没有回应。至于用 adghome ,就符合我最开始所说的不使用 clash 内置的 dns ,如果用了 clash 内置的 dns 必然会暴露。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852908

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX