2016-05-13 134 views
2

我想做一個程序,檢測用戶是否打開/訪問某個網站,例如facebook.com。無論使用的網絡瀏覽器如何,它都必須工作。C# - 如何檢測網站是否被訪問

我想過檢查DNS緩存中的記錄,它會工作,但有一個問題 - 它會產生誤報。爲什麼,因爲有些頁面包含Facebook小部件。在這種情況下,我不需要訪問fb來讓facebook.com出現在我的DNS緩存中,它會在我訪問包含fb小部件的網站時出現。

第二個想法是尋找活動的TCP連接,但它不起作用。

最後一個想法是嗅探流量。我在Wireshark中做了簡單的測試,並且在檢查DNS緩存記錄方面也存在同樣的問題,更準確地說是誤報。此外,fb使用https協議,所以我不能看到他們的簡單地址,我必須從DNS獲取他們的IP,然後嘗試在嗅探流量中找到它們。

我沒有更多的想法如何解決這個問題。

+0

從技術上講,如果一個頁面包含一個來自Facebook的小部件,那麼用戶訪問Facebook時可能無法完成...也許您可以添加代理中間件,如Fiddler?,然後您可以閱讀Http請求並確定如果訪問路線符合您的標準 – 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,並且,以追蹤到特定域(存儲在SessionEventArgs.ProxySession.Request.Url)在OnRequest呼叫屬性呼叫利用OnRequest事件。你甚至可以在結果/請求出來之前修改它們。但是,請注意,此庫確實會覆蓋您當前的系統代理設置。

相關問題