2012-02-29 8 views
3

私はいくつかの助けを得ることができると思います。 私は、アプリケーションをホストするコンピュータからWebページへのアクセスを監視するためにC#(最も簡単な方法で)を使用してホストベースのアプリケーションを作成しようとしています。 これまではSHDocVw.ShellWindows()を使用していましたが、アクセス中ではなくWebページに既にアクセスしている場合にのみ機能します。 それはWindows Internet Explorerを監視しますウェブページへのアクセスをモニタする

私はhttplistenerについても調査しましたが、役に立たないです。

解決策はありますか? 詳細が必要な場合は教えてください

+0

クライアントマシンまたはサーバーでイベントを発生させたいアプリケーションはありますか? –

+1

明確にするために、このアプリケーションは* server *側ではなく* client *側で動作するように設計されています。どのブラウザを使用したいですか? –

+0

また、これはLANまたはWANのWebサイトですか? –

答えて

2

数時間の作業の後、これまでの中で最も優雅なものではなく、時にはメモリダンプを引き起こす解決策を見つけましたが、必要なのはそれだけです。 ありがとう

ちょうど最後の編集では、時間を追加してクラッシュの問題を解決し、毎秒ページをチェックします。 私の質問にあなたのiterestのおかげで再び。

class wait 
{ 

    private static System.Timers.Timer aTimer; 
    public void timed1() 
    { 

     // Create a timer with a ten second interval. 
     aTimer = new System.Timers.Timer(10000); 

     // Hook up the Elapsed event for the timer. 
     aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 

     // Set the Interval to 2 seconds (2000 milliseconds). 
     aTimer.Interval = 2000; 
     aTimer.Enabled = true; 

     Console.WriteLine("Press the Enter key to exit the program."); 
     Console.ReadLine(); 


    } 


    private static void OnTimedEvent(object source, ElapsedEventArgs e) 
    { 

     //NetKeyLogger klog = new NetKeyLogger(); 
     // Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime); 
     Kelloggs.Program KKA = new Kelloggs.Program(); 


     SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); 
     string filename; 

     foreach (SHDocVw.InternetExplorer ie in shellWindows) 
     { 
      filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); 
      if (filename.Equals("iexplore")) 
      { 

       string ddd = (ie.LocationURL); 
       // Console.WriteLine(ddd); 

       if (ie.LocationURL == "http://www.testPage.com/") 
       { 
        Console.WriteLine("Page found"); 
        // Console.ReadLine(); 
        aTimer.Enabled = false; 
        KKA.Maino(); 

       } 
      } 
2

これは状況に応じて有効ではないかもしれませんが、イントラネットのウェブサイトと同様のことを行う必要がありました(クロスブラウザなので、 )最近。私のソリューションは、WCFサービスをホストするクライアント側アプリケーションをセットアップすることでした。次に、ユーザーがWebページ上のリンクをクリックするか、または$(document).readyなどのイベントを発生させると、サーバーに現在のセッションに関連付けられているIPアドレスに接続するようにメッセージを送信します(実際にはIP要求のアドレス)を既知のポートに送信します。この接続は、そのIPアドレスとポートをリッスンしているクライアント側のアプリケーションに対して行われます(私の場合は、要求内のコードを動的にコンパイルして実行しています)。

もちろん、イントラネットのWebサイトでのみ動作します。インターネット上でIEのために働くより一般的なアプローチは、localhost上で会話するIE拡張(またはおそらくSilverlightアプリケーション)を作成することです。私は決してそれをやったことがないので、どうやってそれが実際に可能かどうか、(原則として可能と思われる)ことはできません。

ウェブサイトにアクセスできない場合は、おそらくSharpPCAPを使用するか、Fiddler APIが役立ちます。

2

「ローカルコンピュータのプログラムがいつWebページにアクセスするかを知りたい」という疑問があると仮定します。トランスペアレントなhttpプロキシが、あなたが取っておきたいアプローチです。 Fiddlerをチェックして、それがあなたが望むものであるかどうかを確認してください。

あなたの質問が「私のリモートサーバで特定のページに当たったときを知りたい」場合:ウェブサーバのログとイベントログを解析してサーバの状態を知る監視ツールがたくさんあります。自分で何かを行い、サーバーのコードを制御したい場合は、興味のあるページのヒット情報を収集し、このデータを報告するページをいくつか用意します。

関連する問題