openwrt折腾记5 广告屏蔽大师adbyby深度调优(借用老毛子完美数据文件)

广告屏蔽大师adbyby 深度调优

    • 本文的精进
    • 起始和结局
    • 一、探索试融合试用adbyby规则文件
    • 二、对luci-app-adbyby-plus更新lazy.txt,video.txt文件脚本adbybyupdate.sh中的地址修复和维护。
    • 三、规则更新-初步探索
    • 四、规则好像也只有HTTP,简化安装流程

本文的精进

(最新提醒:本文就是瞎折腾,运行半天后,直接断网,我就不知道这半天是怎么运行丝滑的) (反提醒,重启后断网是因为tmp内存主程序丢失,估计是被自己删除了。然而又判断data存在,继续重定向注册表,却没有主程序,造成了断网。手工把/etc/init.d/adbyby,中的判断逻辑给改一下,这样就可以用了。为此我把adblock给删除了。也是醉了)

(最终提醒,老毛子规则更新里面六个地址。只要把其中一对lazy,video加入adguardhome好像也能起到屏蔽的效果,和adbyby一模一样。虽然在我老慢牛的x86虚拟旁路由,有时会失效。但是也算省了本文的折腾了,adguarhome,好像只做dns。就行。网关还是原网关就可。)

(逆向提醒,adguardhome半天以后,突然失效,任何广告不阻挡了。按照adguardhome这样的表现,我开始怀疑我脑子出了问题。需要注意在是,有时候dns默认使用ipv6.而本地的IPv6多数在变动之中,所以应该是不得不关闭的。在dns中只留下唯一ADGHome的主机。测试一下拦截baidu.之类在自定义规则,一通操作后系统把电视盒子拦截了-或者是我以为ADG拦截的。然后写了最终提醒,接着马上打脸,突然失效,发现老毛子+adbyby规则的美妙)

(反思,做为仅靠dns和host在阻止工具,保德何能达到了去除广告的效果来着。我不禁陷入了沉思,当初是怎么起作用的呢。他不能拦截和分析内容啊。这是adbyby这样的东西才能干成的事啊。起码要能对地址后面的内容分析出来。难道我的adbyby在后台没有关。但是在从前,adguardhome也曾部分生效过,而且马上失效了。哎,)

起始和结局

高手看完这个可以走了,节省时间。有兴趣可以替换luci-app-adbyby-plus下,openwrt /usr/share/adbyby/adbybyupdate.sh 是程序首页手工更新调用之处。
它里面升级data/lazy.txt, video.txt可用老毛的规则生成bash函数替换。
借鉴来自于padavan始动脚本(原始文件/usr/scripte/前端后端监控状态)其中有用的代码如下:

update_ad_rules () {

xwhyc_rules="$hiboyfile/video.txt"
xwhyc_rules2="https://opt.cn2qq.com/opt-file/video.txt"
xwhyc_rules1="https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/video.txt"
xwhyc_rules0="https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/video.txt"
logger -t "【Adbyby】" "下载规则:$xwhyc_rules"
wgetcurl.sh /tmp/bin/data/video.txt $xwhyc_rules $xwhyc_rules1 N 5
[ ! -s /tmp/bin/data/video.txt ] && wgetcurl.sh /tmp/bin/data/video.txt $xwhyc_rules $xwhyc_rules0 N 5
xwhyc_rules="$hiboyfile/lazy.txt"
xwhyc_rules2="https://opt.cn2qq.com/opt-file/lazy.txt"
xwhyc_rules1="https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/lazy.txt"
xwhyc_rules0="https://coding.net/u/adbyby/p/xwhyc-rules/git/raw/master/lazy.txt"
logger -t "【Adbyby】" "下载规则:$xwhyc_rules"
wgetcurl.sh /tmp/bin/data/lazy.txt $xwhyc_rules $xwhyc_rules1 N 100
[ ! -s /tmp/bin/data/lazy.txt ] && wgetcurl.sh /tmp/bin/data/lazy.txt $xwhyc_rules $xwhyc_rules0 N 100

}

路由器固件仓库广告屏蔽工具老毛子胜openwrt
在上个文章中介绍了,我极力推荐的padavan,虽然是老版本 3.4.3.9-099_23-02-1,它的adbyby能力是真强,截至2023-04012,对电视应用来说十分可行。而且有后备adm阿呆猫也能达到一样效果,且koolproxy我没来及试用。
openwrt折腾记2-广告拦截adbyby与pass

而在这个文章中介绍了openwrt下的luci-app-adbyby-plus。广告屏蔽大师。它就弱了很多,最新的也不行。而看完本文才知道他为什么不行了

完成了两个系统下,广告屏蔽的规则融合。
一开始我没有搞更改下载地址,动态下载好像不太有用,高级设置第三方订阅也没用,后来知道这里只对adblock也就是域名IP拦截有用,对地址目录失效。。

一、探索试融合试用adbyby规则文件

经过我两周时间的比对源码分析原理,
测试思路openwrt下的openwrt adbyby-plus做了很多过分的事, 一切规则下载 先停用,关闭adblock功能,因为他会屏蔽有用的内容。打开全局模式最保险的作法。全部复制padavan老毛adbyby的data包-开始融合 。重启服务。
并把升级sh脚本替换成没有规则url的版本。
因为要彻底转老毛的规则,一切关闭。免得影响。
之所以这样是因为老毛的好用,临时验证一下。是否可以,


#!/bin/bash
#adblock的临时文件,下载下来的规则在这里
rm /tmp/adnew.conf
# rm /usr/share/adbyby/dnsmasq.adblock 卸载用
#下载规则的脚本
 cp /root/ad-update /usr/share/adbyby
 cp /root/adblock.sh /usr/share/adbyby
 #下载规则的lua,页面订阅按钮
 cp /root/adbyby.lua  /usr/lib/lua/luci/controller/
 #规则文件夹
 cp -r  /root/data /usr/share/adbyby
 cp -r /root/data /tmp/adbyby
 #涉及到lua,为了停止规则需要清空lua缓存
rm /tmp/luci-indexcache

如果想避免以前规则的影响,可以卸载一次从头 开始,卸载后清理一下再重装一个干净的

rm /usr/share/adbyby/dnsmasq.adblock 
rm /etc/config/adbyby

然后运行一下我的脚本
或手工改变那几个地方,把data拷贝过去。
下载地址
目录结构如上
tar -zvxf root.tar.gz
安装luci-app-adbyby-plus
然后运行iniadby.sh

最后更新-
还想到一个更笨的方法,
安装完adbyby和luci-app-adbyby-plus以后,
下载地址https://op.supes.top/packages/x86_64/
ssh进去,找到
/usr/share/adbyby/data/
/tmp/adbyby/data/
下载

https://opt.cn2qq.com/opt-file/video.txt
https://opt.cn2qq.com/opt-file/lazy.txt

不管用什么方法,提前替换user.txt,.video.txt两个文件,最好在tmp复制了目录前,不然要连/tmp/adbyby/data
一块改。

二、对luci-app-adbyby-plus更新lazy.txt,video.txt文件脚本adbybyupdate.sh中的地址修复和维护。

最后终于发现老毛子用三个地址给规则保险,而openwrt只用了一个失效的地址获取规则。所以才失败了。
它的升级文件在三个地方,但地址都是不能用的。我这里也没有能用的地址,
https://github.com/adbyby/xwhyc-rules
关键点也就算这个官方文件,不仅仅没能更新。还停在很久以前。
adupdate.sh
手工改代码,量最小也要把uclient-fetch给换了,它访问github会报404错。 uclient-fetch --no-check-certificate
但是opt.cn2qq.com不报错但是缺少一个md5.json。所以不能直接在openwrt上用。
adbybyupdate.sh


```bash
#!/bin/sh

if [ ! -f "/tmp/adbyby.updated" ];then
  wget_ok="0"
  while [ "$wget_ok" = "0" ] 
    do 
    uclient-fetch --spider --quiet --timeout=3 http://www.baidu.com
    if [ "$?" == "0" ]; then
      wget_ok="1"
      
      touch /tmp/md5.json && curl -k -o  /tmp/md5.json https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/md5.json
      adm5=$(md5sum /tmp/md5.json | awk -F' ' '{print $1}')
      touch /tmp/adbyby/admd5.json && bmd5=$(md5sum /tmp/adbyby/admd5.json | awk -F' ' '{print $1}')
      if [ "$adm5" == "$bmd5" ];then
         echo "Rules MD5 are the same!"
         echo $(date "+%Y-%m-%d %H:%M:%S") > /tmp/adbyby.updated
         exit 0
      elif [ -s /tmp/md5.json ];then
      
        touch /tmp/lazy.txt && curl -k -o /tmp/lazy.txt https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/lazy.txt   
              touch /tmp/video.txt && curl -k -o /tmp/video.txt    https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/video.txt
        
        touch /tmp/local-md5.json && md5sum /tmp/lazy.txt /tmp/video.txt > /tmp/local-md5.json
        
        
        lazy_local=$(grep 'lazy' /tmp/local-md5.json | awk -F' ' '{print $1}')
        video_local=$(grep 'video' /tmp/local-md5.json | awk -F' ' '{print $1}')  
        lazy_online=$(sed  's/":"/\n/g' /tmp/md5.json  |  sed  's/","/\n/g' | sed -n '2p')
        video_online=$(sed  's/":"/\n/g' /tmp/md5.json  |  sed  's/","/\n/g' | sed -n '4p')
        
        if [ "$lazy_online"x == "$lazy_local"x -a "$video_online"x == "$video_local"x ]; then
            echo "adbyby rules MD5 OK!"
            mv /tmp/lazy.txt /tmp/adbyby/data/lazy.txt
            mv /tmp/video.txt /tmp/adbyby/data/video.txt
            mv /tmp/md5.json /tmp/adbyby/admd5.json
            echo $(date "+%Y-%m-%d %H:%M:%S") > /tmp/adbyby.updated
         fi
      fi  
    else
      sleep 10
    fi
   done
   
   rm -f /tmp/adbyby/data/*.bak
    
   kill -9 $(busybox ps -w | grep "/tmp/adbyby/adbyby" | grep -v grep | grep -v update| grep -v adblock | awk '{print $1}') >/dev/null 2>&1
   /tmp/adbyby/adbyby >/dev/null 2>&1 &
fi

`

md5是个综合的文件。
有为了省事的用户。可以直接在这里,存储两个文件就算了。
不折腾了。
这是对supes.top 提交的更新issues
https://github.com/kiddin9/OpenWrt_x86-r2s-r4s-r5s-N1/issues/1322#issue-1670022064

三、规则更新-初步探索

期望全靠DNS,Adguardhome,adblock,dnsfilter,这些应该是不行的。adbyby有对内容的分析,慢但不在乎性能。
太麻烦了,最近想升级lazy。但是无法监听网络包,分析不出广告特性来。
使用wireshark
可以对 路由器进行远程检测网络数据,在网卡中选择 ssh remote capture:sshdump。进行用户名和指令的设定。
openwrt折腾记5 广告屏蔽大师adbyby深度调优(借用老毛子完美数据文件)_第1张图片
点ssh前的圆点
openwrt折腾记5 广告屏蔽大师adbyby深度调优(借用老毛子完美数据文件)_第2张图片
远cature,写入网卡名,我用的br-lan这个网关,输入远程指令

tcpdump  host 192.168.1.102 -w-

在这之前在openwrt中opkg update && opkg install tcpdump
选择用户名密码,就能远程检测数据包了。

但是有巨大缺点也是adbyby奇怪的地方,对于https他是怎么分析和拦截的。还是说他是放过了呢。

四、规则好像也只有HTTP,简化安装流程

20230422使用说明
临时下载地址:http://pan.ezdial.cn/nasone/a/
主程序来源:github/luci-app-adbyby-plus-lite/
1,下载两个luci ipk文件,opkg install ,或者去https://github.com/kongfl888/luci-app-adbyby-plus-lite/ 查看使用说明。
2,在指定adbyby的平台后,启动一次服务。(手工关闭,它有可能造成dnsmasq启动失败,影响后面的更新,无法解析DNS)
3,进入ssh覆盖/usr/share/adbyby/ 下的两个sh, adupdate和adbybyupdate,chmod +X 。
4,执行两个sh。查看data是否成为我想用的xwhys,旧规则为啥有用我也不知道
5,的PLUS+模式下,把个别IP,加入成全局模式。

注意:以上方法在旁路由也有效
0422
修复开启adbyby,dnsmasq失败的问题。表现为无法dns,系统日志有报错
https://github.com/coolsnowwolf/lede/issues/10461
将adddns中的出错地址改成别的地方
把新的 adbyby 放入 /etc/init.d/覆盖原文件

add_dns()
{
	---	mkdir -p /var/etc/dnsmasq-adbyby.d
	+++	mkdir -p /tmp/dnsmasq.d/dnsmasq-adbyby.d

你可能感兴趣的:(openwrt,路由器,日常小操作,lua,开发语言,bash)