Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 9139|Atbildi: 3

iQIYI spēlētāja reklāmas analīze

[Kopēt saiti]
Publicēts 23.10.2014 22:26:53 | | | |

Nesen esmu aizņemts ar skolas sākumu, un tas ir piemērots akli mest - pēdējās divās dienās Zero ir aizņemts ar videoklipiem, lai reklamētu, un tiek teikts, ka reklāmas kļūst arvien niknākas, un daži videoklipi ir atvērti vairāk nekā 60 gadus. Viņš noņēma Sohu, bet iQiyi nekad nav izdarīts. Ļaujiet man palīdzēt viņam paskatīties.

Avota kodu man iedeva viņš, man nav swf dekompilatora.

Iespējams, aplūkojot struktūru, es neesmu iemācījies ActionScript. Viņš teica, ka tas ir līdzīgs Java, tāpēc es neuztraucos apskatīt pamata sintaksi, tāpēc es devos tieši pie tā. Apskatīsim galvenās faila Player.as galvu, lai redzētu, kādi citāti ir.

  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.*;
Kopēt kodu

Apskatiet nosaukumu, lai uzzinātu nozīmi, com.qiyi.player.wonder.common.config.*; Piesaista manu uzmanību - apskatiet konfigurācijas informāciju. Abi dokumenti FlashVarConfig.as un SystemConfig.as. SystemConfig.as neatradu neko pamanāmu, bet FlashVarConfig.as minētais XML konfigurācijas fails ir vērts izpētīt.

  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 = "";
Kopēt kodu

31. rindā šajā konfigurācijas failā ir šis fragments. Un reklāmas adrese 35. rindā arī piesaistīja manu uzmanību, ko es analizēšu vēlāk. Vispirms apskatīsim konfigurācijas failu.

  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>
Kopēt kodu

Tiek teikts, ka tā ir reklāma spēlē, 8s laiks, tas ir, es to lokalizēju un pēc tam nolaupīju pārlūkprogrammu, lai sasniegtu reklāmas, bet ir acīmredzams, ka tā nav reklāma pirms video ielādes. Turpiniet apgriezt - ļoti garlaicīgs process.

Atrodiet, kas zvanīja get adPlayerURL() un meklējiet. Sadaļā com \ qiyi \ player \ wonder \ plugins \ ad tiek konstatēts, ka reklāmas atskaņotājs pastāv spraudņa formā, tas ir, ir zvans, meklējiet uz augšu, atrodiet CupidAdPlayer vietnē com \ qiyi \ cupid \ adplayer \ CupidAdPlayer.as inicializēt. Un šī klase ir sajaukta, kas ir ļoti aizdomīga.

  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
Kopēt kodu

CupidAdPlayer(param1:CupidParam) < - Apskatiet tā izsaukšanas parametrus, tas ir, augšējais slānis joprojām zvana, kur parametrs 1, vērtība ir ļoti uzkrītošs, vipRight spriež, vai tas ir vip, un VIP nav reklāmas, tas ir, ja es veicu izmaiņas vietā, kur es spriedu, vai tas ir VIP pēc lietotāja informācijas iegūšanas vietnes sesijā savā atskaņotājā, izraisot zemākā līmeņa izsaukšanu, Kļūdaini tiek uzskatīts par VIP (tikai reklāmas atskaņotājs domā, ka jūs esat VIP, un pārējā pasaule netiek ietekmēta). Tad turpināsim meklēt augšup. Es meklēju un meklēju, un atgriezos un atgriezos reklāmas spraudņu katalogā. com\qiyi\player\wonder\plugins\ad\view ADView.as, galva ir pirmā

  1. private var _adPlayer:CupidAdPlayer;
Kopēt kodu

Definēts CupidAdPlayer gadījums ar nosaukumu _adPlayer, paskatieties uz leju, lai redzētu, kurš _adPlayer izmantoja. Es atradu reklāmas atskaņotāja izveides funkciju.

  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
Kopēt kodu

Es redzēju, ka tas var arī iziet parametrus, norādot, ka tas joprojām tiek saukts. Visbeidzot atradu avotu ADViewMediator.as zem com \ qiyi \ player \ wonder \ plugins \ ad \ view. Viņa funkcija beidzot tiek saukta šādi

  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
Kopēt kodu

Galvenais punkts ir

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
Kopēt kodu

Šis teikums nosaka, vai lietotājs ir VIP vai nē, vispirms vērtē lietotāja līmeni pēc vietējā mainīgā loc_2 un atgriež 1, ja tas atbilst definētajam VIP līmenim. Mēs viņam veicām nelielas izmaiņas, un viņš kļuva par pseido-VIP.

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("1");
Kopēt kodu

Tādā veidā vienkārši modificējiet to Hex, un testa reklāma tiek veiksmīgi noņemta (izmantojot Chrome spraudņa funkciju, mainiet atskaņotāja adresi, lai tā būtu lokāla, un nododiet atskaņošanas parametrus tādus, kādi tie ir).

Turklāt sadaļā com\qiyi\cupid\adplayer\model AdBlockedBlackScreen.as ir vietējā noteikšanas funkcija, kas aizliedz Chrome spraudņu bloķēšanu.

  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
Kopēt kodu

Vienkārši nomainiet otrā atgriešanos uz false.






Iepriekšējo:Sasalšanas punkta atjaunošanas Genie 7.5 Win7 alternatīvā plaisāšana
Nākamo:VMware virtuālās mašīnas ir instalētas MAC OSX Mountain Lion
Publicēts 23.10.2014 23:25:57 |
Xiao Ningzi ir tik spēcīgs
Publicēts 24.10.2014 21:57:25 |
Šis reklāmu bloķēšanas spraudnis nav slikts

Vērtējums

Dalībnieku skaits1MB+1 Veicināt+1 Sakļaut iemesls
Admin + 1 + 1 Ļoti spēcīgs!

Skatīt visus vērtējumus

 Saimnieks| Publicēts 24.10.2014 22:01:44 |
Nepārspējams publicēts 2014-10-24 21:57
Šis reklāmu bloķēšanas spraudnis nav slikts

Adblock Plus ir populārākā reklāmu filtrēšanas programmatūra, kas pieejama Firefox, Chrome, Opera, Safari, Android un Internet Explorer. Filtrējiet visas kaitinošās tīmekļa reklāmas: noņemiet video reklāmas vietnē Youtube, filtrējiet Facebook reklāmas, atbrīvojieties no uznirstošajām reklāmām un daudzām citām reklāmām. Google Chrome Adblock Plus ir viens no visstraujāk augošajiem spraudņiem.
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com