架构师_程序员_码农网

V Gauti slaptažodį
Užsiregistruoti

QQ登录

Tik vienas žingsnis, kad pradėtumėte

Paieška
Peržiūrėta:5980|Atsiliepimų: 3
打印 上一主题 下一主题

Skelbimų analizė Aiki žaidėjas!

[kopijuoti nuorodą]
L 跳转到指定楼层
pastato savininkui
发表于 2014-10-23 22:26:53|只看该作者回帖奖励|Atvirkštinisnaršymas| Skaitymo režimas

Neseniai užimtas su mokyklos atidarymo tinka akliesiems lankstymo - šių dviejų dienų Nulis užimtas vaizdo skelbimų, sakė, kad skelbimai vis labiau ir labiau užtvindytas, kai kurie iš vaizdo atidarymo skelbimų yra daugiau nei 60s. Jis atsikratė "Sohu" skelbimų, tačiau jam nepavyko atsikratyti "Aqiyi" skelbimų. Leiskite man padėti jam ieškoti.

Jis man davė išeities kodą, aš neturiu swf dekompiliatoriaus.

Aš neturėjau swf dekompiliatoriaus. Tikriausiai pažiūrėjau į struktūrą, o ActionScript nesu išmokęs. Jis pasakė, kad tai panašu į Java, todėl nesivarginau žiūrėti į pagrindinę sintaksę, o iš karto perėjau prie jos. Pirmiausia pažvelkime į pagrindinio failo Player.as antraštę ir pažiūrėkime, kokios ten yra nuorodos.

  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.*;
Nukopijuokite kodą

Pažvelkite į pavadinimą: com.qiyi.player.wonder.common.config.*; atkreipiau dėmesį - pažvelkite į konfigūracijos informaciją. Yra du failai: FlashVarConfig.as ir SystemConfig.as. SystemConfig.as nerodo nieko įdomaus, tačiau verta ištirti xml konfigūracijos failą, į kurį daroma nuoroda FlashVarConfig.as.

  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 = "";
Kodo kopijavimas

Šio konfigūracijos failo 31 eilutėje yra tokia pastraipa. O 35 eilutėje reklaminiu adresu taip pat patraukė mano dėmesį, vėliau atliekant analizę. Pirmiausia pažvelkite į konfigūracijos failą.

  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>
Nukopijuokite kodą

Jame rašoma, kad tai 8 s trukmės reklama rodymo metu, o tai reiškia, kad ją lokalizavau ir užgrobiau naršyklę, kad pašalinčiau reklamą, tačiau aišku, kad tai nėra reklama prieš įkeliant vaizdo įrašą. Laikykitės flipping-labai nuobodus procesas.

Išsiaiškinkite, kas skambina get adPlayerURL(), ir žiūrėkite į viršų. Pagal com\qiyi\player\wonder\plugins\ad radau, kad reklamos grotuvas egzistuoja įskiepio pavidalu, t. y. dar yra iškvietimas, pažvelgęs į viršų radau, kad com\qiyi\cupid\adplayer\CupidAdPlayer.as inicializuojamas CupidAdPlayer. Ir klasė yra užtušuota, o tai kelia įtarimą.

  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
Nukopijuokite kodą

CupidAdPlayer(param1:CupidParam) <- pažiūrėkite į jos iškvietimo parametrus, tai yra, viršutinis sluoksnis vis dar skambina, kuris parametras vienas, reikšmė labai pastebima, vipRight Spręskite, ar tai vip, o vip nėra skelbimų, tai yra, jei gausiu naudotojo informaciją sesijoje grotuve, ją panaudosiu naudotojo informacijai svetainėje gauti, tai yra, jei gausiu naudotojo informaciją sesijoje grotuve, ją panaudosiu naudotojo informacijai svetainėje gauti. Kitaip tariant, jei padarysiu naudotojo informacijos pakeitimą svetainės sesijoje po to, kai jos grotuvas gaus naudotojo informaciją svetainėje, ir padarysiu pakeitimą vietoje, kurioje sprendžiama, ar jis yra vip, ar ne, dėl kurio bus iškviestas žemesnis sluoksnis, bus klaidingai manoma, kad jis yra vip (tik reklamos grotuvas mano, kad esate vip, o kitoms vietoms tai įtakos neturės). Taigi toliau žiūrėkime į viršų. Ieškodami grįžome į reklamos įskiepio katalogą. com\qiyi\player\wonder\plugins\ad\view į ADView.as, antraštė pirmiausia yra

  1. private var _adPlayer:CupidAdPlayer;
Kopijuoti kodą

Vieną kartą apibrėžtas CupidAdPlayer egzempliorius pavadinimu _adPlayer, slinkome žemyn, kad sužinotume, kas naudoja _adPlayer. netikėtai radome reklamos grotuvo kūrimo funkciją.

  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
Kopijuojant kodą

Matydami, kad vis dar galite perduoti parametrus, reiškia, kad ji vis dar kviečiama. Pagaliau radau šaltinį ADViewMediator.as skiltyje com\qiyi\player\wonder\plugins\ad\view. Galutinis jo funkcijos iškvietimas atrodo taip

  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
Kopijuoti kodą

Svarbiausias taškas yra

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
Kopijuoti kodą

Šioje eilutėje, norint nustatyti, ar naudotojas yra vip, ar ne, pirmiausia pagal vietinį kintamąjį loc_2 nustatomas naudotojo lygis, jei su vip lygio apibrėžimu, jis grąžina 1. Mes jį šiek tiek modifikuojame, jis tampa pseudovip.

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("1");
Nukopijuokite kodą

Tokiu būdu šešiakampyje modifikuoti eilutę, sėkmingai pašalintos bandomosios reklamos (naudodami "Chrome" įskiepio funkciją, modifikuokite vietinio žaidėjo adresą, paleiskite tuos pačius parametrus perduoti).

Be to, "AdBlockedBlackScreen.as" dalyje com\qiyi\cupid\adplayer\model yra vietinė aptikimo funkcija, skirta uždrausti "Chrome" įskiepio blokavimą.

  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
Nukopijuokite kodą

Tiesiog pakeiskite antrosios funkcijos if grįžtamąją reikšmę į false.






Ankstesnis straipsnis "Freeze Restore Wizard 7.5 Alternative Crack in Win7
Kitas: VMware virtualios mašinos diegimas MAC OSX Mountain Lion
Kodas Ūkininko tinklas, skelbiamas tik praktikos procese, susidūrus su techniniais sunkumais, neklaidinti kitų.
Nesu tikras, ar jūs esate šio gerbėjas.
Nesu tikras , ar man pavyks tai padaryti.
发表于 2014-10-23 23:25:57|只看该作者
Xiao Ningzi yra toks puikus
Kodas ūkininkų tinklas, paskelbtas tik praktikos metu, susidūrė su techniniais sunkumais, neklaidinkite kitų.
Suoliukas
发表于 2014-10-24 21:57:25|只看该作者
Šis reklamos blokavimo įskiepis nėra blogas

Įvertinimas

Dalyviai 1 MB +1 Įnašas +1 AtstumtiPriežastis
admin + 1 + 1 Labai galingas!

Peržiūrėti visus įvertinimus

Kodas ūkininko tinklas, paskelbtas tik praktikos metu, susidūrė su techniniais sunkumais, neklaidina kitų.
grindų lentos
savininkas|发表于 2014-10-24 22:01:44|只看该作者
Įrašė skywriter 2014-10-24 21:57
Šis įskiepis blokuoti reklamas yra neblogas

Adblock Plus yra populiariausia reklamų filtravimo programinė įranga, skirta Firefox, Chrome, Opera, Safari, Android ir Internet Explorer naršyklėms. Filtruokite visus erzinančius internetinius skelbimus: pašalinkite vaizdo įrašų skelbimus "Youtube", filtruokite "Facebook" skelbimus, atsikratykite iššokančiųjų skelbimų ir daug kitų. "Google Chrome" naršyklėje "Adblock Plus" yra vienas sparčiausiai populiarėjančių papildinių.
CodeFarmer.com, paskelbta tik praktikos metu, susidūrė su techniniais sunkumais, neklaidinkite kitų.

Ši vientisųjų taisyklių versija


ATSISAKYMAS: Visa programinė įranga, programinė medžiaga ar straipsniai išleistas kodas ūkininko tinklo apsiriboja tik studijų ir mokslinių tyrimų tikslais; pirmiau minėtas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju, visi padariniai prašome vartotojas atsakingas. Šios svetainės informacija iš tinklo, ginčas dėl autorių teisių neturi nieko bendra su šia svetaine. Per 24 valandas nuo atsisiuntimo turite visiškai pašalinti pirmiau nurodytą turinį iš savo kompiuterio. Jei programa jums patinka, paremkite originalią programinę įrangą, nusipirkite registraciją ir gaukite geresnes originalias paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu, kad juos išspręstume.

Paštas To:help@itsvse.com

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

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

Greitasis atsakymasAtgal į viršųAtgal į sąrašą