广告屏蔽大师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。进行用户名和指令的设定。 点ssh前的圆点 远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

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: