謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

[その他] Anitubeの広告配信元

怪しい記事を見かけたので、こちらの環境で解析したAnitubeの広告配信経路をここに書いておきます。なおこれは一例であって、環境や機会により広告関連スクリプトの流れも変わるはずです。


とりあえず、以下のページのソースコードを開きます。
http://www.anitube.se/video/#####/XYZ

すると、ページのヘッダ、サイド、フッタ、動画の下の広告表示部分に以下のようなHTMLコードが埋めこまれています。これが、広告表示スクリプトを読み込むための起点となります。ここでは蘭Adglare社のスクリプトを読み込んでいます。

		<!-- Advert Start -->
			<div id="pageAdvert" align="center">
			<script async src='//anigrupo.engine.adglare.net/?#########'></script><span id=#########></span>
			</div>
		<!-- Advert End -->

その後、以下のURLのJavascriptが読み込まれ実行されます。(なお、URLの後ろの#########はzIDとのこと。)

//anigrupo.engine.adglare.net/?#########

スクリプトの内容は大幅に省略しますが、以下のような感じで、別のJavascriptを読み込むためのものです。

(前略)
AdGlare.loadJS('//anigrupo.engine.adglare.net/?#########&t=1&tt=##########-########');

loadJS関数でURLが色々加工された後、最終的に以下のURLにあるJavascriptが読み込まれ実行されます。

http://anigrupo.engine.adglare.net/?#########&t=1&tt=##########-########&winID=#####&screen=####x####&framed=0&vb=1&crIDsLoaded=&referer=http%3A%2F%2Fwww.anitube.se%2Fvideo%2F#####%2FXYZ

上記URLのJavascriptの内容はこんな感じ。

(前略)
var AdGlareSettings_###### = { zID: #########, width: ###, height: ###, impURL: "//anigrupo.engine.adglare.net/imp?data=(略)", isThirdParty: true, autoClickTracking: true, isSync: false, alwaysOnScreen: false, alwaysOnScreenData: '', animationType: 'none', allowClose: true, closeButtonURL: '//anigrupo.cdn.adglare.net/inventory/close_button.png', isBase64Encoded: true, zoneHTML: "(BASE64っぽい文字列)", (略)}

(略)document.write('<span id=zone'+this.settings.zID+'>'+this.settings.zoneHTML+'</span>'(略)

BASE64っぽい文字列をデコードすると、HTMLの断片が現れます。

<!--  ad tags Size: 728x90 ZoneId:#######-->
<script type="text/javascript" src="http://js.sprout-ad.com/t/###/###/x#######.js"></script>

そして、そこに書かれたスクリプトが読み込まれます。このURL (*.sprout-ad.com) は日本のトラストリッジ社のものですね。

内容は下のような感じ。

(略)
var di={(略),vd:"sprout-ad.genieesspv.jp",(略)};
(略)
u+="//"+di.vd+"/yie/ld/jsk";
u+=(略)

そして、ここで以下のURLが生成されます。このURL (*.genieesspv.jp) は日本のジーニー社のものですね。

http://sprout-ad.genieesspv.jp/yie/ld/jsk?zoneid=#######&cb=###########&charset=UTF-8&loc=http%3A%2F%2Fwww.anitube.se%2Fvideo%2F#####%2FXYZ&referer=http%3A%2F%2Fwww.anitube.se%2Fvideo%2F#####%2FXYZ&sw=####&sh=####&topframe=0

生成されたURLからスクリプトが更に読み込まれます。内容は下のような感じ。

gen_tag = "%3cscript%20type%3d%27text%2fjavascript%27(略)%2fscript%3e";document.write(decodeURIComponent(gen_tag));

gen_tagのエスケープを解いてやると、ついに広告本体のHTMLが出てきます (謎なiframeも付属してましたが解説では省略)。今回は最終的な広告のURL (*.gsspat.jp) がジーニー社のものでした。

<script type='text/javascript'>()<a href=\"http:\/\/rt.gsspat.jp\/c?c=(略)&amp;y=1&amp;p=XXXXXXXXXXX&amp;do=(略)&amp;vs=(略)\" style=\"border:none;margin:0;padding:0;\" target=\"_top\" >\\n');(略)document.write(\"<img src=\\\"\" + scheme + \"\/\/rt.gsspat.jp\/b?p=XXXXXXXXXXX&amp;y=1&amp;v=(略)\\\" height='1' width='1' style='display: none;'>\");(略)</script>

ということで、今回調べた時は蘭Adglare社→日トラストリッジ社→日ジーニー社という流れでしたが、別の会社の広告が出てくることも確認していますし、経路はまだまだあるはずです。
それと、これだけでは契約の流れがどうなってるのかまでは分かりませんね。更に中間業者が挟まっている気がします。

# …にしても凄く長いタライ回しだなぁ…。