Я пишу приложение на Python, которое, помимо прочего, должно знать, какие веб-сайты пользователь просматривает в веб-браузере или иным образом подключается к OS X и, если возможно, к Linux. Это для отслеживания того, как долго пользователь получает доступ к определенным веб-сайтам.
Я знаю, что в OS X есть вызов Cocoa, который возвращает текущую страницу в Safari, но это также должно работать как минимум с Chrome и Firefox, в идеале с любым клиентом, известным или неизвестным программному обеспечению.
Первое, что я посмотрел, это pcap через libpcap , который я могу использовать в Python с pylibpcap . pcap предназначен для захвата пакетов, и в теории, насколько я понимаю, я мог бы определить, передаются ли пакеты на определенные IP-адреса, занесенные в «черный список». Это было бы своего рода работой, но если бы в браузере была открыта статическая веб-страница и оставлена как есть, я бы не смог обнаружить ее с помощью этого механизма.
Во-первых, смогу ли я сделать то, что я описал выше, с помощью libpcap? Я новичок в области сетевой фильтрации и тому подобного, поэтому я не совсем уверен.
Во-вторых, есть ли лучший способ сделать это?
(Приложение TimeSink для OS X имеет интересный подход, который состоит в том, чтобы посмотреть, что отображается в строке заголовка, чтобы решить, какой веб-сайт просматривает пользователь. Это не идеально для меня по двум причинам: (1) я возможно, не удастся окончательно решить, какой домен посещается по названию, и (2) я вижу только заголовок активной вкладки.)