V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aveline
V2EX  ›  宽带症候群

使用 Dnsmasq 绕过上海电信的广告劫持

  •  3
     
  •   aveline · 2015-01-25 01:48:06 +08:00 · 11729 次点击
    这是一个创建于 3377 天前的主题,其中的信息可能已经有所发展或是发生改变。

    晚上头疼起来买止痛药 ... 然后发现又特么被电信劫持了,不能忍!

    但是 HTTP 劫持基本上没办法对付,那就只能从广告页下手了。

    分析

    广告联盟

    根据观察,上海电信访问京东、一号店、淘宝、天猫等,不管劫持到哪个页面,后面均会二次跳转到 click.linktech.cn,那么很好办嘛我把 click.linktech.cn 劫持掉好啦~

    例: http://hao.xfect.cn/js/yhd02.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <body>
    <script type="text/javascript">
        var dstSrc="http://click.linktech.cn/?m=yihaodian&a=A100200985&l=99999&l_cd1=0&l_cd2=1&tu=http%3A%2F%2Fwww.yhd.com%2F";
        window.top.location=dstSrc;
        </script>
     </body>
    </html>
    

    要直接跳回原站就可以这么写:

    <script>
    window.location.search.split('&').forEach(function (param) {
      param = param.split('=');
      if(param[0] == 'tu') {
        window.top.location.replace(decodeURIComponent(param[1]));
      }
    });
    </script>
    

    右下角小广告

    例: http://tv.sohu.com/

    <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script defer="" type="text/javascript" src="http://websystem.b0.upaiyun.com/th/sh0101/ver_sh0101_354/th1052.js"></script><script type="text/javascript" src="http://websystem.b0.upaiyun.com/fc/sh0101/js/jquery-1.8.3.min.js"></script><link rel="stylesheet" type="text/css" href="http://websystem.b0.upaiyun.com/fc/sh0101/css/adStyle.css"><title>搜狐视频-搜狐</title></head><body style="margin: 0px; overflow: hidden; zoom: 1;"><div class="ad-dialog ad_ style0" id="ad_id" style="right: 20px; bottom: 2px; display: block;"><div class="title tt_" style="display: none; width: 160px;">这是广告</div><div class="close"><a class="icon-close close_"><span id="cl"><font color="white">关闭</font></span></a></div><div class="repeate"><a id="repeate" class="repeate_"><span id="re"><font color="white">重播</font></span></a></div><div class="content ct_"><iframe scrolling="no" frameborder="no" src="http://a.letter.com.cn/suzhouad/ad9.html?_us=&amp;_su=aHR0cDovL3R2LnNvaHUuY29tLw==" allowtransparency="true" id="adframe" style="top: 0px; width: 160px; height: 0px; display: none; opacity: 1;"></iframe><iframe scrolling="no" frameborder="no" src="http://a.letter.com.cn/suzhouad/ad10.html" allowtransparency="true" id="adframe1" style="top: 528px; width: 160px; height: 150px;"></iframe></div></div><iframe id="imain" src="http://tv.sohu.com/" scrolling="auto" width="100%" height="100%" frameborder="no" onload="" style="position:fixed;"></iframe><style class="ublock-postload-1ae7a5f130fc79b4fdb8a4272d9426b5">#adframe:not(frameset)
    {display:none !important;}</style></body></html>
    

    这边由于 CORS 的原因不能直接获得 parent 的 URL,不过我们可以用 referrer 获取,很简单,改写成这样子就可以了:

    <script>
    parent.location.replace(document.referrer);
    </script>
    

    方法

    嗯方法很简单啦,就是在本地的 dnsmasq 里插入这么几条配置:

    address=/click.linktech.cn/10.21.0.53
    address=/cdn.shdsp.net/10.21.0.53
    address=/a.letter.com.cn/10.21.0.53
    

    其中的 10.21.0.53 是我内网 Linux 服务器的 IP 地址,上面需要安装一下 nginx 或者其他你喜欢的 Web server。

    以 nginx 为例,新增配置文件 /etc/nginx/sites-available/hijack.conf

    server {
      server_name a.letter.com.cn cdn.shdsp.net 58.215.179.159;
      root /var/www/anti-hijack;
      index dsp.html;
      location / {
        try_files $uri $uri/ /dsp.html$is_args$args;
      }
    }
    
    server {
      server_name click.linktech.cn;
      root /var/www/anti-hijack;
      index linktech.html;
      location / {
        try_files $uri $uri/ /linktech.html$is_args$args;
      }
    }
    

    然后重载配置

    ln -s /etc/nginx/sites-available/hijack.conf /etc/nginx/sites-enabled/hijack.conf
    nginx -s reload
    

    嗯,能不看那些讨厌的广告和推广链接了。
    另外如果本地没有 Web 服务器可以使用我的 173.234.150.185,不过由于要走公网谁知道电信会不会再来劫持一遍 ...

    另外如果本地也没有 DNS 的话可以用我的 180.153.42.157180.153.47.32,不过 ... 我也不能保证我的 DNS 结果不会被二次劫持,电信的节操呵呵呵

    以及投诉什么的我也试过了,工信部表示不受理,电信表示不是他们的 IP 不能屏蔽。
    不过鬼才信。

    第 1 条附言  ·  2015-01-25 02:37:36 +08:00
    39 条回复    2015-11-21 20:18:22 +08:00
    mongodb
        1
    mongodb  
       2015-01-25 01:51:10 +08:00
    这方法虽然能治理。。但仍然觉得不爽。。
    这帮王八蛋用这方法,虽然严格来说我也没多大损失什么的(他们的frame页面所在的机器倒是可能太卡以至于我网站打开都卡),但仍然觉得不舒服。。
    我甚至可以接受他们事先明说了。。但这种当我是sb利用我的流量谋利仍然让我十分十分十分十分不高兴。
    求反制。
    Dreista
        2
    Dreista  
       2015-01-25 02:40:24 +08:00
    电信一劫持我就忍不住想要D…
    esile
        3
    esile  
       2015-01-25 02:54:42 +08:00
    @aveline 刚发完就发现lz了
    /t/165183
    Do
        4
    Do  
       2015-01-25 03:09:53 +08:00 via iPhone
    不知道有没有可能是有人利用电信的服务器干这种事情。干这勾当的当然不是网站的ip,啥叫不是他们IP他们不管,电信这是主动抗投么〜=_=。

    国内的ISP乃典型流氓无赖。
    aveline
        5
    aveline  
    OP
       2015-01-25 03:22:22 +08:00
    @Do 就是投放广告用的 IP 不是上海电信的,以及广告内容也不是直接和电信有关的。
    aveline
        6
    aveline  
    OP
       2015-01-25 03:35:49 +08:00
    电信这学的也太快了吧还是我之前没发现 ... 有直接跳的了

    <iframe id="i" src="http://www.baidu.com/?tn=95901816_hao_pg" scrolling="auto" width="100%" height="100%" frameborder="no" onload="" style="position:fixed;"></iframe>
    lm902
        7
    lm902  
       2015-01-25 06:47:48 +08:00
    能用HTTPS的例如https://www.baidu.com直连 其它的挂国内SS 阿里云应该没有劫持
    usbaby
        8
    usbaby  
       2015-01-25 06:58:49 +08:00 via Android
    遇到的情况和你一样,工信部不管这个么?
    20140930
        10
    20140930  
       2015-01-25 07:26:56 +08:00
    一号店的佣金最高吧,我这里不管移动还是电信都有很高的几率劫持一号店
    ajan
        11
    ajan  
       2015-01-25 09:40:00 +08:00   ❤️ 1
    @aveline 上海电信 打开百度加 ?tn=****** 尾巴事情忍了很久了, 可以使用https://www.baidu.com
    Chrome 可以打开 chrome://net-internals/#hsts 添加 baidu.com 保存, 以后可以自动切换到https 上了
    liceven
        12
    liceven  
       2015-01-25 10:00:07 +08:00
    @ajan 广东启用https都没有用 有时候点连接还是会跳到 ?tn=******
    402645707
        13
    402645707  
       2015-01-25 10:21:21 +08:00 via Android
    有这么麻烦吗,抓icmp包屏蔽发劫持包的ip
    zro
        14
    zro  
       2015-01-25 11:41:00 +08:00
    不知道有没有方法可以这样,劫持一次就DDOS一次/多次它?XD
    Elethom
        15
    Elethom  
       2015-01-25 11:50:21 +08:00 via iPhone   ❤️ 1
    除了在工信部投訴電信還需要在哪裡投訴一次工信部來著, 忘記是哪裏了. 兩個連著投訴就可以了, 原因寫 "不予受理, 態度蠻橫惡劣".
    Do
        16
    Do  
       2015-01-25 12:13:49 +08:00
    @aveline 发现现在上海电信劫持的话与时俱进了,src 和ttl都伪造了。
    guoyijun163
        17
    guoyijun163  
       2015-01-25 21:19:23 +08:00
    上海电信的劫持包你可以用iptables的u32模块……屏蔽HTTP响应中日期为20XX年的包……(这是特征)

    另:工信部投诉是有用的,电信没回访,但是实际是去掉了
    guoyijun163
        18
    guoyijun163  
       2015-01-25 21:20:26 +08:00
    @Do 但是HTTP响应包中的年份是不合理的……可以以这个屏蔽重定向
    hyraxer
        19
    hyraxer  
       2015-01-26 03:20:02 +08:00 via iPhone
    楼主好思路 我打算在路由器中专门反劫持一下
    Do
        20
    Do  
       2015-01-26 10:42:05 +08:00
    @guoyijun163 你那里现在没这个现象了?
    guoyijun163
        21
    guoyijun163  
       2015-01-26 12:28:47 +08:00 via Android
    @Do 嗯,投诉来来回回几次一直不解决问题,上工信部投了下就默默取消了。。。之前已经在一个低级白名单里,投诉给电信总说我已经在白名单,看来还有个高级白名单
    lzk800
        22
    lzk800  
       2015-01-27 15:53:45 +08:00
    @aveline 我这几天发现劫持动作没了,可能是上海电信取消了这些劫持……
    aveline
        23
    aveline  
    OP
       2015-01-27 16:24:01 +08:00
    @lzk800 还是有的,这是今天反劫持访问记录 ...

    https://gist.github.com/ym/a926694f352f400b472c
    lzk800
        24
    lzk800  
       2015-01-27 16:25:31 +08:00
    @aveline 哦,好吧,反正今天京东是没有了,百度我是不用的
    xhsmile
        25
    xhsmile  
       2015-01-27 16:50:16 +08:00
    @rwzsycwan 请问怎个跳转是怎么发现的?F12?
    recall704
        26
    recall704  
       2015-01-27 19:14:34 +08:00
    我已经到非挂代理不可的地步了
    rwzsycwan
        27
    rwzsycwan  
       2015-01-27 19:19:08 +08:00
    @xhsmile 额 直接打开www.jd.com会自己跳转
    xhsmile
        28
    xhsmile  
       2015-01-27 19:32:57 +08:00
    @rwzsycwan 转的太快……根本停不下来……
    xmi
        29
    xmi  
       2015-02-11 12:43:35 +08:00
    @liceven 对,我这里广州长宽,https也会跟上tn .. 真的好恶心
    lilydjwg
        30
    lilydjwg  
       2015-02-12 13:37:46 +08:00
    支持投诉!我曾经在QQ上找武汉电信投诉,然后广告就没有了。
    smovie
        31
    smovie  
       2015-04-09 01:36:45 +08:00
    firefox+noscript可以看到劫持
    vjnjc
        32
    vjnjc  
       2015-05-19 22:18:53 +08:00
    然而最近的结果表示上海电信已经开始加iframe.src=s.shdsp.net
    aveline
        33
    aveline  
    OP
       2015-05-19 22:31:59 +08:00
    @vjnjc Hi, 麻烦提供一下被劫持页面的 HTML,我来过滤一下
    vjnjc
        34
    vjnjc  
       2015-05-19 22:40:39 +08:00
    @aveline Hi,我现在又点不出那个广告了,下次遇到了一定贴在这里。
    lguan
        35
    lguan  
       2015-06-14 22:54:01 +08:00
    楼主你还有碰到这个问题吗?我最近也被这事情烦恼着,工信部投诉了好几次了,我其实几年前就开始投诉了,每次都能解决,现在干脆他们就不认账了,说我已经在他们的投放白名单里面了,说现在这个广告不是他们投放的,我继续在工信部疯狂投诉中,估计也是解决不了,我也抓了不少图,大部分都是shdsp.net的
    aveline
        36
    aveline  
    OP
       2015-06-14 23:00:09 +08:00
    @lguan 还在遇到,回复也一样,工信部投诉也不管。
    lguan
        37
    lguan  
       2015-06-14 23:22:13 +08:00
    @aveline 难道就没有办法了么,这tmd已经是明目张胆了,搞个站点捅出去?
    hauy
        38
    hauy  
       2015-11-17 12:05:06 +08:00
    电信太 tmd 无耻了
    meteor
        39
    meteor  
       2015-11-21 20:18:22 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5145 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:31 · PVG 17:31 · LAX 02:31 · JFK 05:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.