PURSE — Practical Uniform Resource Scraping Environment
PURSE™は、オフィス・アウターガイが独自に開発した、PHPによるWebスクレイピング・エンジンです。
マネーサウンド、OFXProxy、および証券OFXは、PURSEを活用したサービスです。
概要
PURSEは、対象のウェブサービスに対して、あたかもユーザー自身がブラウザーを操作しているように振る舞います。この透過的な動作を実現するため、データをHTTPプロトコルレベルで解析し、トランザクションを自律的に制御しています。
これにより、対象のウェブサービスに仕様変更が生じても、柔軟に対応できるように設計されています。
HTTPプロトコル処理
ウェブサービスとの通信を制御します。GET/POSTメソッドやBASIC認証、Cookieの制御に加えて、RFC2616で定義されているChunkedエンコーディングでの受信に対応しています。
なお、SSLプロトコル処理については、PHPの標準実装を利用しています。
入力データの解析
ウェブサービスより取得したデータは、HTTP応答ヘッダー部とHTTP応答ボディー部に分離し、それぞれ解析します。
HTTP応答ヘッダー部
- 応答コードより、ウェブサービスの状態を確認します。
- Location:ヘッダより、リダイレクトの有無を確認します。
- Set-Cookie:ヘッダより、トランザクションの制御に用いるCookieを抽出します。
HTTP応答ボディー部
- <meta>タグやJavaScriptによるリダイレクトの有無を確認します。
- URIに付与されたクエリーやHTMLフォームの構造を解析し、後続のトランザクションを生成します。
- 文字コードを解析し、変換します。
- 必要なデータのみを抽出し、整形・加工します。
セキュリティー
対象ウェブサービスがSSL/TLS通信に対応している場合は、対象ウェブサービスとPURSE間は通信が暗号化されます。
また、万一の偶発的なセキュリティー侵害を防ぐため、予め指定したドメイン以外にはアクセスしないよう、すべてのトランザクションを監視しています。この制限は、対象ウェブサービスが不正なリダイレクトを要求した場合にも適用され、安全性の向上に繋がっています。
採用例
PURSEは、以下のサービスで活用されています。
ソーシャルボタン