2012年4月8日日曜日

Twitter API が行うHTTP通信をモニタリングする

Twitter API の REST API や Search API が行うHTTP通信を確認したい場合は、ブラウザを利用すれば、リクエストのURLとレスポンス(json,xml,rss,atom)が確認できます。

ただし開発言語(PHP,Ruby,Java等)のTwitter API ライブラリを利用した通信の場合は、HTTP通信がラッピングされており通信の中を確認することができません。


WebサービスAPIの通信をモニターするツールを使う方法について

・Eclipse IDE の TCP/IPモニター
※Eclipse WTP(Web Tools Platform) に含まれている
これはプロキシサーバとして動作します、インターネット接続がTCP/IPモニターを経由する設定にできればモニターできます。Twitter API ライブラリの通信がプロキシを経由しない限り通信をモニターできません。
問題は、デフォルト・検索・メディアのendpoint となるURL(https://api.twitter.com など)ごとに設定が必要であるのと、設定毎にポート番号をユニークにする必要があること、HTTPS の設定が選べないこと。

・Fiddler2
http://www.fiddler2.com/fiddler2/
これも同様にプロキシサーバとして動作します。Fiddler2 が起動すると自動的に Windows インターネットオプションのプロキシ設定を変更するので、ブラウザでのインターネット接続はモニターします。
Twitter API ライブラリの通信がプロキシ設定を利用しないとモニターできません。

Ruby の Twitter API でプロキシを経由するには、Twitter.configure にプロキシ情報を設定します。
(例)
  Twitter.configure do |config|
    config.proxy = 'http://localhost:8888'
  end


Fiddler2 では、ポート番号は 8888 を使っています。HTTPS の場合は暗号化されておりますが、decodeする機能もありました。

・Microsoft ネットワーク モニター 3
http://support.microsoft.com/kb/933741/ja
これはネットワークの様々なプロトコルをモニターできるので、Twitter API ライブラリの通信もモニターできます。
パケットを監視するツールなので、HTTPリクエスト・レスポンスの中身はこのままでは分からない。HTTP の場合は Twitter API ライブラリが作成したHTTPリクエストのURLだけはこれで分かるので、URLのレスポンスをブラウザで確認すれば目的は満たせるはず。(面倒ですね) HTTPS の場合は暗号化されているのでURLも解読できません。

2012年4月2日月曜日

Railsで<head>タグ内の要素を変更する

Ruby on Railsで作成するHTML View(*.html.erbファイル)には、デフォルトでは<body>タグ内のコードのみを実装します。もし<head>タグで不要なscriptを削除したい場合などは、テンプレートファイルを変更します。
 デフォルトのテンプレートファイルの場所
 ./app/views/layouts/application.html.erb


cssやscriptを追加したい場合は、Asset Tag Helpers を使います。
http://guides.rubyonrails.org/layouts_and_rendering.html#asset-tag-helpers
 (例)cssとscriptを利用する場合
 <%= stylesheet_link_tag    "application" %>
 <%= javascript_include_tag "application" %>


コントローラ毎に異なったテンプレートファイルを利用したい場合は、コントローラに対応するビューのディレクトリ名と同じ名前でテンプレートファイルを作成します
 (例)Sample1コントローラの場合
 ./app/views/layouts/sample1.html.erb(テンプレートファイル)
 ./app/views/sample1/test1.html.erb(ビュー)