去广告模块这东西,来源多了必然打架:同一个域名被两条规则重复拦截是小事,怕的是 A 模块的拦截规则误伤了 B 应用的正常接口,或者 MITM 主机名一开、App 因为证书锁定直接报网络错误。这篇记录两个模块的合并整理过程。
红果短剧:拦截要克制
整合了三个来源的规则之后,第一版拦得太狠:视频下发域名也被误拦,广告是没了,视频也放不出来。逐条排查后移除了几个视频域名,只保留确认是广告下发的部分。另一个关键决定是整个去掉 MITM 段——字节系 App 有证书锁定,开 MITM 会报网络错误,而域名拦截本身不依赖 MITM,照样能去广告。
微信三合一:合并先去重
公众号去广告、小程序去广告、外链解锁三个模块合成一个时,先把规则、重写、脚本地址全部拉平去重:MITM 主机名去重后不到一百条,脚本地址逐个实测可达再收进来。合并的收益是只维护一个文件,出问题时也只用查一个地方。
整理模块的通用顺序:先去重,再逐条问「这条拦的是广告还是正常功能」,拿不准的先注释、实测没问题再删——直接删掉的规则,出了问题很难想起来曾经有过它。