バックグラウンド:
私は、サード パーティのサイトに「サービス注文」を送信し、それらのリクエストの進行状況を監視する目的で、そのサイトを「自動化」する権限を持っています。
通常の「スクレイピング」アプローチ (Perl の 、 などを使用) を試みWWW::Mechanize
ましたが、さまざまな状況下でサイト内の JavaScript が何をするかを予測する際に多くHTML::Query
の問題に遭遇しました。サード パーティのサイトを運営している製品のベンダーからサポートを受けたり、製品のビジネス ルールに関してより優れたドキュメントを手に入れることができれば、このアプローチに戻るつもりです。
JavaScript コードを再推測することを避け、多くの時間を節約するために、専用の VM で Firefox にサード パーティのサイトをロードし、「特権」コード (つまり、nsI*) を実行するというアプローチを取ることになりました。サイトを「ドライブ」および「スクレイピング」するためのサイトのコンテキスト。
私は現在nsIWebProgressListener
/ DOMContentLoaded
(すでに ChromeWindow への参照を持っている場合) を使用しており、新しいウィンドウとタブを見つけるためにnsIWindowMediator
呼び出されたウィンドウ + タブの列挙setInterval
(それらが開くことを予測する方法も、それらの DOMWindow オブジェクトへの参照を取得する方法もない場合)サードパーティの JavaScript のスコープによるものです)。
質問:
サードパーティ サイトの JavaScript によって現在 (および将来) 開かれる各ウィンドウ/タブに「フック」を自動的にインストールするにはどうすればよいですか? nsI~
この場合、Firefox UI 全体の「ウィンドウ ウォッチャー」インターフェイスのようなものが非常に便利です。