2016-05-13 21 views
2

私は、いくつかのウェブサイトがユーザによって開かれたか訪問されたかを検出するプログラムを作りたいと思っています。使用されているWebブラウザに関係なく動作する必要があります。C# - ウェブサイトが訪問されたかどうかを検出する方法

私はDNSキャッシュでレコードをチェックすることを考えましたが、うまくいくでしょうが、問題があります - それは偽陽性を生成します。なぜなら、一部のページにはFacebookのウィジェットが含まれているからです。この場合、fbにアクセスしてfacebook.comをDNSキャッシュに表示する必要はありません.fbウィジェットを含むWebサイトにアクセスするたびに表示されます。

2番目のアイデアは、アクティブなTCP接続を探していましたが、それもうまくいきません。

最後のアイデアは、トラフィックをスニッフィングすることでした。私はWiresharkで簡単なテストを行いました.DNSキャッシュレコードのチェックと同じ問題がありました。正確には誤検出です。また、fbはhttpsプロトコルを使用しているので、単純なアドレスを見ることができないので、DNSからIPを取得してからスニッフィングされたトラフィックでIPアドレスを見つけなければなりません。

私はこの問題を解決する方法はもうありません。

+0

技術的に言えば、ページにはFacebookのウィジェットが含まれている場合、ユーザーはFacebookにアクセスしました...おそらく、Fiddlerのようなプロキシミドルウェアを追加できますか?訪問したルートが条件に一致する場合 – Gusman

答えて

0

facebookのIPアドレスを禁止または追跡することについて考えましたか? 私はfacebook.comのためにnslookupコマンドを行なったし、得た:

nslookupをfacebook.com

非公式の答え: 名前:facebook.com アドレス:2a03:2880:F001:1F:顔:b00c: 0:25de

31.13.76.68
0

私の提案はTitanium Web Proxyを使用すべきでしょう、そしてOnRequestコールにおけるプロパティ(SessionEventArgs.ProxySession.Request.Urlに格納されている)特定のドメインへのコールを追跡するためにOnRequestイベントを利用します。外出する前に結果やリクエストを変更することもできます。ただし、このライブラリが現在のシステムプロキシ設定を上書きすることに注意してください。

関連する問題