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
вызов. Вы даже можете изменить результаты / запросы, прежде чем они выходят. Однако следует помнить, что эта библиотека перезаписывает текущие настройки прокси-сервера системы.