clash proxy

在Clash 中配置代理,实质上就是编辑 config.yaml 文件,让客户端知道应连接哪个上游代理、如何将代理分组,以及哪些流量应通过代理转发。本教程将逐步讲解该文件,添加HTTP或SOCKS5代理条目,并说明何时应使用系统代理而非TUN模式。

Clash 是一款用 Go 编写的规则型代理客户端。本指南涵盖目前仍在实际使用的分支版本:Clash Meta(mihomo)、Clash Verge 和 ClashX。读完后,你将配置好一个可用节点、一条路由规则,并能确认出口 IP 是否已变更。

DataImpulse 是一家注重合规的代理服务商,在 195 个国家提供超过 9000 万个住宅、移动和数据中心 IP 地址。其采用按量付费模式,价格低至每 GB 1 美元,流量永不过期,广泛用于网页抓取、广告验证、价格监测、市场调研和多账户管理。

要点速览

  • Clash 代理基础: Clash 是一款规则型代理客户端,读取单个 config.yaml 文件中的三层配置:proxies、proxy-groups 和 rules,默认使用本地混合端口 7890。
  • 推荐代理类型: 轮换住宅代理使用真实用户 IP,更有助于通过检测。
  • 价格: 每 GB 1 美元起,按量付费,流量永不过期,无需订阅。
  • 覆盖范围: 覆盖 195 个国家,超过 9000 万个合规来源的 IP。
  • 可靠性: 成功率为 99.51%,在 G2 获得 4.8/5 的评分。
  • 协议与定位: 支持 HTTP、HTTPS 和 SOCKS5,并提供国家定位功能。
How Clash routes traffic through proxies and rules

什么是 Clash 代理工具?

Clash 是一款用 Go 编写的规则型代理客户端,会根据你在 YAML 配置文件中定义的规则,经由上游代理转发网络流量。它本身不提供代理,而是将流量连接到你已有代理的路由器。

由于原版 Clash 和 Clash for Windows 项目已归档,大多数用户现在使用仍在维护的分支版本:Clash Meta(mihomo 内核)、Clash Verge Rev(基于该内核的跨平台 GUI)或 macOS 上的 ClashX Meta。它们共用相同的 config.yaml 格式,因此以下步骤适用于所有版本。Clash 不是代理服务商或 VPN 服务,也不能免费提供匿名 IP;你需要自行准备上游代理凭证,例如来自住宅代理套餐的凭证。

Clash 如何通过代理转发流量?

Clash 通过由三部分组成的配置转发流量,我们称之为 Clash 的三层路由模型:proxies 定义节点,proxy-groups 决定使用哪个节点,rules 决定哪些流量进入哪个组。掌握这三层配置,便掌握了核心用法。

下面是最小可用配置。mixed-port 会开启一个本地端口,同时接受 HTTP 和 SOCKS5 客户端连接;7890 是传统默认端口。

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

proxies: []
proxy-groups: []
rules: []

这三层按从上到下的顺序发挥作用:

  • proxies(第1层): 实际的上游代理节点,每个节点均包含服务器、端口和凭证。
  • proxy-groups(第2层): 命名的选择器或自动测速组,可从一组节点中选出一个代理。
  • rules(第3层): 如 DOMAIN-SUFFIX 或 GEOIP 等匹配规则,会将命中的流量发送到指定分组。

请求进入本地端口后,Clash 会从上到下读取规则。首条匹配规则指定一个分组,再由该分组将流量转发至代理。关于其工作原理,请参阅我们的什么是网页代理入门指南。

如何在 Clash 中添加 DataImpulse 代理?

要添加代理,只需在 proxies 键下新增一个条目,其中包含类型、服务器、端口和登录凭证。Clash 同时支持 socks5 和 http 两种代理类型,因此可使用服务商支持的任一协议。

下面是 DataImpulse 的 SOCKS5 配置条目。请将服务器、端口、用户名和密码替换为控制面板中的实际值;DataImpulse 支持 HTTP、HTTPS 和 SOCKS5,基础价格已包含国家定位功能。

proxies:
  - name: "di-socks"
    type: socks5
    server: gw.dataimpulse.com
    port: 823
    username: "YOUR_USERNAME"
    password: "YOUR_PASSWORD"
    udp: true

如果你更倾向于 HTTP,同一节点的 http 配置如下:

proxies:
  - name: "di-http"
    type: http
    server: gw.dataimpulse.com
    port: 823
    username: "YOUR_USERNAME"
    password: "YOUR_PASSWORD"
    tls: false

接下来,在 proxy-group 中引用该节点,以便在不修改规则的情况下切换节点。select 组可手动选择;url-test 组会自动选择响应最快的节点。

proxy-groups:
  - name: "PROXY"
    type: select
    proxies:
      - di-socks
      - di-http
      - DIRECT
  - name: "AUTO"
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    proxies:
      - di-socks
      - di-http

最后,添加规则让流量实际使用该分组。规则从上到下读取,首个匹配项生效,因此应将具体规则置于捕获所有流量的 MATCH 行之前。

rules:
  - DOMAIN-SUFFIX,ipify.org,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

在 GUI 中重新加载配置,或重启内核后,该节点应会出现在 PROXY 组中供你选择。关于账户设置和凭证格式,请参阅我们的代理身份验证指南。

应使用 Clash 的系统代理模式还是 TUN 模式?

日常浏览器和应用流量适合使用系统代理模式;需要接管忽略代理设置的应用时,则使用 TUN 模式。系统代理模式会让操作系统将支持该设置的应用指向 Clash 的本地端口,而 TUN 模式会创建虚拟网络适配器,在 IP 层拦截几乎全部流量。

实际区别在于:系统代理只影响遵守操作系统代理设置的程序,例如浏览器和许多CLI工具。TUN模式能够捕获原始套接字、游戏以及绕过代理的顽固应用,这也是Clash Verge提供TUN切换开关的原因。以下是决策矩阵:

  • 以下情况应使用系统代理模式:主要代理浏览器或脚本、希望使用简单开关,且没有管理员权限。
  • 以下情况应使用 TUN 模式:某个应用忽略代理设置、你需要整个设备的流量路由,或所依赖的规则必须识别 UDP 和非 HTTP 流量。
  • 以下情况应避免 TUN 模式:没有管理员或 root 权限时(因为它需要安装虚拟适配器),或企业 VPN 已控制路由表时。

在 Clash Verge 中,两者是独立开关,因此可同时启用;不过,测试新节点时,单独使用系统代理会更轻量,也更可预测。

在加载代理方面,Clash与Shadowrocket和V2Ray相比如何?

对于仅仅加载一个HTTP或SOCKS5代理而言,Clash是最以规则为驱动的选项,Shadowrocket在iOS上最容易使用,而V2Ray在协议上最灵活,但对初学者最不友好。三者都可以连接一个标准代理;区别在于平台、配置风格和路由深度。

客户端 平台 配置风格 基于规则的路由 加载代理的最佳选择
Clash Meta / Verge Windows、macOS、Linux、Android YAML 文件(proxies、groups、rules) 深度支持,按域名和GEOIP 众多节点加上精细规则
Shadowrocket 仅限 iOS 和 iPadOS GUI 和 URL 导入 中等程度,规则集 在 iPhone 上快速配置单个代理
V2Ray / v2rayN Windows,跨平台内核 JSON文件 通过路由块实现灵活性 自定义传输方式和协议

如果只是把浏览器指向一个节点,三者都可以。而一旦你想要条件路由:只让特定域名走代理,其余流量保持直连:Clash就会更胜一筹。有关用于这种分流路由的廉价节点,请参阅我们的数据中心代理

设置完成后如何测试出口IP?

通过Clash的本地端口发送请求并检查返回的地址,以此测试你的出口IP。如果IP与你的真实IP不同,并且与代理所在国家相符,说明路由生效了。

在系统代理模式下,直接将curl指向混合端口:

curl -x http://127.0.0.1:7890 https://api.ipify.org
# expected: the proxy exit IP, not your home IP

在TUN模式启用时,你不需要-x标志,因为虚拟适配器已经拦截了请求:

curl https://ipinfo.io/json
# check the "ip" and "country" fields match your node

如果IP没有变化,请按顺序检查各层:确认该节点在其分组中显示了延迟数值,确认某条规则将该流量发送到了该组,并确认应用遵守了你所选择的模式。这与Clash的三层路由模型相对应,可以快速定位问题。

通过Clash运行代理有哪些局限性?

Clash是一个路由器,而不是代理来源,因此它的可靠性受限于你提供给它的代理,以及你编写规则的严谨程度。在依赖它之前,有几个局限值得了解。

  • 没有自己的IP: 没有真正的上游代理,Clash无法让你匿名;一个质量差或免费的节点仍然会泄露信息或被封锁。
  • 规则顺序错误: 由于第一条匹配的规则获胜,一条放得太靠前的宽泛规则可能会在不知不觉中把流量导向错误的方向。
  • TUN需要权限: TUN模式会安装一个虚拟适配器,需要管理员或root权限,并且可能与现有的VPN发生冲突。
  • 分支差异: 原始的Clash已被归档,因此配置键在Clash Meta、Verge以及较旧的Clash for Windows版本之间可能略有不同。
  • 不是一套抓取方案: Clash负责路由流量,但对CAPTCHA、指纹识别或封禁没有任何作用;关于这方面,请阅读如何在不被封禁的情况下进行抓取

DataImpulse在195个国家提供带有轮换或粘性会话的上游节点,但它不销售静态ISP代理,不是托管式抓取API,也不是免费的网页代理服务。Clash负责路由,代理套餐负责IP。

Clash system-proxy mode vs TUN mode

常见问题

Clash的默认代理端口是什么?

Clash传统上使用端口7890作为其HTTP或混合本地端口,使用7891作为SOCKS5端口。较新的配置通常会设置一个单一的mixed-port,例如7890或7897,同时接受HTTP和SOCKS5连接。

Clash的TUN模式与系统代理有什么区别?

系统代理模式只路由遵守操作系统代理设置的应用,主要是浏览器和一些CLI工具。TUN模式会创建一个虚拟网络适配器,在IP层拦截几乎所有流量,能够捕获忽略代理设置的游戏和应用,但需要管理员权限。

我可以在Clash Verge中使用SOCKS5代理吗?

可以。添加一个类型为socks5的proxies条目,并加上服务器、端口、用户名和密码,然后在proxy-group中引用它。Clash Verge与Clash Meta共享相同的config.yaml格式,因此同一条目可以在这些分支版本中通用。

为什么我在Clash中添加代理后出口IP没有变化?

通常是因为某条规则没有将你的流量发送到代理组,应用在系统模式下忽略了代理,或者该节点没有延迟数据、健康检查失败。请确认该节点显示了ping值,某条规则指向了它所在的组,并且模式与应用相匹配。

Clash是VPN还是代理提供商?

都不是。Clash是一款基于规则的代理客户端,通过你提供的上游代理路由流量。它不托管IP,因此你仍然需要一个代理套餐,例如住宅或数据中心提供商,来为它提供出口节点。

什么情况下DataImpulse不是合适的选择?

如果你需要静态ISP代理、完全托管的抓取API,或需要访问银行和政府网站,DataImpulse不是合适的工具。它专注于轮换住宅、移动和数据中心代理,用于收集公开数据和访问内容。

为 Clash 配置获取代理节点

一旦你的config.yaml准备就绪,唯一需要的就是一个可靠的出口节点。你可以创建一个DataImpulse账户,直接将SOCKS5或HTTP凭证放入你的proxies代码块中,从包含国家定位的按量付费流量开始。


Share article: