V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1465726777
V2EX  ›  CentOS

该如何对付智能电视开机广告?

  •  
  •   1465726777 · 2017-05-02 23:46:19 +08:00 · 6600 次点击
    这是一个创建于 2753 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准确说是电视机检测到软件更新,不升级就不能看,之前断掉 Wi-Fi 进入软件后重连就绕过了,正好最近在 CentOS 上安装了 dnsmasq,抓包得到广告是 api.xx.com/ads/ad.xml。原本打算把它直接指向 127.0.0.1 来着,但是这个域名还负责其它信息的初始化。

    现在觉得唯一的办法是把该域名指向本地,电视机请求时,无关流量原样发给真正服务器,相关流量从远程获取后在本地修改后再发回电视。

    现在的问题是不知道有什么软件能做到这一点,ettercap 发动 mimt 后修改不够稳定,而 apache 没有修改 http 请求的能力,最好的是抓包工具(指的 Fiddle,Charles 这种基于 http 的) ,可以任意放行、监听、修改流量,但是电视机没法设置 http 代理,并且 CentOS 下貌似也没有基于命令行的抓包工具,python 的话也不知道具体怎样实现,网上有没有合适的开源代码可供参考

    一筹莫展,请大家指教

    如有好的不改动软件为前提的屏蔽广告思路(最好是基于 http 流量修改),也请不吝赐教。

    7 条回复    2017-05-03 21:29:51 +08:00
    JJaicmkmy
        1
    JJaicmkmy  
       2017-05-02 23:50:58 +08:00   ❤️ 1
    把这个域名 DNS 劫持到本地,然后用 Nginx:
    location / {
    proxy_pass http://api.xx.com;
    }
    location /ads/ {
    return 403;
    }
    bibizhang
        2
    bibizhang  
       2017-05-02 23:54:04 +08:00
    撒泡尿回来就没了
    1465726777
        3
    1465726777  
    OP
       2017-05-03 00:01:24 +08:00 via iPhone
    @JJaicmkmy 谢谢。 我仔细研究下,一直在用 apache。
    其实我还打算做一些更复杂的,百度搜索结果页面最上方的广告标签是动态的,我一直想屏蔽掉。不知道 nginx 自身实现不了的话有插件可以实现吗?
    还想问大家这个:
    在海外可以修改 DNS 可以听到完整的网易云音乐,我觉得中间的 http 流量肯定被修改了,不知道有现成的软件可以用吗?
    1465726777
        4
    1465726777  
    OP
       2017-05-03 00:03:06 +08:00 via iPhone
    @bibizhang 主要还是为了学习 况且开机广告这东西也挺不爽的 要是机顶盒广告也就算了
    JJaicmkmy
        5
    JJaicmkmy  
       2017-05-03 00:06:31 +08:00
    @1465726777
    修改 DNS 听百度云音乐,应该是解析到了境内的反向代理,具体可以搜索 SNIProxy。
    百度的搜索是 HTTPS 的,只能用自签名证书,应该可以通过 ngx_http_substitutions_filter_module 这个模组来修改。
    sholmesian
        6
    sholmesian  
       2017-05-03 09:11:10 +08:00 via iPhone
    这个还是得从电视入手,否则即使你网络层面屏蔽干净了,电视还是会播放最初始的自带广告。 例如乐视……

    https://holmesian.org/remove-letv-boot-ads
    1465726777
        7
    1465726777  
    OP
       2017-05-03 21:29:51 +08:00
    今天搞成了。

    apache 拦截海信电视强制升级的配置:
    vi /etc/httpd/conf/httpd.conf

    <VirtualHost *:80 >
    ServerAdmin admin@localhost
    ServerName api.hismarttv.com
    DocumentRoot "/var/www/html/"
    ProxyPass /upgrade/ !
    ProxyPass / http://api.hismarttv.com/
    #不代理 upgrade 目录,其它目录正常处理
    </VirtualHost>

    可能还有其它域名有广告,把它劫持到本地,然后按照上面的配置修改一份即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:27 · PVG 09:27 · LAX 17:27 · JFK 20:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.