如何判断是否被运营商劫持?

2015-12-30 09:45:36 +08:00
 graetdk

这两天浏览网页经常发现右下角有广告,包括我自己的网站,我觉得肯定是被劫持了,但是并不清楚是运营商劫持的还是下了恶意软件,不过我觉得后者可能性不大,我用的是 Mac OS ,也基本上没装什么第三方软件

问题来了,那么到底有没有方法能判断是否是运营商劫持?

PS :相关代码

4929 次点击
所在节点    问与答
8 条回复
ykqmain
2015-12-30 10:05:22 +08:00
我有三次遇到过这种情况,都是在自己的网页下,右下角,点开都是以 api 开头的一个网址,广告。
我的网页非常简单,只有 HTML ,看代码是没有问题的。
我也想知道是什么原因,是电信的可能性很大。
test1199
2015-12-30 10:18:22 +08:00
你是什么运营商?
在什么地方啊
graetdk
2015-12-30 10:37:57 +08:00
@test1199 四川电信
h4x3rotab
2015-12-30 12:23:55 +08:00
找个 http 调试工具,重发浏览器的 http 请求,再看收到的源码有没有被加入后门,这样可以确保劫持不是发生在浏览器上
libook
2015-12-30 14:50:19 +08:00
根据你的情况,我见到过的运营商劫持的形式如下,有更多的欢迎补充:
1. 运营商直接将传输中的 html 篡改,加入广告代码
2. 运营商劫持某些前端库的 dns ,指向精心构造的广告插件代码

这个判断起来确实不容易,但是我知道如何防范:
1. 使用 HTTPS 协议,点对点加密,运营商没有私钥,所以无法解析和篡改数据
2. 所有第三方库本地化(用 bower 之类的下载下来),然后再做静态资源 CDN 镜像(解决网络优化和流量压力)
ijimmy
2015-12-30 15:31:44 +08:00
直接 curl -v 链接地址 多试几次,就可以判断了。据我所知目前百度统计和 cnzz 统计都被劫持到了 http://www.top616.com/baidujs/jsnew/DAWEIA1.js 这个地址,直接用的 302 跳转,不是 dns 劫持,因为 curl 信息返回的链接地址是正确的。

附测试结果:
curl -v http://s14.cnzz.com/stat.php\?id\=xxxxxxxx\&web_id\=xxxxxxxx\&show\=pic
* Trying 218.63.99.155...
* Connected to s14.cnzz.com (218.63.99.155) port 80 (#0)
> GET /stat.php?id=2273190&web_id=2273190&show=pic HTTP/1.1
> Host: s14.cnzz.com
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 302 Moved Temporarily
< Location: http://www.top616.com/baidujs/jsnew/DAWEIA1.js
* no chunk, no close, no size. Assume close to signal end
<
* Closing connection 0
ijimmy
2015-12-30 15:32:41 +08:00
额,上面说错了一句,“因为 curl 信息返回的链接地址是正确的” 应该是 “因为 curl 信息返回的 IP 地址是正确的”
mkeith
2015-12-30 15:33:38 +08:00
右键查看源代码啊?插件修改的这里就不会有了啊

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

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

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

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

© 2021 V2EX