C# - Как определить, был ли сайт посещен

Я хочу создать программу, которая определяет, был ли какой-либо веб-сайт открыт / посещен пользователем, например, facebook.com. Он должен работать независимо от используемого веб-браузера.

Я думал о проверке записей в DNS Cache, это будет работать, но есть проблема - он будет генерировать ложные срабатывания. Почему, потому что некоторые страницы содержат виджеты facebook. В этом случае мне не нужно посещать fb, чтобы facebook.com появлялся в моем DNS-кэше, он будет отображаться при каждом посещении веб-сайта, содержащего виджеты fb.

Вторая идея заключалась в поиске активных соединений TCP, но это тоже не работает.

Последней идеей было понюхать трафик. Я сделал простой тест в Wireshark, и есть та же проблема, что и при проверке записей кэша DNS, точнее ложных срабатываний. Кроме того, fb использует протокол https, поэтому я не вижу такого простого их адреса, мне нужно получить их IP-адреса из DNS, а затем попытаться найти их в перехваченном трафике.

У меня больше нет идей, как решить эту проблему.

2 ответа

Задумывались ли вы о запрете или отслеживании IP-адреса для Facebook? Я сделал nslookup для facebook.com и получил:

nslookup facebook.com

Неофициальный ответ: Имя: facebook.com Адреса: 2a03:2880:f001:1f:face:b00c:0:25de 31.13.76.68

Мое предложение будет использовать веб-прокси Titanium и использовать OnRequest событие для отслеживания звонков на определенные домены (хранятся в SessionEventArgs.ProxySession.Request.Url) недвижимость в OnRequest вызов. Вы даже можете изменить результаты / запросы, прежде чем они выходят. Однако следует помнить, что эта библиотека перезаписывает текущие настройки прокси-сервера системы.

Другие вопросы по тегам