at_yasu's blog

ロード的なことを

パケットを盗聴してわかったいくつかの事。

ニコニコ動画をブラウザで見た時のパケットを盗聴して、いくつか気になったもの、欲しいと思ってたものが出てきたのでここにメモ。

出てきた物は以下の物。

詳細のパケットは長いので下記。ただ、リクエストとレスポンスのコンテンツは微妙に違います。困った事に、gzip圧縮されてるからスニフでは読めないのよね、レスポンスのコンテンツが。だから、だいたいこんな感じと思って下さい。後、Cookieとかは隠してますので。

ichiba

よくわからない。

GET /embed/bb/ HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Cache-Control: max-age=0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: ichiba.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 05:59:33 GMT
Server: Apache
Content-Location: index.xml.gz
Vary: negotiate,accept-encoding
TCN: choice
Last-Modified: Sun, 08 Jun 2008 05:55:01 GMT
ETag: "25f"
Accept-Ranges: bytes
Content-Length: 607
Connection: close
Content-Type: application/xml
Content-Encoding: gzip

<items><item><log_id>174961</log_id><ItemId>dw705505</ItemId><Title>デラックスファイターのテーマ(秘密結社 鷹の爪)</Title><nickname>とら幸</nickname><video_id>sm1172924</video_id><timestamp>2008-06-08 14:17:14</timestamp></item><item><log_id>174962</log_id><ItemId>dw1510431</ItemId><Title>魔理沙は大変なものを盗んでいきました</Title><nickname>名無し</nickname><video_id>sm494720</video_id><timestamp>2008-06-08 14:17:56</timestamp></item><item><log_id>174963</log_id><ItemId>dw1449990</ItemId><Title>ウッーウッーウマウマ(゜∀゜)(Ryu* Remix)</Title><nickname>こぞん</nickname><video_id>nm3392808</video_id><timestamp>2008-06-08 14:19:26</timestamp></item></items>


こっちは多分、アマゾンのコンテンツ。長ったらしいので、下半分ははぶいてます。てかHTMLベタ書きかよ・・・

GET /embed/?action=showMain&v=sm3410907&rev=20071116&callback=Ajax.RequestP.requestors[0].handleResults&&dummy=1212904268463 HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Referer: http://www.nicovideo.jp/watch/sm3410907
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: ichiba3.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 05:51:10 GMT
Server: Apache
X-Powered-By: PHP/5.2.5
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

Ajax.RequestP.requestors[0].handleResults("<div id=...

ニコニュース

そのまま。レスポンスはXMLデータになっているのがわかります。uidはユーザID?で、これは動画に関係なくデータの内容はおなじみたい。

GET /api/getmarquee?mqver=0&uid=965242 HTTP/1.1
Referer: http://www.nicovideo.jp/watch/sm3410907
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: www.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 05:51:14 GMT
Server: Apache
Content-Location: getmarquee.php
Vary: negotiate,Accept-Encoding
TCN: choice
X-Powered-By: PHP/5.2.5
Content-Encoding: gzip
Content-Length: 591
Connection: close
Content-Type: text/xml; charset=UTF-8

<marquee_data status="ok" ver="1212902402"> 
	<marquee_219> 
		<type>text</type> 
		<size>14</size> 
		<fcol>0x000000</fcol> 
		<bcol>http://www.nicovideo.jp/img/marquee/niwanews.gif</bcol> 
		<interval>60</interval> 
		<size2>14</size2> 
		<fcol2>0x000000</fcol2> 
		<f>4</f> 
		<lid>dbb07dc344ffd059684b3b4a38e3382015950e98</lid> 
		<text>注目CD・DVD発売情報</text> 
		<link>http://niwango.jp/pc/niwanews/search.php?id=20591</link> 
		<text2>ニワニュース 6月8日</text2> 
	</marquee_219>
....
</marquee_data>

configurengclient -- 多分、非表示コメント

  • 基本的に、/api/configurengclient で操作。modeにgetが付けば取得。他にmodeがあるけど黙っとく。てか、DBいじくる操作はPOSTだろ。URL見ただけで何をしているのか、特に削除追加をしているのがわかるのはちょっとスマートじゃないぞ。。。(ブツブツ・・・)
GET /api/configurengclient?mode=get HTTP/1.1
Referer: http://www.nicovideo.jp/watch/sm3410907
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: www.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 8 Jun 2008 06:20:49 GMT
Server: Nico Nico Douga/1.0
Content-type: text/xml
Content-length: 232
Vary: Accept-Encoding
Cache-Control: max-age=0
Expires: Sun, 8 Jun 2008 06:20:49 GMT
Content-Encoding: identity
Connection: close

<response_ngclient status="ok"> 
	<revision>36</revision> 
	<count>17</count> 
	<ngclient> 
		<type>id</type> 
		<source>8WGniRW45He9M-n0ZH_TtuwKiPs</source> 
		<register_time>1211099877</register_time> 
	</ngclient> 
	<ngclient> 
		<type>word</type> 
		<source>あああ</source> 
		<register_time>1212905861</register_time> 
	</ngclient> 
	<ngclient> 
		<type>command</type> 
		<source>red</source> 
		<register_time>1212905871</register_time> 
	</ngclient> 
</response_ngclient> 
 

crossdomain

いたる所で見る。ランキングでも見るし。なんだろうこれは・・・ ニコニコのFlashPlayerが問い合せを許可するドメイン一覧。

GET /crossdomain.xml HTTP/1.1
Referer: http://www.nicovideo.jp/watch/sm3410907
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: msg.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 8 Jun 2008 05:51:11 GMT
Server: Nico Nico Douga/1.0
Content-type: text/xml
Content-length: 213
Connection: close

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
	<allow-access-from domain="*.nicovideo.jp" />
</cross-domain-policy>

おすすめ動画

スッキリと取って来れます。≤!-- a.yasui:... --≥ はあたしのコメントです。

GET /api/getrelation?page=0&sort=p&order=d&video=1211556779 HTTP/1.1 <!-- a.yasui:pageは数値(0と1は区別無し) videoはthread_id -->
Referer: http://www.nicovideo.jp/watch/sm3410907
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: *** __utmb=8292653
Connection: keep-alive
Host: www.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 05:52:17 GMT
Server: Apache
Content-Location: getrelation.php
Vary: negotiate,Accept-Encoding
TCN: choice
X-Powered-By: PHP/5.2.5
x-niconico-id: 965242
x-niconico-authflag: 1
Content-Encoding: gzip
Content-Length: 1411
Connection: close
Content-Type: text/xml; charset=utf-8

<related_video status="ok"> 
	<total_count>300</total_count> <!-- a.yasui: おすすめ関連動画の数 -->
	<page_count>20</page_count>    <!-- a.yasui: ページ数 -->
	<data_count>15</data_count>    <!-- a.yasui: 1ページあたりのデータ数 -->
	<video> 
		<url>http://www.nicovideo.jp/watch/sm3444333</url> 
		<thumbnail>http://tn-skr2.smilevideo.jp/smile?i=3444333</thumbnail> 
		<title>【Full】行列のできるえーりん診療所 動画Ver〜暫定</title> 
		<view>187943</view> 
		<comment>3987</comment> 
		<mylist>7359</mylist> 
		<length>211</length> 
		<time>1211728165</time> 
	</video> 
</related_video> 


追記:お勧め動画が無い場合+動画が無い場合のレスポンス

こちらは、お勧め動画が無い場合の挙動

GET /api/getrelation?page=1&sort=p&order=d&video=1212900898 HTTP/1.1
Referer: http://www.nicovideo.jp/watch/sm3594401
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: www.nicovideo.jp

11..HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 16:56:21 GMT
Server: Apache
Content-Location: getrelation.php
Vary: negotiate,Accept-Encoding
TCN: choice
X-Powered-By: PHP/5.2.5
x-niconico-id: 965242
x-niconico-authflag: 1
Content-Encoding: gzip
Content-Length: 127
Connection: close
Content-Type: text/xml; charset=utf-8

<related_video status="ok"> 
	<total_count>0</total_count> 
	<page_count>0</page_count> 
	<data_count>0</data_count> 
</related_video> 


こちらは動画が無い場合の挙動。

GET /api/getrelation?page=1&sort=p&order=d&video=12129008 HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20
Cache-Control: max-age=0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie: ***
Connection: keep-alive
Host: www.nicovideo.jp

HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 16:59:03 GMT
Server: Apache
Content-Location: getrelation.php
Vary: negotiate,Accept-Encoding
TCN: choice
X-Powered-By: PHP/5.2.5
x-niconico-id: 965242
x-niconico-authflag: 1
Content-Encoding: gzip
Content-Length: 180
Connection: close
Content-Type: text/xml; charset=utf-8

<related_video status="fail"> 
	<error> 
		<code>PARAMERROR</code> 
		<description>パラメータが不正です</description> 
	</error> 
</related_video>