mirror of
https://github.com/jxxghp/MoviePilot-Plugins.git
synced 2026-05-31 23:16:48 +00:00
- 数据模型重构: 全面引入 Pydantic 模型(ClashConfig, Proxy, ProxyGroup 等)替代原有字典结构,提供更严格的数据验证与类型安全。 - 数据迁移机制: 新增 v2.1.0 数据升级脚本,支持将旧版代理、策略组及规则数据自动迁移至新架构。 - 配置补丁系统: 实现基于 JSON Patch 的细粒度配置修补机制,替代旧版覆盖逻辑,提升配置修改的灵活性。 - 服务层优化: 重写 ClashRuleProviderService 以适配新对象模型,增强代码可维护性与扩展性。 - API模型同步: 更新相关 API 数据模型以保持与内部数据结构的一致性。 - 用户界面: 批量规则管理和数据项隐藏支持
67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
# Clash Rule Provider
|
||
|
||
**Clash Rule Provider** 是一个[MoviePilot](https://github.com/jxxghp/MoviePilot)插件,用于生成适用于 [Meta Kernel](https://github.com/MetaCubeX/mihomo/tree/Meta) 定制配置,便于增加、修改和删除规则,基于 Meta 内核丰富的代理组配置,提供灵活的路由功能。
|
||
|
||
- 即时通知 Clash 刷新规则集合
|
||
- 支持按大洲和国家分组节点
|
||
- 支持覆写出站代理
|
||
- GEO 规则输入提示
|
||
- 支持 [ACL4SSR](https://github.com/ACL4SSR/ACL4SSR) 规则集合
|
||
|
||
## 配置说明
|
||
|
||
### 规则集规则
|
||
|
||
用于添加能够在 Clash 中即时生效的规则,Clash Rule Provider 会根据每条规则的**出站**生成相应的**规则集合**。
|
||
|
||
### 置顶规则
|
||
|
||
这是Clash配置文件的`rules`字段中最顶部的规则,相比于其它规则它们拥有更高的优先级。Clash Rule Provider 会自动在此处添加**规则集规则**内的**规则集合**。
|
||
|
||
### 代理组
|
||
|
||
代理组中配置项的说明请参考 [Mihomo docs](https://wiki.metacubex.one/config/proxy-groups/),
|
||
这里以两个例子说明如何定制代理组:
|
||
|
||
- 访问北邮人的代理组
|
||
|
||
北邮人拒绝国内以及所有IPv4连接,可以添加一个 `type` 为 `url-test` 的代理组,在 `url` 中填写北邮人的地址,打开 `include-all-proxies`,其余配置项保持默认。
|
||
|
||
然后,在**置顶规则**中添加一条规则: `DOMAIN,xxx.pt,PtProxy` 。
|
||
|
||

|
||
|
||
|
||
- 访问ChatGPT的代理组
|
||
|
||
在**高级选项**中启用按大洲分组节点。选择Asia以外的代理组,设置`url`: `https://chatgpt.com/` , `expected-status`: `200` 。
|
||
|
||

|
||
|
||
### Hosts
|
||
|
||
如果需要自动更新此处使用的 Cloudflare IP, 可以通过其它[插件](https://github.com/wumode/MoviePilot-Addons)实现。
|
||
|
||
### 配置隐藏
|
||
|
||
如果希望某些代理组、规则或是代理节点仅在特定条件下可见,可以使用可见性限制功能。例如,可以设置某些规则集仅在特定网络环境下可见。
|
||
自定义表达式是个返回`bool`值的Python表达式,可以使用以下变量:
|
||
|
||
```python
|
||
# 请求 URL
|
||
url: str
|
||
# 客户端的IP地址
|
||
client_host: str
|
||
# 请求的标识符
|
||
identifier: str | None = None
|
||
# User-Agent
|
||
user_agent : str | None = None
|
||
```
|
||
|
||
表达式示例:
|
||
- `client_host == '192.168.1.1'`
|
||
- `identifier == 'office-laptop' and 'Mobile' in user_agent`
|
||
|
||
## 远程组件
|
||
|
||
[ClashRuleProvider-Remote](https://github.com/wumode/ClashRuleProvider-Remote) |