写给他人阅读的 Clash 配置示例,目标是讲清结构,而不是交出一份可登录的私人副本。YAML 规范把配置视为可序列化的数据:键值、列表和标量都会进入文档,注释则属于展示层信息。官方手册里的全局项和代理集合项,又明确列出了账号、密钥、证书、下载地址等字段。适用条件是你正在撰写或修改示例文本,准备公开发布或发给不需要使用你本人凭据的读者。
先圈出必须改写的字段
对照官方字段,而不是凭印象删改。全局配置中,authentication 以 user:pass 列表提供 http(s)/socks/mixed 代理的用户验证;secret 是 RESTful API 的访问密钥;tls 下的 certificate、private-key、ech-key 可以是 PEM 文本或路径。代理集合中,url 在 type 为 http 时需要配置;header 可写自定义请求头(文档示例使用 Authorization 一类键);age-secret-key 用于解密加密配置;payload 里会出现 server、password 等节点字段。这些位置一旦留下真实值,示例就不再只是结构说明。
判断依据:该值是否能用来访问你的代理端口、API、加密文件或远程集合。能,就必须替换;只是 mode、log-level、interval 这类非身份参数,可保留文档中的写法以说明含义。
用文档式占位值替换,并用注释标明
YAML 注释以 # 开头,解析时不会当作数据内容,适合在示例里写明“此处仅为结构演示”。替换时优先采用手册已经使用的说明性写法,避免另造一套读者无法对文档的词。例如验证列表写成 user1:pass1 这种组合,API 密钥写成空字符串以表示“需要你自己填写”,代理集合地址写成文档中的 http://test.com,节点口令写成 password,请求头里的令牌写成 token 1231231 这类明显的说明串。payload 的 server 也可保持为单词 server,提醒读者这是主机名位置而不是某个真实站点。
若示例必须提到订阅查询串,只保留 token=示例 这样的参数片段,不要写出完整网址,也不要编造未在来源中出现的域名。需要演示多行证书时,用明显的占位段落或只保留键名、把值改成 string 并加注释,不要粘贴真实 PEM。路径类字段若涉及工作目录之外的位置,文档要求通过 SAFE_PATHS 声明;示例里应写相对路径或虚构的目录说明,避免暴露本机绝对路径。
authentication:
- "user1:pass1" # 示例:请替换为你自己的用户与口令
secret: "" # 示例:API 访问密钥,勿填入真实值后公开
proxy-providers:
provider1:
type: http
url: "http://test.com" # 示例地址,发布前不得换成私人集合
替换后做一次“仍像私人数据吗”的核对
具体操作可以固定为三步:按上一节列出的键扫描全文;把能用于认证、解密或拉取集合的值改成说明性占位;在每个被替换键旁加 # 注释,写清读者应自行填入什么类型的数据。判断依据有三条:YAML 仍是合法的映射和列表(缩进、冒号、引号成对);占位值能从字面看出不是登录凭据;正文和代码块中的完整 http/https 地址只使用来源已经出现的说明性地址。
失败时下一步:若替换后结构散掉,回到 YAML 的缩进与引号规则,先保证流能被加载,再谈内容。若仍担心某字段像真实密钥,将该值改为空、明显单词或删除该键,并在注释中指向对应官方字段说明,而不是用另一串高熵字符“假装匿名”。若示例含 type: http 却没有说明 url 必须由读者自备,应补一句:示例集合地址不可当作可用来源。需要演示健康检查时,可使用文档列出的检查地址,例如 https://www.gstatic.com/generate_204,不要把私人探测地址写进教程。
资料:https://yaml.org/spec/1.2.2/
https://wiki.metacubex.one/config/general/
https://wiki.metacubex.one/config/proxy-providers/