您的位置:首页 > 运维架构 > 网站架构

网站屏蔽广告

2015-10-19 09:35 671 查看
感谢:http://blog.csdn.net/v6543210/article/details/41149313

有一款针对视频网站的广告进行屏蔽的chrome插件做的比较好,其在360浏览器市场上排名非常靠前。

在使用过程中发现它在页面中插入了一段代码

[html] view
plaincopy





<div class="player" id="player" err="">  

    <object type="application/x-shockwave-flash" data="http://opengg.guodafanli.com/swf/kafan/loader.swf" width="100%" height="100%" id="movie_player">  

        <param name="allowFullScreen" value="true">  

        <param name="allowscriptaccess" value="always"><param name="flashvars" value="VideoIDS=XODI3MzIyNzgw&ShowId=0&category=91&Cp=0&ev=2&Light=on&THX=off&unCookie=0&frame=0&pvid=1416053534395Fq3&uepflag=1&Tid=0&isAutoPlay=true&Version=/v1.0.1002&show_ce=0&winType=interior&Type=Folder&Fid=23073811&Pt=0&Ob=1&plchid=a&embedid=AjIwNjgzMDY5NQJ3d3cueW91a3UuY29tAi9pLw==&vext=bc%3D%26pid%3D1416053534395Fq3%26unCookie%3D0%26frame%3D0%26type%3D1%26fob%3D1%26fpo%3D0%26svt%3D0%26emb%3DAjIwNjgzMDY5NQJ3d3cueW91a3UuY29tAi9pLw%3D%3D%26dn%3D%E7%BD%91%E9%A1%B5%26hwc%3D1%26mtype%3Doth">  

        <param name="movie" value="http://static.youku.com/v1.0.0483/v/swf/loader.swf">  

        <div class="player_html5">  

            <div class="picture" style="height:100%">  

                <div style="line-height:460px;">  

                    <span style="font-size:18px">您还没有安装flash播放器,请点击  

                        <a href="http://www.adobe.com/go/getflash" target="_blank">这里</a>  

                        安装  

                    </span>  

                </div>  

            </div>  

        </div>  

    </object>  

</div>  

把优酷的播放器换成了自己的播放器。

[html] view
plaincopy





<a target=_blank href="http://opengg.guodafanli.com">http://opengg.guodafanli.com</a>  

在页面打开过程中,还要访问下面的网址:

http://app2.522.com.cn

这个就更奇怪了,这个网站经查是注册在



还注册了以下的网站:



[plain] view
plaincopy





GET http://app2.522.com.cn/playlist2.php/v.youku.com/player/getPlayList/VideoIDS/XODI3MzIyNzgw/timezone/+08/version/5/source/video/Type/Folder/Fid/23073811/Pt/0/Ob/1?ctype=10&password=&n=3&ran=1731&ev=1 HTTP/1.1  

Host: app2.522.com.cn  

Connection: keep-alive  

User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36  

Accept: */*  

Referer: http://opengg.guodafanli.com/swf/kafan/loader.swf  

Accept-Encoding: gzip,deflate,sdch  

Accept-Language: zh-CN,zh;q=0.8  

以上请求返回的是以下数据,看起来是优酷的视频分段信息。

[plain] view
plaincopy





HTTP/1.1 200 OK  

Content-Type: text/html  

Server: Microsoft-IIS/6.0  

X-Powered-By: PHP/5.2.9-2  

Date: Sat, 15 Nov 2014 12:11:58 GMT  

Connection: close  

  

  

{"folder":{"total":6,"size":10,"page":1,"folderId":23073811,"ownerId":36758550,"totalPage":1},"data":[{"ct":"a","cs":"2143","logo":"http:\/\/g2.ykimg.com\/1100641F4654672BB118D00230E41601BF6739-DED1-4859-9A8E-43D3A7370507","seed":7803,"tags":["彭丽媛","g20"],"categories":"91","videoid":"206830695","vidEncoded":"XODI3MzIyNzgw","list":[{"seq":0,"vid":"206830695","vidEncoded":"XODI3MzIyNzgw","title":"彭丽媛与袋鼠亲密接触 弯腰喂食","vv":0},{"seq":1,"vid":"206798483","vidEncoded":"XODI3MTkzOTMy","title":"二十国集团领导人第九次峰会举行 各国元首夫人与考拉亲密接触","vv":0},{"seq":2,"vid":"206787322","vidEncoded":"XODI3MTQ5Mjg4","title":"习近平抵达布里斯班出席二十国剧团领导人峰会并对澳进行国事访问","vv":0},{"seq":3,"vid":"206725893","vidEncoded":"XODI2OTAzNTcy","title":"直播港澳台20141114 中国借G20加强参与全球治理","vv":0},{"seq":4,"vid":"206728238","vidEncoded":"XODI2OTEyOTUy","title":"曝澳方外交秘密武器:或邀请彭丽媛抱考拉","vv":0},{"seq":5,"vid":"206765977","vidEncoded":"XODI3MDYzOTA4","title":"澳大利亚:G20峰会举行  聚焦经济议题[东方午新闻]","vv":0}],"list_pre":{},"list_next":{"seq":1,"vid":"206798483","vidEncoded":"XODI3MTkzOTMy","title":"二十国集团领导人第九次峰会举行 各国元首夫人与考拉亲密接触","vv":0},"username":"新视点","userid":"36758550","title":"彭丽媛与袋鼠亲密接触 弯腰喂食","up":0,"down":0,"ts":"At6kQzJXdTc1DkNnAXuS7jA","tsup":"At6jyTFXdTc1DkNnAvGV7jA","key1":"b344a731","key2":"79d120380f053107","tt":"1","ip":712601273,"ep":"dvtCHZeoyLOU\/6BS2AwdkRWKSBEwUaxNatZXLlyozhg=","videoSource":"1","seconds":"15.00","streamfileids":{"flv":"6*17*6*6*6*13*6*5*6*6*9*43*32*26*13*19*24*37*32*5*2*43*6*13*17*6*36*43*5*32*17*19*2*41*24*5*2*6*33*62*66*36*17*33*62*32*41*13*33*26*26*24*9*33*36*37*17*13*37*26*5*37*24*9*62*6*","mp4":"6*17*6*6*6*37*6*5*6*6*9*43*32*26*13*66*9*26*32*5*2*43*6*13*17*6*36*43*5*32*17*19*2*41*24*5*2*6*33*62*66*36*17*33*62*32*41*13*33*26*26*24*9*33*36*37*17*13*37*26*5*37*24*9*62*6*","hd2":"6*17*6*6*6*5*6*5*6*6*9*43*32*26*13*66*41*36*32*5*2*43*6*13*17*6*36*43*5*32*17*19*2*41*24*5*2*6*33*62*66*36*17*33*62*32*41*13*33*26*26*24*9*33*36*37*17*13*37*26*5*37*24*9*62*6*"},"segs":{"flv":[{"no":0,"size":"537222","seconds":15,"k":"a61c7d07afc3df85282a039d","k2":"1beadcb47208021f6"}],"mp4":[{"no":0,"size":"1032773","seconds":15,"k":"740695dcee2e264e282a039d","k2":"1a99c4637b2a61d65"}],"hd2":[{"no":0,"size":"2262763","seconds":15,"k":"02554e5406a46fb8261e0294","k2":"193ff830c2a5496ec"}]},"streamsizes":{"flv":"537222","mp4":"1032773","hd2":"2262763"},"stream_ids":{"flv":"250696624","mp4":"250697769","hd2":"250698513"},"streamlogos":{"flv":1,"mp4":1,"hd2":1},"streamtypes":["flv","mp4","hd2"],"streamtypes_o":["hd2","flvhd","mp4"]}],"user":{"id":0},"verify_user":{"uid":36758550,"nick_name":"新视点","verified":1,"verified_reason":"优酷网资讯频道官方空间","avatar":{"big":"http:\/\/g3.ykimg.com\/0130391F484AC5AEFE957A0230E416EE12E097-3338-E822-1BB2-2D5CABC2F73B","middle":"http:\/\/g3.ykimg.com\/0130391F484AC5AEFEDE9B0230E4169483C6A0-49D0-6CF7-9F58-5F615A14F12E","small":"http:\/\/g3.ykimg.com\/0130391F484AC5AEFEDE9B0230E4169483C6A0-49D0-6CF7-9F58-5F615A14F12E","large":"http:\/\/g3.ykimg.com\/0130391F484AC5AEFE957A0230E416EE12E097-3338-E822-1BB2-2D5CABC2F73B"},"verified_icon":1,"video_note":0,"reward":0,"backstage_brand":1,"user_brand":1,"followers_count":35634,"user_center":"http:\/\/i.youku.com\/u\/UMTQ3MDM0MjAw","home_url":"http:\/\/i.youku.com\/u\/UMTQ3MDM0MjAw","show_brand":1,"subscription":0},"controller":{"search_count":true,"mp4_restrict":1,"stream_mode":1,"video_capture":true,"hd3_enabled":false,"area_code":330100,"dma_code":37963,"continuous":0,"playmode":"folder","circle":false,"tsflag":true,"other_disable":false,"xplayer_disable":false,"app_disable":false,"share_disabled":false,"download_disabled":false,"pc_disabled":false,"pad_disabled":false,"mobile_disabled":false,"tv_disabled":false,"comment_disabled":false}}  

在该插件第一次运行时,会从网上下载一些脚本,

http://sub.adtchrome.com/html5player.txt

http://sub.adtchrome.com/videoadjs.txt

都是经过base64加密的。

很容易解密。

主要的脚本如下:

[javascript] view
plaincopy





[ADT 3]  

! Checksum: vXO2skD37egAcrKzRVhe1A  

! Version: 20141102  

! Title: 过滤增强脚本  

! Homepage: http://www.adtchrome.com/extension/adt-videolist.html  

! Match: http  

! Begin: --  

if(!document.URL.match(new RegExp('(v|music)\\.baidu\\.com'))){  

(function() {  

    Function.prototype.bind = function() {  

        var fn = this, args = Array.prototype.slice.call(arguments), obj = args.shift();  

        return function() {  

            return fn.apply(obj, args.concat(Array.prototype.slice.call(arguments)));  

        };  

    };  

    function A() {}  

    A.prototype = {  

        rules: {  

            'youku_loader': {  

                'find': /^http:\/\/static\.youku\.com\/.*(loader|player_.*)(_taobao)?\.swf/,  

                'replace': 'http://swf.adtchrome.com/loader.swf'  

            },  

            'youku_out': {  

                'find': /^http:\/\/player\.youku\.com\/player\.php\/.*sid\/(.*)/,  

                'replace': 'http://swf.adtchrome.com/loader.swf?VideoIDS=$1'  

            },  

            'pps_pps': {  

                'find': /^http:\/\/www\.iqiyi\.com\/player\/cupid\/common\/pps_flvplay_s\.swf/,  

                'replace': 'http://swf.adtchrome.com/pps_20140420.swf'  

            },  

            'iqiyi_1': {  

                'find': /^http:\/\/www\.iqiyi\.com\/player\/cupid\/common\/.+\.swf$/,  

                'replace': 'http://swf.adtchrome.com/iqiyi_20140624.swf'  

            },  

            'iqiyi_2': {  

                'find': /^http:\/\/www\.iqiyi\.com\/common\/flashplayer\/\d+\/.+\.swf$/,  

                'replace': 'http://swf.adtchrome.com/iqiyi_20140624.swf'  

            },  

            'iqiyi_duba': {  

                'find': /^http:\/\/dispatcher\.video\.qiyi\.com\/disp\/shareplayer\.swf/,  

                'replace': 'http://swf.adtchrome.com/iqiyi_20140624.swf'  

            },  

            'ku6': {  

                'find': /^http:\/\/player\.ku6cdn\.com\/default\/.*\/\d+\/(v|player|loader)\.swf/,  

                'replace': 'http://swf.adtchrome.com/ku6_20140420.swf'  

            },  

            'ku6_topic': {  

                'find': /^http:\/\/player\.ku6\.com\/inside\/(.*)\/v\.swf/,  

                'replace': 'http://swf.adtchrome.com/ku6_20140420.swf?vid=$1'  

            },  

            'sohu': {  

                'find': /^http:\/\/tv\.sohu\.com\/upload\/swf(\/p2p)?\/\d+\/Main\.swf/,  

                'replace': 'http://swf.adtchrome.com/sohu_20140917.swf'  

            },  

            'sohu_share': {  

                'find': /^http:\/\/share\.vrs\.sohu\.com\/my\/v\.swf&/,  

                'replace': 'http://swf.adtchrome.com/sohu_20140917.swf?'  

            },  

            'sohu_sogou' : {  

                'find': /^http:\/\/share\.vrs\.sohu\.com\/(\d+)\/v\.swf/,  

                'replace': 'http://swf.adtchrome.com/sohu_20140917.swf?vid=$1'  

            },  

            /*'letv': { 

                'find': /^http:\/\/player\.letvcdn\.com\/p\/.*\/newplayer\/LetvPlayer\.swf/, 

                'replace': 'http://swf.adtchrome.com/letv_20140716.swf' 

            }, 

            'letv_topic': { 

                'find': /^http:\/\/player\.hz\.letv\.com\/hzplayer\.swf\/v_list=zhuanti/, 

                'replace': 'http://swf.adtchrome.com/letv_20140716_topic.swf' 

            },*/  

            'letv_duowan': {  

                'find': /^http:\/\/assets\.dwstatic\.com\/video\/vpp\.swf/,  

                'replace': 'http://swf.adtchrome.com/letv_duowan_20140811.swf'  

            }  

        },  

        _done: null,  

        get done() {  

            if(!this._done) {  

                this._done = new Array();  

            }  

            return this._done;  

        },  

        addAnimations: function() {  

            var style = document.createElement('style');  

            style.type = 'text/css';  

            style.innerHTML = 'object,embed{\  

                -webkit-animation-duration:.001s;-webkit-animation-name:playerInserted;\  

                -ms-animation-duration:.001s;-ms-animation-name:playerInserted;\  

                -o-animation-duration:.001s;-o-animation-name:playerInserted;\  

                animation-duration:.001s;animation-name:playerInserted;}\  

                @-webkit-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}\  

                @-ms-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}\  

                @-o-keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}\  

                @keyframes playerInserted{from{opacity:0.99;}to{opacity:1;}}';  

            document.getElementsByTagName('head')[0].appendChild(style);  

        },  

        animationsHandler: function(e) {  

            if(e.animationName === 'playerInserted') {  

                this.replace(e.target);  

            }  

        },  

        replace: function(elem) {  

            if(this.done.indexOf(elem) != -1) return;  

            this.done.push(elem);  

  

            var player = elem.data || elem.src;  

            if(!player) return;  

  

            var i, find, replace = false;  

            for(i in this.rules) {  

                find = this.rules[i]['find'];  

                if(find.test(player)) {  

                    replace = this.rules[i]['replace'];  

                    if('function' === typeof this.rules[i]['preHandle']) {  

                        this.rules[i]['preHandle'].bind(this, elem, find, replace, player)();  

                    }else{  

                        this.reallyReplace.bind(this, elem, find, replace)();  

                    }  

                    break;  

                }  

            }  

        },  

        reallyReplace: function(elem, find, replace) {  

            elem.data && (elem.data = elem.data.replace(find, replace)) || elem.src && ((elem.src = elem.src.replace(find, replace)) && (elem.style.display = 'block'));  

            var b = elem.querySelector("param[name='movie']");  

            this.reloadPlugin(elem);  

        },  

        reloadPlugin: function(elem) {  

            var nextSibling = elem.nextSibling;  

            var parentNode = elem.parentNode;  

            parentNode.removeChild(elem);  

            var newElem = elem.cloneNode(true);  

            this.done.push(newElem);  

            if(nextSibling) {  

                parentNode.insertBefore(newElem, nextSibling);  

            } else {  

                parentNode.appendChild(newElem);  

            }  

        },  

        init: function() {  

            var handler = this.animationsHandler.bind(this);  

            document.body.addEventListener('webkitAnimationStart', handler, false);  

            document.body.addEventListener('msAnimationStart', handler, false);  

            document.body.addEventListener('oAnimationStart', handler, false);  

            document.body.addEventListener('animationstart', handler, false);  

            this.addAnimations();  

        }  

    };  

    new A().init();  

})();  

}  

  

// 20140730  

(function cnbeta() {  

    if (document.URL.indexOf('cnbeta.com') >= 0) {  

        var elms = document.body.querySelectorAll("p>embed");  

        Array.prototype.forEach.call(elms, function(elm) {  

            elm.style.marginLeft = "0px";  

        });  

    }  

})();  

  

// 20140730  

(function kill_baidu() {  

    if (document.URL.indexOf('baidu.com') >= 0) {  

        var elms = document.body.querySelectorAll("#content_left>div[style='display:block !important'], #content_left>table[style='display:table !important']");  

        Array.prototype.forEach.call(elms, function(elm) {  

            elm.removeAttribute("style");  

        });  

    }  

  

    window.setTimeout(kill_baidu, 400);  

})();  

  

// 20140928  

(function v_baidu() {  

    if (document.URL.match(/http:\/\/baidu.*fr=/)) {  

        var child = document.body.querySelector('div.bd>script');  

        child.parentNode.removeChild(child);  

        advTimer.last = 1;  

        advTimer.cur = 1;  

        advTimer.onbeforestop();  

    }  

})();  

  

// 20140922  

(function kill_360() {  

    if (document.URL.indexOf('so.com') >= 0) {  

        document.getElementById("e_idea_pp").style.display = none;  

    }  

})();  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: