家里老人用云视听极光看电视(长虹无法 root 的老机型),腾讯的广告真是丧心病狂,广告都是七八十秒起步,偶尔会有 500+的,各种理财课程的割韭菜广告,辣耳朵!
路由器刷的 OpenWrt ,广告插件用的是 DNSfilter ,搜了几个广告规则没啥效果,似乎云视听极光的广告尤其难搞。
通过路由器抓包分析,广告视频链接如下格式:
http://sv-video.play.t002.ottcn.com/playlist.m3u8?vids=w3715yeyz3p|w3728l84yj1&sdtfrom_list=v8256|v8256&speed=&dtype=1&defn=&platform=
将域名sv-video.play.t002.ottcn.com加入 DNSfilter 黑名单测试,没有效果!
进一步分析发现有这样的请求数据:
http://182.254.116.116/d?dn=sv-video.play.t002.ottcn.com&ttl=1
这是用 HTTP 请求代替了本地的 DNS 请求,发现还有类似的其它几个域名解析 HTTP 请求,是用来播放正常视频的域名
所以不能直接把 IP182.254.116.116加入黑名单了事
接着就想到用防火墙规则来搞,目标地址:182.254.116.116,关键字:sv-video.play
谷歌了一下,拼凑出了下面的规则:
iptables -A OUTPUT -d 182.254.116.116 -m string --string "sv-video.play" --algo bm -j DROP
reload 防火墙后测试,依旧没有效果
请大侠指点
附上 iptables --list 回显信息:
[root@OpenWrt:16:27 ~] # iptables --list
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             match-set blockip dst /* _DNSFILTER_RULE_ */
ACCEPT     all  --  anywhere             anywhere
...
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             match-set blockip dst /* _DNSFILTER_RULE_ */
DROP       all  --  anywhere             182.254.116.116      STRING match  "sv-video.play" ALGO name bm TO 65535
抓包数据显示,httpdns请求并不是加密的https,如下图所示:

|      1yy915cn      2023-01-15 17:01:07 +08:00 via Android  1 一直用的 Adbyby Plus+,用了好多年了,不过要添加第三方规则,自带的好像很久没更新不行了,我用了小下面这几个,电视版爱优腾都没广告 https://gitee.com/xinggsf/Adblock-Rule/raw/master/rule.txt https://gitee.com/xinggsf/Adblock-Rule/raw/master/mv.txt https://gitee.com/halflife/list/raw/master/ad.txt https://anti-ad.net/easylist.txt | 
|  |      2XIU2      2023-01-15 17:01:26 +08:00 我对 iptables 了解不多,你把 -A OUTPUT 改成 -A INPUT 试试。 | 
|      3huangya      2023-01-15 17:24:40 +08:00 两点: 1. OUTPUT 肯定不是,因为这个包不是路由器本机发出来的。换成 FORWARD 看看。 2.你刷的这个版本看起来 iptables 不用了。用的是 nftables 。所以你添加的 iptables 是否有用,我还不十分肯定。你刷的是哪一个版本? | 
|  |      4ryd994      2023-01-15 17:27:18 +08:00 via Android 用错 chain 了。应该加到 forward 里。output 是本机发出。你这个连接是从电视到公网,不是 input 或者 output 。 | 
|  |      5ETiV      2023-01-15 17:40:14 +08:00 via iPhone 多找几个 IP ,httpdns 为了高可用会有一个 IP 列表的 然后,有可能你播放的视频流,也走了 httpdns…如果屏蔽了你都看不了了怎么办… | 
|  |      6lon91ong OP @huangya 用的 OpenWrt 是[这个]( https://supes.top/?version=22.03&target=ramips%2Fmt7621&id=phicomm_k2p),分支: 22.03.3 内核: 5.10.161, **使用 Firewall4(nftables)** | 
|  |      7lon91ong OP @huangya 麻烦大佬帮忙翻译一下楼顶的 iptables 规则,我用 iptables-translate 翻译的规则不能用 | 
|  |      8lon91ong OP | 
|      9qq6r      2023-01-15 19:28:52 +08:00 https 是加密的,iptables 没法解密,你的规则起不了作用 | 
|  |      11WhatTheBridgeSay      2023-01-15 19:58:24 +08:00 没意义了,老老实实开会员,你敢禁掉这个 httpDNS 腾讯电视版就敢给你报无网络连接 |