それは本当にプロジェクトの規模に依存します。それが完全に自動化されていない、単なるカジュアルなものである場合は、Firefox アドオンを強くお勧めします。
私は同様のプロジェクトの真っ最中です。Javascript を使用して生成されたページの DOM を分析する必要があります。サーバー側のブラウザーを作成するのは難しすぎたので、Adobe AIR、Firefox アドオン、ユーザースクリプトなどの他のテクノロジーに目を向けました。
自動化が必要ない場合は、Fx アドオンが最適です。スクリプトはページを分析し、結果を表示し、不確実な部分を修正するように依頼し、最終的にデータをバックエンドに送信します。すべての DOM にアクセスできるので、JS/CSS/HTML/その他のパーサーを作成する必要はありません (それは大変な仕事です!)。
もう 1 つの方法は、Adobe AIR です。ここでは、アプリケーションをより詳細に制御できます。バックグラウンドでアプリケーションを起動して、操作なしですべての解析と分析を行うことができます。欠点は、ページのすべての DOM にアクセスできないことです。これを通過する唯一の方法は、単純なプロキシを設定して、ターゲット URL を取得し、Javascript を追加することです (信頼できるサンドボックス ブリッジと信頼できないサンドボックス ブリッジを作成するため)... 汚いハックですが、機能します。
編集:
Adobe AIR では、外国の Web サイトの DOM にアクセスする方法が 2 つあります。
- Ajax 経由でロードし、HTMLLoader オブジェクトを作成し、応答をフィードします (
loadString
IIRC メソッド)。
- iframe を作成し、信頼されていないサンドボックスにサイトを読み込みます。
理由は覚えていませんが、最初の方法が失敗したため、別の方法を使用する必要がありました (セキュリティ上の理由があり、回避できなかったと思います)。そして、サイトの DOM にアクセスするために、サンドボックスを作成する必要がありました。ここでは、サンドボックス ブリッジの扱いについて少し説明します。childSandboxBridge
アイデアは、いくつかのメソッドを作成して親 (この場合は AIR アプリケーション) に公開する単純な JS を追加するプロキシを作成することです。スクリプトの内容は次のようなものです。
window.childSandboxBridge = {
// ... some methods returning data
}
(注意してください — サンドボックス ブリッジを介して渡すことができるものには制限があります — 確かに複雑なオブジェクトはありません! プリミティブ型のみを使用してください)
そのため、プロキシは基本的に、HTML または XHTML を返すすべてのリクエストを改ざんしました。他のすべてはそのまま通過しました。私は Apache + PHP を使用してこれを行いましたが、いくつかのプラグイン/カスタム モジュールを備えた実際のプロキシで確実に行うことができます。このようにして、任意のサイトの DOM にアクセスできました。
編集終了。
私が知っている 3 番目の方法は、最も難しい方法です — browsershotsに似た環境をセットアップします。次に、自動化されたFirefoxを使用しています。サーバーに Mac OS X がある場合は、ActionScript を使って自動化を行うことができます。
要約すると、次のようになります。
- PHP/サーバー側スクリプト — 独自のブラウザー、JS エンジン、CSS パーサーなどを実装する必要があります。代わりに完全に制御され、自動化されています。
- Firefox アドオン — DOM およびすべてのものにアクセスできます。ユーザーがそれを操作する必要があります (または、少なくともある種の自動再ロードを伴う開いている Firefox セッション)。ユーザーがプロセス全体をガイドするための優れたインターフェイス。
- Adobe AIR — 動作するデスクトップ コンピューターが必要です。Fx アドオンを作成するよりも困難ですが、より強力です。
- 自動化されたブラウザ — webdevelopment よりもデスクトップ プログラミングの問題です。グラフィカル環境なしで Linux 端末にセットアップできます。マスターハッキングスキルが必要です。:)