他のブラウザを監視することは可能でしょうか?
何を監視したいのでしょうか?
……という定義がとても重要な問題で、基本的にどうあがこうが他のブラウザの利用状況を調べることなんて不可能だからです。
先回りしてやりたいことを想像すると、
「多分出来ません」というのが回答になると思います。
OSはタスク管理が出来ます。
1個しかないCPUやメモリの仕様状況を管理して、
ブラウザやエディタ、その他アプリケーションの起動やメモリの割り振り、CPUの使い方を逐一管理しています。
なのでOSのAPIに問い合わせれば大抵の事は出来ます。
おまえ裏でこっそりエロゲ起動しとるやろ?
みたいなこともOS越しにプロセスを監視すれば出来ます。
ですが、ブラウザ内で動作するJavaScriptでそんな事されたらどうでしょうか?
私のWebサイトを覗いた瞬間、君は○○のソフトを実行中だね?
皆にバラして欲しくなければ下記の口座に金払え…とまぁこうなるわけです。
JavaScriptはAjaxで文字列を任意のURLにのせてHTTPリクエストを叩けますから、
こういうプライペートな情報を盗み出してWebサーバ上のDBに保存しておいて脅しに使うと……いやいやヤバイでしょ好き放題されちゃいますね。
なので、実際にはブラウザはJavaScriptに対して、
「お前はHTMLを読み込んで、そのDOMツリーを変更する権限以外は何もやらねーよ」
という感じの超強力や成約を掛けているわけです。
なのでJavaScriptからでは、そのマシンがChrome以外に何を立ち上げているか知ることは不可能です。
同じブラウザ内なら1番目タブから2番目タブの操作を監視するのは可能そうなのですが
とりあえずこれは無理です。
なぜならば、JavaScript自体に別のタブや別ウィンドウで開かれたページの情報を得る権利が無いから。
それがもし出来るならこのような悪用が可能です。
私のWebサーバにはエロサイトや違法なサイトのURLリストをリストアップしておき、
AmazonやTwitter、Facebook等も開いているとよりよいですね。
訪問したユーザーの別タブの開いている情報を探る機能を埋め込んで置きます。
ユーザーが訪問してきた時に、裏でエロサイトを閲覧していたら、IPアドレスを控えてAjax通信で保存しつつ、脅すわけですよ。
下記の口座に振り込まないと、SNSでお前が普段どのようなサイトを見ているかバラすぞ
…とまぁこんな感じで。
頑張れば銀行の認証番号やクレカも盗めそうですね。
そのため、ブラウザは別タブや別ウィンドウの情報は決してJavaScriptに教えないようになっています。
なぜなら悪用されるから。
しかしwebsocketなら可能な気をしてます。
WebSocketでも当然無理です。
Ajaxの弱点は自分からHTTPリクエストを発射することだけです。
つまり、Webサーバから「お伝えしたい」事があっても、伝える方法がないわけですね。
なのでチャットやゲームでは、こちらから定期的に「何か伝えたい事ある?」というAjaxを何度も送って、捕まえるという操作が必要でした。
それをWebScoketでは通信を繋ぎっぱなしにして、
JavaScriptからサーバーにお願いしたい内容を送信したり、
逆にサーバーから追加情報を送ったりという双方向の情報共有が可能となりました。
ここが画期的なだけであって、
重要な情報を知ることが出来ない以上、
双方向通信が出来ても何も進展はしません。
じゃあどういう条件ならばできそうか?
- IDとPassを発行
- 同じユーザーでアクセス
- Webサイト内の特定ページにアクセスすると解析開始、JavaScriptで得られる全ての情報をWebサーバへ送信していく
- 別のマシンで受け取った情報をログとして出力する
想像した事は出来ているでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/24 10:40