V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kimw
V2EX  ›  问与答

为什么运营商在网页中植入广告后,在 html 代码里却找到不?

  •  2
     
  •   kimw · 2014-12-12 21:55:33 +08:00 · 12938 次点击
    这是一个创建于 3626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对不起,我有点长……

    (以下是正文)

    我用的是长城宽带。大约一周前开始出现网页植入广告,不频繁,一天能出来个2-3次,勉强能忍受。今天广告疯了,狂刷,打开2-3个网页就出来一次,有点受不了了。现在已经疯狂到打开旺旺都能在里面刷出广告的地步。更可笑的是,本来打算在v2ex里面搜索“运营商网页植入广告”,看看有多少人和我一样遭遇,结果……v2都出来了(有图有真相)。

    在浏览csdn时遇到的运营商网页植入广告
    在浏览csdn时遇到的运营商网页植入广告

    在浏览v2时遇到的运营商网页植入广告
    在浏览v2时遇到的运营商网页植入广告

    发现 iframe 的来源是 211.162.209.231
    发现 iframe 的来源是 211.162.209.231

    跟踪到 js 调试器看到的代码
    跟踪到 js 调试器看到的代码

    查看 html 源代码,只找到最后一行代码是 `<script src="/static/js/jquery.textcomplete.min.js?v=43bfb325d9b6b784e680aa9eaef91925" type="text/javascript"></script>`
    查看 html 源代码,只找到最后一行代码是 <script src="/static/js/jquery.textcomplete.min.js?v=43bfb325d9b6b784e680aa9eaef91925" type="text/javascript"></script>

    我的问题是:
    1. 为什么在 html 代码里面找不到植入广告的 js 代码?
    2. 运营商是怎么实现将广告植入到网页里面的呢?

    17 条回复    2014-12-13 00:04:46 +08:00
    kimw
        1
    kimw  
    OP
       2014-12-12 22:07:30 +08:00
    补充两个发现

    1. 图 4 中的 js 翻译过来是如下代码
    ```
    function o() {
    t.removeEventListener(e, o, !1);
    i()
    }
    ```

    2. 在继续跟踪中,发现里面还有这么一行代码
    ```
    <iframe src="http://www.gwbn.cq.cn/pusha.asp" scrolling="no" style="display: block; height: 100%; width: 100%; background-color: transparent; border-width: 0px;" name="scale=1&amp;mobile=0&amp;origin=http://www.v2ex.com&amp;xd=http://211.162.209.231/static/FloatingContent/245/xd.js&amp;token=imczwm1gawj&amp;window_width=1011&amp;window_height=765&amp;width=400&amp;height=318&amp;interactions=_%261%3DClick%262%3DManualClose&amp;delay_duration=0&amp;apiurl=http://211.162.209.231/static/FloatingContent/xqpOZgi2ZbGsYHUnZBLslA/api.js" frameborder="0" height="100%"></iframe>
    ```
    ScotGu
        2
    ScotGu  
       2014-12-12 22:49:48 +08:00   ❤️ 1
    直接投诉! 这种频率推送肯定是他们操作失误导致的。
    投诉不理就生成要找当地电视台曝光!
    kimw
        3
    kimw  
    OP
       2014-12-12 23:03:38 +08:00
    @ScotGu 其实……其实我是想研究下这个技术(当然,我刚开始的时候确实也很气愤,但后来看了看代码,引起了一些新的思考),这技术太 NB 太吸引人了。居然跟踪我的浏览记录。甚至牛 X 到用 https 访问 V2 都被跟踪了。顺着这个思路下去,如果计算出每两次 HTTP GET 之间的 time delta……运营商甚至可以知道我在某个网页停留的时间;再想下去,运营商可以知道我的所有兴趣爱好;再再下去,我的 ss 访问到底安全么?……应该还有很多问题,暂时还没想起来
    yfdyh000
        4
    yfdyh000  
       2014-12-12 23:17:02 +08:00   ❤️ 1
    截图中的v2ex不是https吧。通常就是替换代码,用 documents.write 写出混淆过的代码,再将原网页放在一个iframe里面,缺点是网页标题会缺失。这个可能是插入脚本,然后动态插入一个iframe,我没碰到过。
    http的访问记录是肯定能完全跟踪的,只是想不想的问题。ss应该没问题,是真加密。真担心就挂VPN吧。
    xiaoai
        5
    xiaoai  
       2014-12-12 23:18:34 +08:00   ❤️ 1
    我用过长城宽带,也有这样的,微信的页面广告竟然占了1/2的页面,简直不能忍
    aaaa007cn
        6
    aaaa007cn  
       2014-12-12 23:19:41 +08:00   ❤️ 1
    1. firefox 查看源代码会重新请求一次页面,而此时一般不会再次被劫持……
    忘了哪个版本开始这样的了

    2. TCP 链路劫持攻击
    http://security.tencent.com/index.php/blog/msg/10

    我是开了个 python 脚本每 15 分钟刷一次各大门户、电商网站来抓劫持特征的

    很明显你是 http 访问的 v2ex
    不然地址栏应该是个锁或者惊叹号,而不是个地球……
    kimw
        7
    kimw  
    OP
       2014-12-12 23:32:34 +08:00
    @yfdyh000 @aaaa007cn 嗯嗯,还是你们细心。刚才仔细看了下,确实不是 https。但奇怪了,我在 v2 设置的是“永远使用 SSL”,难道是哪个地方出错了?

    我一般是这样操作的:
    1. 直接在地址栏输入 v2ex.com
    2. 因为已经保存了登陆,所以,进来的时候就不用再登陆了;
    3. 一般情况下这个时候地址栏就已经是 https 了。

    今天也是这么操作的。所以我就没注意到底是 http 还是 https。然后经验主义想当然的以为是 https。

    难道 v2 保存登陆记录后不是每次都自动换地址为 https 么?

    (PS,现在开的这个窗口也是用上面的方法打开的,但现在的地址栏就是写的 https)
    aaaa007cn
        8
    aaaa007cn  
       2014-12-12 23:35:44 +08:00   ❤️ 1
    我也是设置了 永远 SSL 但还是经常跑到 http 去
    然后就给 privoxy 加了一条跳转规则强制跳转
    { +redirect{s@^http:@https:@} }
    .v2ex.com:80/
    世界清静了
    kimw
        9
    kimw  
    OP
       2014-12-12 23:43:13 +08:00
    @aaaa007cn 我用的是 shadowsocks-csharp 里面 PAC 的方式走的 SS。之前用 ss-gui 的时候是使用的 foxyProxy,现在已经完全禁用了。privoxy 之前没用过。请问有没办法通过 pac 的方式完成打造清静世界的途径?
    myliyifei
        11
    myliyifei  
       2014-12-12 23:43:44 +08:00
    @aaaa007cn chrome可以加HSTS
    imn1
        12
    imn1  
       2014-12-12 23:53:38 +08:00
    kimw
        13
    kimw  
    OP
       2014-12-12 23:53:54 +08:00
    @aaaa007cn 刚才查了下 about:config,我的 browser.cache.disk.enable 和 browser.cache.memory.enable 都是 true。但为什么在“查看页面源代码”中就是看不到运营商植入的 js 呢?
    negation
        14
    negation  
       2014-12-12 23:58:01 +08:00 via Android
    最近运营商都疯了么,广东电信和联通变成了任意不是那么大众的页面有非常大的几率会出现弹窗,并且页面会套上一个透明的页面,需要点击两次关两次弹窗才能正常,换公共DNS后恢复正常
    aaaa007cn
        15
    aaaa007cn  
       2014-12-12 23:58:04 +08:00
    @kimw 用扩展对 v2ex 做强制转向,比如 NoScript、Mason 啥的
    查看源码那是一个已知 bug 啊,看向 bugzilla……

    @myliyifei 我用 firefox 来着,chrome 跑不动,玩起来也不如 firefox 那么方便
    kimw
        16
    kimw  
    OP
       2014-12-13 00:01:27 +08:00
    @negation 我最近一直用的是 v2 的 DNS (dns.v2ex.com)。遇到这个问题,刚开始的时候我也想到了是 dns 污染的技术,于是仔细核对了下本机和路由器的 dns 配置,确信是用的 v2 的 dns。
    kimw
        17
    kimw  
    OP
       2014-12-13 00:04:46 +08:00
    @aaaa007cn @myliyifei 我也是主打 FF,偶尔 Chrome 下。主要是我的机器内存小,只有 4G,跑 Chrome 灰常灰常的吃力。不过,刚才赶在 12-12 结束前在某宝买了台新机器,顺丰应该过两天就到了,16G 内存应该可以跑 Chrome 了 XD
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2631 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:12 · PVG 19:12 · LAX 03:12 · JFK 06:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.