跳到主要内容

模块

在 Egern 中,模块是预设定的配置片段,用户可以方便地启用或禁用一组特定的网络处理规则。模块的功能覆盖范围广泛,可以包含规则、URL 重写、头部重写、主体重写、Map Local、脚本、MITM、HTTP 抓取和面板等。当启用模块后,模块内的配置将会被合并到 Egern 的主配置中。

模块引用配置

在主配置文件中引用模块:

  • name (string), 可选

    模块显示名称,覆盖模块文件内定义的名称。未设置时使用模块文件中的 name 字段或 URL。

  • url (string), 必填

    模块文件的地址,可以是本地文件路径或远程链接。

  • compat_arguments (object), 可选

    传递给模块的参数,用于覆盖模块文件中定义的默认参数值。参数会在模块解析时进行变量替换。

  • update_interval (integer), 可选

    当模块文件是远程链接时,此参数指定模块的更新间隔(秒)。默认值为 86400(24 小时)。

  • enabled (boolean), 可选

    控制模块是否启用。默认值为 true

配置示例

modules:
- name: "广告过滤"
url: "https://example.com/adblock.yaml"
enabled: true
update_interval: 86400
- url: "https://example.com/custom.yaml"
compat_arguments:
API_KEY: "your_api_key"
REGION: "cn"

模块文件格式

模块文件本身是一个 YAML 格式的文件,包含元信息和配置内容。

元信息字段

  • name (string), 可选

    模块名称。

  • description (string), 可选

    模块描述。

  • author (string), 可选

    模块作者。

  • homepage (string), 可选

    模块主页 URL。

  • manual (string), 可选

    使用说明 URL。

  • icon (string), 可选

    模块图标,支持 SF Symbols 名称或 URL。

  • open_url (string), 可选

    打开设置页面的 URL。

  • compat_arguments (object), 可选

    模块参数的默认值。

  • compat_arguments_desc (string), 可选

    模块参数说明文档。

配置内容字段

模块文件可以包含以下配置项,这些配置会与主配置合并:

  • dns (object), 可选

    DNS 配置。

  • rules (array), 可选

    规则列表。

  • url_rewrites (array), 可选

    URL 重写列表。

  • header_rewrites (array), 可选

    Header 重写列表。

  • body_rewrites (array), 可选

    Body 重写列表。

  • map_locals (array), 可选

    Map Local 列表。

  • scriptings (array), 可选

    脚本列表。

  • mitm (object), 可选

    MITM 配置。

  • http_captures (array), 可选

    HTTP 捕获主机名列表。

  • panels (array), 可选

    面板列表。

  • bypass_tunnel_proxy (array), 可选

    绕过隧道代理的域名列表。

  • real_ip_domains (array), 可选

    使用真实 IP 的域名列表(不使用 Fake IP)。

配置示例

name: "广告过滤模块"
description: "过滤常见广告和追踪器"
author: "module-author"
homepage: "https://github.com/example/adblock-module"
icon: "shield.fill"

compat_arguments:
BLOCK_MODE: "reject"

rules:
- domain_suffix:
match: "ad.example.com"
policy: REJECT

url_rewrites:
- match: "^https://ads\\.example\\.com"
location: "https://reject/"
status_code: 307

mitm:
hostnames:
- "*.example.com"

panels:
- name: adblock-info
title: 广告过滤
content: "已启用广告过滤"
icon: shield.fill