对不起,我有点长……
(以下是正文)
我用的是长城宽带。大约一周前开始出现网页植入广告,不频繁,一天能出来个2-3次,勉强能忍受。今天广告疯了,狂刷,打开2-3个网页就出来一次,有点受不了了。现在已经疯狂到打开旺旺都能在里面刷出广告的地步。更可笑的是,本来打算在v2ex里面搜索“运营商网页植入广告”,看看有多少人和我一样遭遇,结果……v2都出来了(有图有真相)。
在浏览csdn时遇到的运营商网页植入广告
在浏览v2时遇到的运营商网页植入广告
发现 iframe 的来源是 211.162.209.231
跟踪到 js 调试器看到的代码
查看 html 源代码,只找到最后一行代码是 <script src="/static/js/jquery.textcomplete.min.js?v=43bfb325d9b6b784e680aa9eaef91925" type="text/javascript"></script>
我的问题是:
1. 为什么在 html 代码里面找不到植入广告的 js 代码?
2. 运营商是怎么实现将广告植入到网页里面的呢?
1
kimw OP 补充两个发现
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&mobile=0&origin=http://www.v2ex.com&xd=http://211.162.209.231/static/FloatingContent/245/xd.js&token=imczwm1gawj&window_width=1011&window_height=765&width=400&height=318&interactions=_%261%3DClick%262%3DManualClose&delay_duration=0&apiurl=http://211.162.209.231/static/FloatingContent/xqpOZgi2ZbGsYHUnZBLslA/api.js" frameborder="0" height="100%"></iframe> ``` |
2
ScotGu 2014-12-12 22:49:48 +08:00 1
直接投诉! 这种频率推送肯定是他们操作失误导致的。
投诉不理就生成要找当地电视台曝光! |
3
kimw OP @ScotGu 其实……其实我是想研究下这个技术(当然,我刚开始的时候确实也很气愤,但后来看了看代码,引起了一些新的思考),这技术太 NB 太吸引人了。居然跟踪我的浏览记录。甚至牛 X 到用 https 访问 V2 都被跟踪了。顺着这个思路下去,如果计算出每两次 HTTP GET 之间的 time delta……运营商甚至可以知道我在某个网页停留的时间;再想下去,运营商可以知道我的所有兴趣爱好;再再下去,我的 ss 访问到底安全么?……应该还有很多问题,暂时还没想起来
|
4
yfdyh000 2014-12-12 23:17:02 +08:00 1
截图中的v2ex不是https吧。通常就是替换代码,用 documents.write 写出混淆过的代码,再将原网页放在一个iframe里面,缺点是网页标题会缺失。这个可能是插入脚本,然后动态插入一个iframe,我没碰到过。
http的访问记录是肯定能完全跟踪的,只是想不想的问题。ss应该没问题,是真加密。真担心就挂VPN吧。 |
5
xiaoai 2014-12-12 23:18:34 +08:00 1
我用过长城宽带,也有这样的,微信的页面广告竟然占了1/2的页面,简直不能忍
|
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 不然地址栏应该是个锁或者惊叹号,而不是个地球…… |
7
kimw OP @yfdyh000 @aaaa007cn 嗯嗯,还是你们细心。刚才仔细看了下,确实不是 https。但奇怪了,我在 v2 设置的是“永远使用 SSL”,难道是哪个地方出错了?
我一般是这样操作的: 1. 直接在地址栏输入 v2ex.com; 2. 因为已经保存了登陆,所以,进来的时候就不用再登陆了; 3. 一般情况下这个时候地址栏就已经是 https 了。 今天也是这么操作的。所以我就没注意到底是 http 还是 https。然后经验主义想当然的以为是 https。 难道 v2 保存登陆记录后不是每次都自动换地址为 https 么? (PS,现在开的这个窗口也是用上面的方法打开的,但现在的地址栏就是写的 https) |
8
aaaa007cn 2014-12-12 23:35:44 +08:00 1
我也是设置了 永远 SSL 但还是经常跑到 http 去
然后就给 privoxy 加了一条跳转规则强制跳转 { +redirect{s@^http:@https:@} } .v2ex.com:80/ 世界清静了 |
9
kimw OP @aaaa007cn 我用的是 shadowsocks-csharp 里面 PAC 的方式走的 SS。之前用 ss-gui 的时候是使用的 foxyProxy,现在已经完全禁用了。privoxy 之前没用过。请问有没办法通过 pac 的方式完成打造清静世界的途径?
|
10
aaaa007cn 2014-12-12 23:43:43 +08:00
|
12
imn1 2014-12-12 23:53:38 +08:00
HTTPS Everywhere
https://www.eff.org/https-everywhere |
13
kimw OP @aaaa007cn 刚才查了下 about:config,我的 browser.cache.disk.enable 和 browser.cache.memory.enable 都是 true。但为什么在“查看页面源代码”中就是看不到运营商植入的 js 呢?
|
14
negation 2014-12-12 23:58:01 +08:00 via Android
最近运营商都疯了么,广东电信和联通变成了任意不是那么大众的页面有非常大的几率会出现弹窗,并且页面会套上一个透明的页面,需要点击两次关两次弹窗才能正常,换公共DNS后恢复正常
|
15
aaaa007cn 2014-12-12 23:58:04 +08:00
|
16
kimw OP @negation 我最近一直用的是 v2 的 DNS (dns.v2ex.com)。遇到这个问题,刚开始的时候我也想到了是 dns 污染的技术,于是仔细核对了下本机和路由器的 dns 配置,确信是用的 v2 的 dns。
|