|
Nesen aizņemts ar skolas atklāšanu, kas piemērota aklajiem locīšanas - šīs divas dienas nulle aizņemts video reklāmas, teica, ka reklāmas kļūst arvien vairāk un vairāk pārpludinātas, daži no video atklāšanas reklāmas ir vairāk nekā 60s. Viņš atbrīvojās no Sohu reklāmām, bet nav spējis atbrīvoties no Aqiyi reklāmām. Ļaujiet man palīdzēt viņam meklēt. Avotkods ir tas, ko viņš man deva, man nav swf dekompilētājs. Man nebija swf dekompilētāja. Es droši vien apskatīju struktūru, un es neesmu iemācījies ActionScript. Viņš teica, ka tā ir līdzīga Java, tāpēc es necentos aplūkot pamata sintaksi un ķēros pie tās uzreiz. Vispirms apskatīsim galvenā faila Player.as galveni un redzēsim, kādas atsauces tur ir. - import com.iqiyi.components.global.*;
- import com.iqiyi.components.tooltip.*;
- import com.qiyi.player.base.pub.*;
- import com.qiyi.player.base.uuid.*;
- import com.qiyi.player.core.*;
- import com.qiyi.player.core.model.def.*;
- import com.qiyi.player.core.model.utils.*;
- import com.qiyi.player.wonder.*;
- import com.qiyi.player.wonder.body.view.*;
- import com.qiyi.player.wonder.common.config.*;
- import com.qiyi.player.wonder.common.lso.*;
- import com.qiyi.player.wonder.common.pingback.*;
- import com.qiyi.player.wonder.common.sw.*;
- import flash.display.*;
- import flash.events.*;
- import flash.media.*;
- import flash.system.*;
- import flash.utils.*;
Nokopējiet kodu Aplūkojiet nosaukumu com.qiyi.player.wonder.common.config.*; piesaistīja manu uzmanību - apskatiet konfigurācijas informāciju. Ir divi faili - FlashVarConfig.as un SystemConfig.as. SystemConfig.as neuzrāda neko interesantu, bet xml konfigurācijas failu, uz kuru atsaucas FlashVarConfig.as, ir vērts izpētīt. - package com.qiyi.player.wonder.common.config
- {
- public class FlashVarConfig extends Object
- {
- public static const OWNER_PAGE:String = "page";
- public static const OWNER_CLIENT:String = "client";
- public static const OS_XP:String = "xp";
- public static const OS_WIN7:String = "win7";
- public static const OS_WIN8:String = "win8";
- public static const PAGE_OPEN_SRC_NONE:String = "0";
- public static const PAGE_OPEN_SRC_DIRECT:String = "1";
- public static const PAGE_OPEN_SRC_OTHER:String = "2";
- private static var _flashVarSource:Object;
- private static var _albumId:String = "";
- private static var _tvid:String = "0";
- private static var _vid:String = "";
- private static var _autoPlay:Boolean = true;
- private static var _isMemberMovie:Boolean = false;
- private static var _cyclePlay:Boolean = false;
- private static var _components:String = "fefff7e6";
- private static var _cupId:String = "";
- private static var _shareStartTime:int = -1;
- private static var _shareEndTime:int = -1;
- private static var _preloaderURL:String = "http://dispatcher.video.qiyi.com/dispn/player/preloader.swf";
- private static var _preloaderVipURL:String = "";
- private static var _exclusivePreloader:String = "";
- private static var _useGPU:Boolean = true;
- private static var _showBrand:Boolean = true;
- private static var _expandState:Boolean = false;
- private static var _tipDataURL:String = "http://static.qiyi.com/ext/tips/tipdata.xml";
- private static var _coop:String = "";
- private static var _owner:String = "page";
- private static var _os:String = "win7";
- private static var _adPlayerURL:String = "";
- private static var _origin:String = "";
- private static var _passportID:String = "";
- private static var _playListID:String = "";
Koda kopēšana Šā konfigurācijas faila 31. rindā ir šāda rindkopa. Un 35. rindā reklāmas adresē arī piesaistīja manu uzmanību, vēlāk veicot analīzi. Vispirms apskatiet konfigurācijas failu. - </item>
- <!-- 正在为您播放片中广告, 可选择是否要跳过, 类别是1, 持续时间是8秒 -->
- <!-- 限制条件是: 不是正在登录中的会员 -->
- <!-- 每天每人次只最多显示两次这个tips -->
- <item id="ToSelectWhetherToSkipPlayingMiddleAD" level="1" duration="-1" type="1">
- <conditions>
- <fields>
- <field name="member" operator="eq" value="false"/>
- </fields>
- <frequency count="2">
- <restrain name="day"/>
- <restrain name="user"/>
- </frequency>
- </conditions>
- <list>
- <message>
- <![CDATA[
- 正在为您播放片中广告, <a href="event:ASEvent(skipAD)"><b><u>跳过广告</u></b></a>
- ]]>
- </message>
- </list>
- </item>
- <!-- 提示即将跳过8秒后会显示的剧中广告, 类别是1, 持续时间是8秒 -->
- <!-- 必须是登录的会员 -->
- <item id="ToCancelSkipNextMiddleAD" level="1" duration="8" type="1">
- <conditions>
- <fields>
- <field name="member" operator="eq" value="true"/>
- </fields>
- <frequency count="1">
- <restrain name="day"/>
- <restrain name="user"/>
- </frequency>
- </conditions>
- <list>
- <message>
- <![CDATA[
- 即将为您跳过片中广告,<a href="event:ASEvent(cancelSkipAD)"><u>不再跳过</u></a>
- ]]>
- </message>
- </list>
- </item>
- <!--
- 提示版权下线, 如果还有小于7天的时间下线, 每天一个专辑一台电脑提醒一次, 类别是1, 从起始60秒开始显示, 持续时间是10秒
- -->
- <!-- 因为优先级很高, 前面的最高优先级是10, 所以这里把level设为11. -->
- <!-- 这个tip是由signal发起的. Shawn.X -->
- <!--
- 《<span>#keyword#</span>》 将于 <span>#expiredTime#</span> 版权到期.
- -->
- <item id="NoticeThisCopyrightWillExpire" level="11" duration="10" type="1">
- <conditions>
Kopējiet kodu Tajā teikts, ka tā ir reklāma skatīšanās laikā ar 8 s ilgumu, kas nozīmē, ka es to lokalizēju un nolaupīju pārlūkprogrammu, lai noņemtu reklāmas, taču ir skaidrs, ka tā nav reklāma pirms video ielādēšanas. Turpiniet flipping-ļoti garlaicīgs process. Noskaidrojiet, kas izsauc get adPlayerURL(), un paskatieties uz augšu. Zem com\qiyi\player\wonder\plugins\ad es atklāju, ka reklāmas atskaņotājs pastāv spraudņa veidā, tas ir, vēl ir izsaukums, skatoties uz augšu, es atklāju, ka pie com\qiyi\cupid\adplayer\CupidAdPlayer.as CupidAdPlayer ir inicializēts. Un klase ir apslēpta, kas ir aizdomīgi. - public function CupidAdPlayer(param1:CupidParam)
- {
- this.PLAYER_TIMEOUT_LENGTHS = new Array(10000, 15000);
- Log.info("init, version=" + VERSION + ", " + param1.toString());
- this._videoPlayerVersion = param1.videoPlayerVersion;
- this._videoId = param1.videoId;
- this._tvId = param1.tvId;
- this._channelId = param1.channelId;
- this._collectionId = param1.collectionId;
- this._playerId = param1.playerId;
- this._albumId = param1.albumId;
- this._userId = param1.userId;
- this._webEventId = param1.webEventId;
- this._videoEventId = param1.videoEventId;
- this._vipRight = param1.vipRight;
- this._terminal = param1.terminal;
- this._duration = param1.duration;
- this._passportId = param1.passportId;
- this._passportCookie = param1.passportCookie;
- this._passportKey = param1.passportKey;
- this._videoDefinitionId = param1.videoDefinitionId;
- if (this.isQiyiWebEx())
- {
- this._playerUrl = this.IQIYI_WEBEX_AM_URL;
- }
- else if (param1.playerUrl)
- {
- this._playerUrl = param1.playerUrl;
- }
- else
- {
- this._playerUrl = this.IQIYI_WEB_AM_URL;
- }
- if (param1.dispatcher == null)
- {
- this._dispatcher = this;
- }
- else
- {
- this._dispatcher = param1.dispatcher;
- }
- this._volume = param1.volume;
- this._videoIndex = param1.videoIndex;
- this._stageWidth = param1.stageWidth;
- this._stageHeight = param1.stageHeight;
- this._displayContainer = param1.adContainer;
- this._screenStatus = DisplayProperties.isFullScreen(this._displayContainer.stage) ? ("1") : ("0");
- this._baiduMainVideo = param1.baiduMainVideo;
- this._disablePreroll = param1.disablePreroll;
- this._disableSkipAd = param1.disableSkipAd;
- this._enableVideoCore = param1.enableVideoCore;
- this._isUGC = param1.isUGC;
- this._videoPlayerUrl = this._displayContainer.loaderInfo ? (this._displayContainer.loaderInfo.loaderURL) : ("");
- this._env = this.generateEnv();
- this.addAdPlayerEventListeners();
- return;
- }// end function
Nokopējiet kodu CupidAdPlayer(param1:CupidParam) <- apskatiet tās izsaukšanas parametrus, tas ir, augšējais slānis joprojām izsauc, kurš parametrs viens, vērtība ir ļoti pamanāma, vipRight Spriediet, vai tas ir vip, un vip nav reklāmas, tas ir, ja es saņemu informāciju par lietotāju sesijā atskaņotājā, es to izmantošu, lai iegūtu informāciju par lietotāju vietnē, tas ir, ja es saņemu informāciju par lietotāju sesijā atskaņotājā, es to izmantošu, lai iegūtu informāciju par lietotāju vietnē. Tas ir, ja es veicu izmaiņas lietotāja informācijā sesijā tīmekļa vietnē pēc tam, kad tās atskaņotājs saņem lietotāja informāciju tīmekļa vietnē, un veicu izmaiņas vietā, kurā tiek spriests, vai tas ir vip vai nav, kas izraisīs zemākā slāņa izsaukumu, tas kļūdaini domās, ka tas ir vip (tikai reklāmas atskaņotājs domā, ka jūs esat vip, un citas vietas tas neietekmēs). Tāpēc turpināsim skatīties uz augšu. Meklējot to, mēs atgriezāmies reklāmas spraudņa direktorijā. com\qiyi\player\wonder\plugins\ad\view ADView.as, galvenē vispirms ir - private var _adPlayer:CupidAdPlayer;
Kopēt kodu Definēts CupidAdPlayer gadījums ar nosaukumu _adPlayer vienreiz, ritinājām uz leju, lai uzzinātu, kas izmanto _adPlayer. pārsteidzoši atradām reklāmas atskaņotāja izveides funkciju. - public function createAdPlayer(param1:CupidParam) : void
- {
- if (this._adPlayer)
- {
- this.unloadAdPlayer();
- }
- this._log.info("loading adplayer...");
- this._adPlayer = new CupidAdPlayer(param1);
- this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_LOADING_SUCCESS, this.onAdLoadSuccess);
- this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_LOADING_FAILURE, this.onAdLoadFailed);
- this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_START, this.onAdStartPlay);
- this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_PAUSE, this.onAdAskVideoPause);
- this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_RESUME, this.onAdAskVideoResume);
- this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_START_LOADING, this.onAdAskVideoStartLoad);
- this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_START, this.onAdAskVideoStartPlay);
- this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_END, this.onAdAskVideoEnd);
- this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_BLOCK, this.onAdBlock);
- this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_DISPLAY_AD_TIP, this.onAskVideoShowBonusTips);
- this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_VIDEO, this.onAdFlvADAction);
- this._adPlayer.load();
- return;
- }// end function
Kopējot kodu Redzot, ka joprojām var nodot parametrus, tas nozīmē, ka tā joprojām tiek izsaukta. Es beidzot atradu avotu ADViewMediator.as zem com\qiyi\player\wonder\plugins\ad\view. Funkcijas galīgais izsaukums izskatās šādi - private function createADPlayer() : void
- {
- sendNotification(BodyDef.NOTIFIC_PLAYER_STOP_LOAD);
- ProcessesTimeRecord.STime_adInit = getTimer();
- var _loc_1:* = facade.retrieveProxy(PlayerProxy.NAME) as PlayerProxy;
- var _loc_2:* = facade.retrieveProxy(UserProxy.NAME) as UserProxy;
- var _loc_3:* = new CupidParam();
- _loc_3.playerUrl = FlashVarConfig.adPlayerURL;
- _loc_3.videoId = _loc_1.curActor.loadMovieParams.vid;
- _loc_3.tvId = _loc_1.curActor.loadMovieParams.tvid;
- _loc_3.channelId = _loc_1.curActor.movieModel.channelID;
- _loc_3.playerId = FlashVarConfig.cupId;
- _loc_3.albumId = _loc_1.curActor.movieModel.albumId;
- _loc_3.dispatcher = null;
- _loc_3.adContainer = this._ADView;
- _loc_3.stageWidth = GlobalStage.stage.stageWidth;
- _loc_3.stageHeight = GlobalStage.stage.stageHeight;
- _loc_3.userId = _loc_1.curActor.uuid;
- _loc_3.webEventId = UUIDManager.instance.getWebEventID();
- _loc_3.videoEventId = UUIDManager.instance.getVideoEventID();
- _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
- _loc_3.terminal = "iqiyiw";
- _loc_3.duration = _loc_1.curActor.movieModel.duration / 1000;
- _loc_3.passportId = _loc_2.passportID;
- _loc_3.passportCookie = _loc_2.P00001;
- _loc_3.passportKey = KeyUtils.getPassportKey(0);
- _loc_3.enableVideoCore = true;
- _loc_3.disableSkipAd = _loc_1.curActor.movieModel.forceAD;
- _loc_3.volume = Settings.instance.mute ? (0) : (Settings.instance.volumn);
- _loc_3.isUGC = UGCUtils.isUGC(_loc_1.curActor.movieModel.tvid);
- _loc_3.collectionId = FlashVarConfig.collectionID;
- _loc_3.videoDefinitionId = _loc_1.curActor.movieModel.curDefinitionInfo.type.id;
- _loc_3.videoPlayerVersion = WonderVersion.VERSION_WONDER;
- this._ADView.createAdPlayer(_loc_3);
- return;
- }// end function
Kopēt kodu Galvenais punkts ir - _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
Kopēt kodu Šajā rindā, lai noteiktu, vai lietotājs ir vip vai nav, vispirms saskaņā ar vietējo mainīgo loc_2, lai noteiktu lietotāja līmeni, ja ar vip līmeņa definīciju, tas atgriež 1. Mēs dodam viņam nelielu modifikāciju, tas kļūst par pseido-vip. - _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("1");
Kopējiet kodu Šādā veidā Hex modificēt līniju, testa reklāmas veiksmīgi noņemts (izmantojot Chrome spraudņa funkciju, modificēt atskaņotāja adresi vietējiem, atskaņot tos pašus parametrus, lai nodotu). Turklāt AdBlockedBlackScreen.as zem com\qiyi\cupid\adplayer\model, ir vietējā noteikšanas funkcija, lai aizliegtu Chrome spraudņa bloķēšanu. - public static function isInBlacklist(param1:String) : Boolean
- {
- if (!param1)
- {
- return false;
- }
- if (StringUtils.beginsWith(param1, "chrome-extension://"))
- {
- return true;
- }
- var _loc_2:* = new URLParser(param1);
- var _loc_3:* = _loc_2.getHost();
- return HOST_BLACKLIST.indexOf(_loc_3) != -1;
- }// end function
Kopējiet kodu Vienkārši mainiet otrās if atgriešanu uz false.
|