Hatena::ブログ(Diary)

konisimple log RSSフィード

はてなブログに移転しました!

2010年04月10日

産経新聞のiPhoneアプリのパケット解析してみた

産経新聞(iPhone版)というのがあります。

これは無料で産経新聞が紙の紙面の構成のまま読めるというとても便利なアプリです。

今回、暇だったので、WireSharkというバケット解析ソフトでiPhoneウェブとの通信を盗聴?してみました。

産経新聞iPhoneアプリの仕組み

最新の新聞データを得る(current_edition.xml)

バケット解析の結果、産経新聞アプリを起動するとまず、決まったURLにアクセスする。ここには最新の紙面の情報があるxmlURLが書いてある。

http://www.sankei.co.jp/netview/iphone/current_edition.xml

<CurrentEdition Root="2010_04_10_i" XMLFileName="2010_04_10_i.xml"/>
その日の新聞の目次(日付/日付_i.xml)

上のxmlを見て、この日の新聞の何面にどの情報が書いてあるかとかの情報を得る。なんかxmlだと新聞社のウェブサイトよりとてもセマンティックって感じ。

http://www.sankei.co.jp/netview/iphone/2010_04_10_i/2010_04_10_i.xml

<Edition Newspaper="iphone" Name="2010_04_10_i" Date="2010/04/10" Version="1.01" FrontPageURL="" PageWidth="38" PageHeight="51.5">
 <Sections>
  <Section Name="総合" Index="3"/>
  <Section Name="国際" Index="4"/>
    ...
  </Sections>
 <Pages>
  <Page ID="12984" XMLLocation="pages_xml/page12984_netviews1958.xml" PageNumber="1" ThumbnailURL="thumbnails/page1.jpg" Section="総合"/>
 </Pages>
</Edition>
ページ情報

次は上のxmlからページの画像の格納されているURLを示すxmlにアクセスする。

http://www.sankei.co.jp/netview/iphone/2010_04_10_i/pages_xml/page12984_netviews1958.xml

<Pages ID="12984" PageTitle="" PageNumber="1">
 <LevelImages Level1Partitions="1" Level2Partitions="2" Level3Partitions="4" Directory="pages_images/page12984_netviews1958/" FileType="jpg" BasePixelWidth="372" BasePixelHeight="504"/>
 <Articles/>
 <Regions/>
 <RichMedias/>
 <Titles/>
 <Links/>
</Pages>
新聞紙面の画像データ

実はこれでもうすべての画像データにアクセスできるようになった。

まず、画像データの基本のURL

http://www.sankei.co.jp/netview/iphone/2010_04_10_i/pages_images/page12984_netviews1958/lv1_0_0.jpg

である。

あとは末尾のファイル名を変えればよい。

下にファイル名と内容を一覧にしてみた。

ファイル名内容
lv1_0_0.jpgページ全体
lv2_0_0.jpgズームした左上
lv2_0_1.jpgズームした左下
lv2_1_0.jpgズームした右上
lv2_1_1.jpgズームした右下
lv3_0_0.jpgもっとズームした左上
lv3_0_1.jpgもっとズームした中央
lv3_0_2.jpgもっとズームした右上
......
lv3_3_3.jpgもっとズームした右下

なるほど。ズームのレベルに応じて3つのファイルに分けてるんですね。

まとめ

というわけで、これを利用すれば別にiPhoneアプリ使わなくても産経新聞がPC上で読めるアプリも簡単に作れそうですね。

ウェブアプリとかも作れそうですね。

ここらへんもっとちゃんとガードされてるのかと思いましたが、意外に寛容でした。

まぁどう考えても著作権的にアウトなので、そんなことする人はいないと思ってるんでしょうね。

パスワードはないにしてもアプリによる正規のアクセスかどうか認証する*1ぐらいはすればいいのにという気はします。

まぁそういうのが一切ないので不正アクセス防止法とかにはひっかからないはず。

パケット解析のおもしろさがわかる(?)、産経新聞iPhoneアプリはどういう仕組み?っていう話でした。

追記(10/4/11 05:12)

結局書いちゃった。

これでいいのか!産経さん!紙面データダダ漏れですよ!(PHPで紙面を得てみる) - konisimple log

*1:チャレンジレスポンス認証してセッション処理するとか