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月3日火曜日

Ruby の HTML & XMLパーサ一覧

Rubyで利用できる HTML and XMLパーサ、Webスクレイピング ツールを、一覧にまとめます

・Hpricot (HTML Parser)
他のパーサのベースにもなっている、高速な HTML Parser
http://hpricot.com/
http://rubygems.org/gems/hpricot


・Nokogiri 鋸 (HTML and XML Parser)
Hpricotよりも早くて優れた HTML and XML Parser であることを謳ってます
http://nokogiri.org/
http://rubygems.org/gems/nokogiri


・Mechanize (Web Scraping)
Nokogiriをベースとしている、Webスクレイピング ライブラリ
http://mechanize.rubyforge.org/
http://rubygems.org/gems/mechanize


・REXML (XML Parser)
Rubyの標準 XMLパーサ、XPathをサポートしている
http://www.germane-software.com/software/rexml/


・LibXML Ruby (XML Parser)
Rubyから GNOME Libxml2 XML toolkitを利用する為のバインディング(binding)ツール
http://rubygems.org/gems/libxml-ruby
http://libxml.rubyforge.org/rdoc/
http://xmlsoft.org/


・scrAPI (HTML Scraping)
Web スクレイピング ツール
2010年に最新版が出ていますが、開発頻度はあまり多くない
http://rubygems.org/gems/scrapi


・Feedalizer (RSS feed)
Hpricotをベースにしたライブラリで、WebページをRSSフィードに変換します
2009年に最新版が出ています
http://vemod.net/feedalizer
http://rubygems.org/gems/feedalizer


・scRUBYt! (Web-scraping DSL)
※DSLとは、Domain Specific Languages、特定の領域(ドメイン)に存在する問題の解決に特化してデザインされたコンピュータ言語
HPricot と、WWW::Mechanize(Mechanizeの旧版)をベースにした、Webスクレイピング ツール
2008年から開発が進んでいないようです。
http://rubygems.org/gems/scrubyt
http://scrubyt.rubyforge.org/files/README.html

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(ビュー)