2009年1月26日

ITmedia の RSS を他のリーダで読む

ITmedia のアプリでは、iPod 向けだけに feed されている 4 つのニュースを読めるんですが、その4つ「しか」読めないという欠点があります。その基となっている RSS Probe というアプリでは、任意の RSS を登録できるので、ITmedia でも機能を制限しなければ登録ができるはずですが、あくまで ITmedia 専用なんですね。

それじゃぁ逆に、その4つのニュースを他の RSS リーダで読めるようにできれば、アプリを一本化できるだろう。ということでトライしてみました。

まずはどんなURLで feed されているかを調べます。ITmedia アプリ上では URL は確認できないので、パケットをキャプチャして調べる必要があります。無線LANルータと直接通信しちゃってる環境では、パケットをキャプチャできないので、ここで紹介したように、PC経由での環境を使用します。

パケットキャプチャに使用するPCのソフトは etherealwireshark ですね。今は開発が後者に移っているので、そちらの方がいいでしょう。この辺のソフトの環境設定や使い方については適当にググって頂くとして、さっそくキャプチャします。

そうすると、以下の URL にアクセスしていることが分かります。
名前から察するに、それぞれ、Apple、デジタルライフ、IT、MacWIRE に相当してるかと思います。
  • http://ipn.itmedia.co.jp/iV1/apple.xml
  • http://ipn.itmedia.co.jp/iV1/digitallife.xml
  • http://ipn.itmedia.co.jp/iV1/it.xml
  • http://ipn.itmedia.co.jp/iV1/column.xml
URL が分かってしまえば後はこっちのもんなんで、とりあえずブラウザでアクセスしてみます。すると...
なんと、http://www.itmedia.co.jp/ に転送されちゃうんです。
おっとっと、これはこれは ITmedia さん、何やらガードかけてますね。確かに他の RSS リーダで読まれちゃったら、このアプリの存在意義がなくなっちゃいますからね。

でも、ここで引き下がっちゃいけません。同じ URL を ITmedia でアクセスした場合と、RSS Probe でアクセスした場合で、比べてみます。

こちらが ITmedia (Cookie の行だけ一応内容を削除しました)

GET http://ipn.itmedia.co.jp/iV1/apple.xml HTTP/1.1
User-Agent: ITmedia/1.0.1 CFNetwork/342.1 Darwin/9.4.1
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Cookie:
Pragma: no-cache
Connection: keep-alive
Proxy-Connection: keep-alive
Host: ipn.itmedia.co.jp

こちらが RSS Probe

GET http://ipn.itmedia.co.jp/iV1/apple.xml HTTP/1.1
User-Agent: RSS%20Probe/1.0.6 CFNetwork/342.1 Darwin/9.4.1
Accept: */*
Accept-Language: ja-jp
Accept-Encoding: gzip, deflate
Pragma: no-cache
Connection: keep-alive
Proxy-Connection: keep-alive
Host: ipn.itmedia.co.jp

比べると、違いは User-Agent と Cookie の有無だけですね。試しに User-Agent を変更できるブラウザで ITmedia の User-Agent でアクセスしてみると、見事アクセス成功しました。

というわけで、一応からくりは分かりました。
でも、対策方法は難しいですね。User-Agent を変更できる RSS リーダが登場するのを待つしかなさそうです。

0 件のコメント:

コメントを投稿