架构师_程序员_码农网

K Parooli taastamine
Registreeri

QQ登录

Ainult üks samm, et alustada

Otsi
View:5980|Reply: 3
打印 上一主题 下一主题

Aiki mängija kuulutuste analüüs!

[kopeeri link]
L 跳转到指定楼层
hoone omanikule
发表于 2014-10-23 22:26:53|只看该作者回帖奖励|ReverseBrowse|Read Mode

Hiljuti hõivatud kooli avamine sobib pimedate voltimine - need kaks päeva Zero hõivatud video reklaamid, ütles reklaamid saavad üha rohkem ja rohkem üleujutatud, mõned video avamine reklaamid on rohkem kui 60s. Ta sai lahti Sohu reklaamid, kuid ta ei ole suutnud vabaneda Aqiyi reklaamid. Las ma aitan tal otsida.

Lähtekoodi andis ta mulle, mul ei ole swf dekompilaatorit.

Mul ei olnud swf dekompilaatorit. Ma ilmselt vaatasin struktuuri ja ma ei ole ActionScripti õppinud. Ta ütles, et see on sarnane Java'ga, nii et ma ei viitsi vaadata põhilist süntaksit, vaid lähen otse. Vaatame kõigepealt põhifaili Player.as päistikku ja vaatame, millised viited seal on.

  1.     import com.iqiyi.components.global.*;
  2.     import com.iqiyi.components.tooltip.*;
  3.     import com.qiyi.player.base.pub.*;
  4.     import com.qiyi.player.base.uuid.*;
  5.     import com.qiyi.player.core.*;
  6.     import com.qiyi.player.core.model.def.*;
  7.     import com.qiyi.player.core.model.utils.*;
  8.     import com.qiyi.player.wonder.*;
  9.     import com.qiyi.player.wonder.body.view.*;
  10.     import com.qiyi.player.wonder.common.config.*;
  11.     import com.qiyi.player.wonder.common.lso.*;
  12.     import com.qiyi.player.wonder.common.pingback.*;
  13.     import com.qiyi.player.wonder.common.sw.*;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.media.*;
  17.     import flash.system.*;
  18.     import flash.utils.*;
Kopeerime koodi

Vaadake nime, com.qiyi.player.wonder.common.config.*; äratas mu tähelepanu - vaadake konfiguratsiooniinfot. Seal on kaks faili, FlashVarConfig.as ja SystemConfig.as. SystemConfig.as ei näita midagi huvitavat, kuid FlashVarConfig.as-is viidatud xml-konfiguratsioonifaili tasub uurida.

  1. package com.qiyi.player.wonder.common.config
  2. {

  3.     public class FlashVarConfig extends Object
  4.     {
  5.         public static const OWNER_PAGE:String = "page";
  6.         public static const OWNER_CLIENT:String = "client";
  7.         public static const OS_XP:String = "xp";
  8.         public static const OS_WIN7:String = "win7";
  9.         public static const OS_WIN8:String = "win8";
  10.         public static const PAGE_OPEN_SRC_NONE:String = "0";
  11.         public static const PAGE_OPEN_SRC_DIRECT:String = "1";
  12.         public static const PAGE_OPEN_SRC_OTHER:String = "2";
  13.         private static var _flashVarSource:Object;
  14.         private static var _albumId:String = "";
  15.         private static var _tvid:String = "0";
  16.         private static var _vid:String = "";
  17.         private static var _autoPlay:Boolean = true;
  18.         private static var _isMemberMovie:Boolean = false;
  19.         private static var _cyclePlay:Boolean = false;
  20.         private static var _components:String = "fefff7e6";
  21.         private static var _cupId:String = "";
  22.         private static var _shareStartTime:int = -1;
  23.         private static var _shareEndTime:int = -1;
  24.         private static var _preloaderURL:String = "http://dispatcher.video.qiyi.com/dispn/player/preloader.swf";
  25.         private static var _preloaderVipURL:String = "";
  26.         private static var _exclusivePreloader:String = "";
  27.         private static var _useGPU:Boolean = true;
  28.         private static var _showBrand:Boolean = true;
  29.         private static var _expandState:Boolean = false;
  30.         private static var _tipDataURL:String = "http://static.qiyi.com/ext/tips/tipdata.xml";
  31.         private static var _coop:String = "";
  32.         private static var _owner:String = "page";
  33.         private static var _os:String = "win7";
  34.         private static var _adPlayerURL:String = "";
  35.         private static var _origin:String = "";
  36.         private static var _passportID:String = "";
  37.         private static var _playListID:String = "";
Koodi kopeerimine

Reas 31 on selles config-failis järgmine lõik. Ja reas 35 reklaami aadress ka minu tähelepanu, hiljem analüüsis. Vaadake kõigepealt konfiguratsioonifaili.

  1. </item>
  2. <!-- 正在为您播放片中广告, 可选择是否要跳过, 类别是1, 持续时间是8秒 -->
  3. <!-- 限制条件是:  不是正在登录中的会员 -->
  4. <!-- 每天每人次只最多显示两次这个tips -->
  5. <item id="ToSelectWhetherToSkipPlayingMiddleAD" level="1" duration="-1" type="1">
  6. <conditions>
  7. <fields>
  8. <field name="member" operator="eq" value="false"/>
  9. </fields>
  10. <frequency count="2">
  11. <restrain name="day"/>
  12. <restrain name="user"/>
  13. </frequency>
  14. </conditions>
  15. <list>
  16. <message>
  17. <![CDATA[
  18. 正在为您播放片中广告, <a href="event:ASEvent(skipAD)"><b><u>跳过广告</u></b></a>
  19. ]]>
  20. </message>
  21. </list>
  22. </item>
  23. <!-- 提示即将跳过8秒后会显示的剧中广告, 类别是1, 持续时间是8秒 -->
  24. <!-- 必须是登录的会员 -->
  25. <item id="ToCancelSkipNextMiddleAD" level="1" duration="8" type="1">
  26. <conditions>
  27. <fields>
  28. <field name="member" operator="eq" value="true"/>
  29. </fields>
  30. <frequency count="1">
  31. <restrain name="day"/>
  32. <restrain name="user"/>
  33. </frequency>
  34. </conditions>
  35. <list>
  36. <message>
  37. <![CDATA[
  38. 即将为您跳过片中广告,<a href="event:ASEvent(cancelSkipAD)"><u>不再跳过</u></a>
  39. ]]>
  40. </message>
  41. </list>
  42. </item>
  43. <!--
  44. 提示版权下线, 如果还有小于7天的时间下线, 每天一个专辑一台电脑提醒一次, 类别是1, 从起始60秒开始显示, 持续时间是10秒
  45. -->
  46. <!-- 因为优先级很高, 前面的最高优先级是10, 所以这里把level设为11. -->
  47. <!-- 这个tip是由signal发起的. Shawn.X  -->
  48. <!--
  49. 《<span>#keyword#</span>》 将于  <span>#expiredTime#</span> 版权到期.
  50. -->
  51. <item id="NoticeThisCopyrightWillExpire" level="11" duration="10" type="1">
  52. <conditions>
Kopeerige kood

Seal on kirjas, et tegemist on 8s kestusega in-show reklaamiga, mis tähendab, et ma lokaliseerisin selle ja kaaperdasin brauseri reklaami eemaldamiseks, kuid on selge, et see ei ole reklaam enne video laadimist. Hoidke flipp- väga igav protsess.

Uuri välja, kes kutsub get adPlayerURL() ja vaata ülespoole. All com\qiyi\player\wonder\plugins\ad, leidsin, et reklaamplayer on olemas pluginina, st seal on veel kõne, ülespoole vaadates leidsin, et aadressil com\qiyi\cupid\adplayer\CupidAdPlayer.as CupidAdPlayer on initsialiseeritud. Ja klass on obfuscated, mis on kahtlane.

  1. public function CupidAdPlayer(param1:CupidParam)
  2.         {
  3.             this.PLAYER_TIMEOUT_LENGTHS = new Array(10000, 15000);
  4.             Log.info("init, version=" + VERSION + ", " + param1.toString());
  5.             this._videoPlayerVersion = param1.videoPlayerVersion;
  6.             this._videoId = param1.videoId;
  7.             this._tvId = param1.tvId;
  8.             this._channelId = param1.channelId;
  9.             this._collectionId = param1.collectionId;
  10.             this._playerId = param1.playerId;
  11.             this._albumId = param1.albumId;
  12.             this._userId = param1.userId;
  13.             this._webEventId = param1.webEventId;
  14.             this._videoEventId = param1.videoEventId;
  15.             this._vipRight = param1.vipRight;
  16.             this._terminal = param1.terminal;
  17.             this._duration = param1.duration;
  18.             this._passportId = param1.passportId;
  19.             this._passportCookie = param1.passportCookie;
  20.             this._passportKey = param1.passportKey;
  21.             this._videoDefinitionId = param1.videoDefinitionId;
  22.             if (this.isQiyiWebEx())
  23.             {
  24.                 this._playerUrl = this.IQIYI_WEBEX_AM_URL;
  25.             }
  26.             else if (param1.playerUrl)
  27.             {
  28.                 this._playerUrl = param1.playerUrl;
  29.             }
  30.             else
  31.             {
  32.                 this._playerUrl = this.IQIYI_WEB_AM_URL;
  33.             }
  34.             if (param1.dispatcher == null)
  35.             {
  36.                 this._dispatcher = this;
  37.             }
  38.             else
  39.             {
  40.                 this._dispatcher = param1.dispatcher;
  41.             }
  42.             this._volume = param1.volume;
  43.             this._videoIndex = param1.videoIndex;
  44.             this._stageWidth = param1.stageWidth;
  45.             this._stageHeight = param1.stageHeight;
  46.             this._displayContainer = param1.adContainer;
  47.             this._screenStatus = DisplayProperties.isFullScreen(this._displayContainer.stage) ? ("1") : ("0");
  48.             this._baiduMainVideo = param1.baiduMainVideo;
  49.             this._disablePreroll = param1.disablePreroll;
  50.             this._disableSkipAd = param1.disableSkipAd;
  51.             this._enableVideoCore = param1.enableVideoCore;
  52.             this._isUGC = param1.isUGC;
  53.             this._videoPlayerUrl = this._displayContainer.loaderInfo ? (this._displayContainer.loaderInfo.loaderURL) : ("");
  54.             this._env = this.generateEnv();
  55.             this.addAdPlayerEventListeners();
  56.             return;
  57.         }// end function
Kopeerige kood

CupidAdPlayer(param1:CupidParam) <- vaadake selle kutsuvaid parameetreid, see tähendab, et ülemine kiht ikka kutsub, mis parameeter üks, väärtus on väga märgatav, vipRight Judge, kas see on vip, ja vip ei ole olemas reklaami, see tähendab, kui ma saan kasutaja andmed seansis mängija, ma kasutan seda, et saada kasutaja andmed veebilehel, see tähendab, kui ma saan kasutaja andmed seansis mängija, ma kasutan seda, et saada kasutaja andmed veebilehel. See tähendab, et kui ma muudan kasutaja teavet veebisaidi seansis pärast selle mängija saamist kasutaja teavet veebisaidil, ja muudan koha otsustamiseks, kas ta on vip või mitte, mis põhjustab alumise kihi kutsumist, siis arvatakse ekslikult, et ta on vip (ainult reklaami mängija arvab, et sa oled vip, ja muud kohad ei mõjuta). Nii et vaatame edasi ülespoole. Otsime seda, läksime tagasi reklaamiplugiini kataloogi. com\qiyi\player\wonder\plugins\ad\view ADView.as, päis on kõigepealt

  1. private var _adPlayer:CupidAdPlayer;
Kopeeri kood

Määratlesime kord CupidAdPlayer'i instantsi nimega _adPlayer, kerisime alla, et leida, kes kasutab _adPlayer'i. Üllatavalt leidsime reklaamimängija loomise funktsiooni.

  1. public function createAdPlayer(param1:CupidParam) : void
  2.         {
  3.             if (this._adPlayer)
  4.             {
  5.                 this.unloadAdPlayer();
  6.             }
  7.             this._log.info("loading adplayer...");
  8.             this._adPlayer = new CupidAdPlayer(param1);
  9.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_LOADING_SUCCESS, this.onAdLoadSuccess);
  10.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_LOADING_FAILURE, this.onAdLoadFailed);
  11.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_START, this.onAdStartPlay);
  12.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_PAUSE, this.onAdAskVideoPause);
  13.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_RESUME, this.onAdAskVideoResume);
  14.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_START_LOADING, this.onAdAskVideoStartLoad);
  15.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_START, this.onAdAskVideoStartPlay);
  16.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_END, this.onAdAskVideoEnd);
  17.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_BLOCK, this.onAdBlock);
  18.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_DISPLAY_AD_TIP, this.onAskVideoShowBonusTips);
  19.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_VIDEO, this.onAdFlvADAction);
  20.             this._adPlayer.load();
  21.             return;
  22.         }// end function
Koodi kopeerimine

Nähes, et saab veel parameetreid üle anda, tähendab, et seda kutsutakse ikka veel. Lõpuks leidsin allika ADViewMediator.as all com\qiyiyi\player\wonder\plugins\ad\view. Tema funktsiooni lõplik kõne näeb välja selline

  1. private function createADPlayer() : void
  2.         {
  3.             sendNotification(BodyDef.NOTIFIC_PLAYER_STOP_LOAD);
  4.             ProcessesTimeRecord.STime_adInit = getTimer();
  5.             var _loc_1:* = facade.retrieveProxy(PlayerProxy.NAME) as PlayerProxy;
  6.             var _loc_2:* = facade.retrieveProxy(UserProxy.NAME) as UserProxy;
  7.             var _loc_3:* = new CupidParam();
  8.             _loc_3.playerUrl = FlashVarConfig.adPlayerURL;
  9.             _loc_3.videoId = _loc_1.curActor.loadMovieParams.vid;
  10.             _loc_3.tvId = _loc_1.curActor.loadMovieParams.tvid;
  11.             _loc_3.channelId = _loc_1.curActor.movieModel.channelID;
  12.             _loc_3.playerId = FlashVarConfig.cupId;
  13.             _loc_3.albumId = _loc_1.curActor.movieModel.albumId;
  14.             _loc_3.dispatcher = null;
  15.             _loc_3.adContainer = this._ADView;
  16.             _loc_3.stageWidth = GlobalStage.stage.stageWidth;
  17.             _loc_3.stageHeight = GlobalStage.stage.stageHeight;
  18.             _loc_3.userId = _loc_1.curActor.uuid;
  19.             _loc_3.webEventId = UUIDManager.instance.getWebEventID();
  20.             _loc_3.videoEventId = UUIDManager.instance.getVideoEventID();
  21.             _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
  22.             _loc_3.terminal = "iqiyiw";
  23.             _loc_3.duration = _loc_1.curActor.movieModel.duration / 1000;
  24.             _loc_3.passportId = _loc_2.passportID;
  25.             _loc_3.passportCookie = _loc_2.P00001;
  26.             _loc_3.passportKey = KeyUtils.getPassportKey(0);
  27.             _loc_3.enableVideoCore = true;
  28.             _loc_3.disableSkipAd = _loc_1.curActor.movieModel.forceAD;
  29.             _loc_3.volume = Settings.instance.mute ? (0) : (Settings.instance.volumn);
  30.             _loc_3.isUGC = UGCUtils.isUGC(_loc_1.curActor.movieModel.tvid);
  31.             _loc_3.collectionId = FlashVarConfig.collectionID;
  32.             _loc_3.videoDefinitionId = _loc_1.curActor.movieModel.curDefinitionInfo.type.id;
  33.             _loc_3.videoPlayerVersion = WonderVersion.VERSION_WONDER;
  34.             this._ADView.createAdPlayer(_loc_3);
  35.             return;
  36.         }// end function
Kopeeri kood

Võtmekoht on

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
Kopeeri kood

See rida, et määrata, kas kasutaja on vip või mitte, kõigepealt vastavalt kohaliku muutuja loc_2 määrata kasutaja tase, kui koos määratluse vip tase, see tagastab 1. Anname talle kerge muudatus, see muutub pseudo-vip.

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("1");
Kopeerige kood

Sel viisil Hex muuta rida, test reklaami edukalt eemaldada (kasutades Chrome'i plug-in funktsiooni, muuta mängija aadressi kohaliku, mängida samad parameetrid edastada).

Lisaks on AdBlockedBlackScreen.as all com\qiyi\cupid\adplayer\model, on kohalik tuvastamise funktsioon, et keelata Chrome'i plug-in blokeerimine.

  1. public static function isInBlacklist(param1:String) : Boolean
  2.         {
  3.             if (!param1)
  4.             {
  5.                 return false;
  6.             }
  7.             if (StringUtils.beginsWith(param1, "chrome-extension://"))
  8.             {
  9.                 return true;
  10.             }
  11.             var _loc_2:* = new URLParser(param1);
  12.             var _loc_3:* = _loc_2.getHost();
  13.             return HOST_BLACKLIST.indexOf(_loc_3) != -1;
  14.         }// end function
Kopeerige kood

Lihtsalt muutke teise if-i tagastus false'ks.






Eelmine artikkelFreeze Restore Wizard 7.5 alternatiivne pragu Win7-is
Järgmine: VMware virtuaalmasina paigaldamine MAC OSX Mountain Lion
Kood Farmer võrgu, ainult avaldatud praktika protsessis, tekkinud tehnilised raskused, mitte eksitada teisi.
Ma ei ole kindel, kas sa oled selle fänn.
Ma ei ole kindel, kas ma suudan seda teha.
发表于 2014-10-23 23:25:57|只看该作者
Xiao Ningzi on nii suur
Kood põllumajandustootjate võrgustik, mis on avaldatud ainult praktika käigus, kohtas tehnilisi raskusi, ärge eksitage teisi.
Bench
发表于 2014-10-24 21:57:25|只看该作者
See reklaamide blokeerimise plugin ei ole halb

Hindamine

Osalejad 1 MB +1 Panus +1 Pane ärapõhjus
admin + 1 + 1 Väga võimas!

Vaata kõiki hinnanguid

Kood taluniku võrgustik, ainult avaldatud praktika käigus, tekkinud tehnilised raskused, ärge eksitage teisi.
põrandalauad
omanik|发表于 2014-10-24 22:01:44|只看该作者
Posted by skywriter on 2014-10-24 21:57
See reklaamide blokeerimise plugin ei ole halb

Adblock Plus on kõige populaarsem reklaamide filtreerimise tarkvara, mis on saadaval Firefox, Chrome, Opera, Safari, Android ja Internet Explorer brauserite jaoks. Filtreeri kõik tüütud veebireklaamid: eemalda Youtube'i videoreklaamid, filtreeri Facebooki reklaamid, vabane hüpikreklaamidest ja palju muud. Google Chrome'is on Adblock Plus üks kiiremini kasvavaid pluginaid.
CodeFarmer.com, avaldatud ainult praktika käigus tekkinud tehnilised raskused, ärge eksitage teisi.
Sa pead sisse logima, enne kui saad tagasi postitada Logi sisse | Registreeru

S ee versioon integraalseid reegleid


DISCLAIMER: Kõik tarkvara, programmeerimismaterjalid või artiklid, mida kood talunik võrgu on piiratud õppe- ja teadustöö eesmärgil; eespool nimetatud sisu ei tohi kasutada kaubanduslikel või ebaseaduslikel eesmärkidel, vastasel juhul kõik tagajärjed palun kasutaja vastutab. See sait teavet võrgu, autoriõiguse vaidlus ei ole midagi pistmist selle saidi. Te peate täielikult eemaldada eespool nimetatud sisu oma arvutist 24 tunni jooksul pärast allalaadimist. Kui teile meeldib programm, palun toetage ehtsat tarkvara, osta registreerimine ja saada paremat ehtsat teenust. Kui esineb rikkumine, võtke meiega ühendust e-posti teel, et sellega tegeleda.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:05

Kiire vastusTagasi ülesTagasi nimekirja