Clash For Windows 的 mixin 功能可以拿来汉化界面/去广告/etc.
去广告代码如下:
module.exports.parse = ({content}) => {
if (globalThis.document) {
const proto = Object.getPrototypeOf(globalThis.document.getElementById('app').__vue__)
const _init = proto._init
proto._init = function (...args) {
_init.apply(this, args)
this.$nextTick(() => {
{
const p = this.$el.parentElement
if (p) {
if (p.className == 'ad-img') {
p.parentElement.parentElement.remove()
}
}
}
})
}
}
return content
}
最近折腾 CFW 的分规则代理
发现这玩意对于订阅不提供 rules 的情况实在是太麻烦了,一怒之下写了个 mixin 用来自动生成分规则代理
在用到 vm
的时候 electron 报警告 deprecated in renderer process
,也就是说 mixin 是在浏览器侧跑的,那么理应可以访问到 document
试了一下成功取得了 app 的 vue
实例,那么只需要 patch 掉 vue.prototype._init
即可实现监听组件初始化
然后在里面用一次 this.$nextTick
即可获得 $el
直攻 DOM 组件
再去判定 className
,并将其下子 DOM 的 innerText
修改掉即可实现汉化
这个方法是有点逆天但是能用,并且比替换 asar 方便不知道多少倍,所以我觉得可以试着这样汉化一下 CFW
当然这个的作用不限于汉化,各位有能力的也甚至可以直接给 CFW 加点扩展功能
顺便宣传下自己之前写的项目:
clash-mixin,CFW mixin 插件管理器
clash-rules,CFW 任意代理实现分规则代理(无论供应商是否给你规则),对订阅链接十分友好
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.