友人が「スマート」ヘッドセット(音声コマンドを操作)を購入しました。このヘッドセットを設定するには、Windowsに software をインストールする必要がありました。
ページからソフトウェアをダウンロードした後、このページは構成ウィザードにリダイレクトされ(まだWebページ上にあります)、ソフトウェアがまだインストールされていないことが通知されました。ツールをインストールしたら、Continueをクリックする必要があります。
インストールして[続行]をクリックした後、ヘッドセットをUSB経由で接続する必要がありました。それを行うとすぐに、Webページはそれを認識し、さまざまな構成オプションを提供し、ファームウェアを更新するための進行状況バーも表示しました。
このWebページはどのようにしてUSB上のハードウェアにアクセス(読み取りおよび書き込み)できますか?または:このソフトウェアはどのようにしてWebページに自分自身を「挿入」できますか?
最初は、プラグインrespをインストールしているのではないかと思いました。 Firefoxのアドオンですが、そうではありませんでした。これはFlashで可能でしょうか(ページがFlashを使用しているかどうかは確認しませんでした。Javaを使用していないことだけを知っています)。 JavaScriptではこれは不可能だと思いませんか?私はそのようなインストール/構成方法を見たことはありません(私はWindowsを使用していないため、これが一般的であるかどうかはわかりません)。ちょっと魚っぽい感じです。どういうわけかブラウザを「操作」する必要はないでしょうか?このような方法をお勧めしますresp。安全に実装できますか?
@Tom_Leekが言ったように:ツールにローカルWebサーバーを実行させるが使用されているようです:
示されたURLを見て、main.js
の最初の行を見つけます。
//url for the local server
var BASE_DIR = '/inc/support/myheadset/updater/';
var LOCAL_SERVICE_URL = 'http://127.0.0.1:8011/';
ダウンロードされたプログラムは、ローカルWebサーバーを実行してブラウザーと対話します。
ローカルツールをインストールすると、何でも実行できます(ローカル管理者の権限も必要です!)。このツールはUSBハードウェアを検査でき、Webページに「通信」する方法が必要です。比較的簡単な方法は、ツールでローカルWebサーバーを実行し、ページがそのWebサーバーをiframe
として参照するようにすることです。したがって、ユーザー(あなた)は、「構成ウィザード」が「Webページで」発生しているように見えますが、実際には単なる表示であり、ローカルにインストールされたツールで実際の処理が行われます。
ローカルコードをWebページと相互作用させる方法は他にもありますが、ローカルWebサーバーは最も単純なものの1つであり、通常のすべてのWebブラウザーと互換性を持たせるのは簡単です。
ほとんどの場合、ドライバーはAJAXを介して呼び出すことができるマシン上のサービスを公開します。その場合は、JavaScriptがサービスを呼び出すだけです。 Flashベースの場合もありますが、AJAXのほうが簡単です。また、ドライバーをHTTP以外の追加プロトコルのハンドラーとして登録することもできます。たとえば、TeamSpeak(ボイスチャットクライアント)これを行うには、ts://プロトコルを登録して自分自身を呼び出します。次に、plantronics://などを実行して呼び出しを行うと、そのプロトコルに登録されているハンドラー(ドライバー)に呼び出しがリダイレクトされます。
これは明らかに非排他的なリストであり、他の可能性が存在しますが、それはそれを行うことができるいくつかの可能な方法です。