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

2015-01-25 01:48:06 +08:00
 aveline

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

但是 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 不能屏蔽。
不过鬼才信。

11939 次点击
所在节点    宽带症候群
39 条回复
guoyijun163
2015-01-26 12:28:47 +08:00
@Do 嗯,投诉来来回回几次一直不解决问题,上工信部投了下就默默取消了。。。之前已经在一个低级白名单里,投诉给电信总说我已经在白名单,看来还有个高级白名单
lzk800
2015-01-27 15:53:45 +08:00
@aveline 我这几天发现劫持动作没了,可能是上海电信取消了这些劫持……
aveline
2015-01-27 16:24:01 +08:00
@lzk800 还是有的,这是今天反劫持访问记录 ...

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/165182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX