Посмотрите, какой веб-сайт посещает пользователь, независимо от браузера.

Я пытаюсь создать приложение, которое может информировать пользователя о конкретной информации о веб-сайте всякий раз, когда он посещает веб-сайт, который присутствует в моей базе данных. Это должно быть сделано независимо от браузера, чтобы пользователь всегда видел информацию при посещении веб-сайта (независимо от того, какой браузер или другой инструмент он или она использует для посещения веб-сайта).

Мой первый (частично успешный) подход заключался в просмотре пакетов данных с использованием класса System.Net.Sockets.Socket и т. д. К сожалению, я обнаружил, что этот подход работает только тогда, когда у пользователя есть права администратора. И, конечно же, это не то, чего я хочу. Моя цель состоит в том, чтобы пользователь мог установить одну относительно простую программу, которую можно было бы использовать сразу.

После этого я начал искать альтернативы и нашел много информации о WinPcap и некоторых его оболочках для .NET (я говорил вам, что уже программирую на C# .NET?). Но с помощью WinPcap я обнаружил, что это должно быть установлено на компьютере пользователя, и нет никакого способа просто ссылаться на некоторые файлы dll и код. Я уже рассматривал возможность включения WinPcap в качестве обязательного условия в мой установщик, но это также слишком громоздко.

Ну, короче говоря. Я хочу знать в своем приложении, какой веб-сайт посещает мой пользователь в данный момент. Я думаю, что это нужно сделать, просмотрев пакеты данных в сети, но не могу найти для этого хорошего решения. Мое приложение построено на С# .NET (4.0).


person Bas Slagter    schedule 15.11.2010    source источник


Ответы (5)


Вы можете использовать Fiddler для мониторинга интернет-трафика. это

прокси-сервер веб-отладки, который регистрирует весь трафик HTTP(S) между вашим компьютером и Интернетом. Fiddler позволяет проверять трафик, устанавливать точки останова и «манипулировать» входящими и исходящими данными. Fiddler включает в себя мощную подсистему сценариев на основе событий и может быть расширен с использованием любого языка .NET.

Он поддерживает сценарии и может быть легко использован из .NET.

person luvieere    schedule 27.08.2011

Одна простая идея: вместо того, чтобы отслеживать трафик напрямую, как насчет установки расширения для браузера, которое отправляет вам текущий URL-адрес страницы. Затем вы можете проверить, находится ли этот URL в вашей базе данных, и при желании показать пользователю сообщение с помощью расширения браузера.

Вот как работают такие расширения, как Invisible Hand... Оно сканирует текущую страницу и отправляет соответствующие данные обратно на сервер. для обработки. Если он что-то находит, он использует структуру расширения браузера, чтобы сообщить эти результаты пользователю. (Используя оповещение или полосу в верхней части окна и т. д.)

person markquezada    schedule 15.11.2010
comment
Что ж, идея невидимой руки в чем-то похожа на то, что я пытаюсь реализовать, но я не хочу привязываться к одному (или нескольким) конкретным браузерам. Вот почему я думаю, что лучше смотреть на сетевые пакеты. С расширением я должен сделать расширение для каждого браузера (и поддерживать их). Кстати спасибо за ответ! - person Bas Slagter; 15.11.2010

для хорошего начала wireshark сделает то, что вы хотите. вы можете указать фильтр для изоляции и просмотра http-потоков.

Самое приятное то, что wireshark имеет открытый исходный код и построен на другой программе API, winpcap с открытым исходным кодом.

Я предполагаю, что это то, что вы хотите.

  1. захватить сетевые данные с провода
  2. просматривать tcp-трафик компьютера, изолировать и сохранять (частично или целиком) данные http.
  3. хранить информацию о http-соединениях

номер 1 легко, вы можете найти учебник по winpcap в Google или просто использовать некоторые из их примеров программ для сбора данных. Я рекомендую вам изучить формат файла pcap, все, что связано с winpcap, использует этот базовый формат и его структуры.

теперь вам нужно научиться брать поток TCP и превращать его в сплошной поток данных без куроптации или дезорганизованных частей. (извините за орфографию) еще раз, очень хороший пример можно найти в исходном коде wireshark.

затем с вашим потоком данных вы можете просто прочитать формат http и данные html или что-то еще, с чем вы имеете дело.

надеюсь, это поможет

person Nor    schedule 30.07.2011
comment
Спасибо за ответ... Я пытался использовать winpcap, но, к сожалению, это не работает для беспроводных подключений... кажется, есть airpcap, но он работает не во всех случаях. Итак... я все еще застрял с этим. - person Bas Slagter; 15.08.2011
comment
поэтому вам нужен контролируемый шлюз. через который вы направляете весь трафик. еще больше. чтобы легко применять только arp-трафик. сделать перенаправленный эхо-сервер. фильтрация только того трафика, который вам нужен, и перенаправление всего остального трафика, который вы не обрабатываете или не отслеживаете. winpcap может все это. вам просто нужно более глубокое понимание сетевых протоколов - person Nor; 12.09.2011

Если пользователь сотрудничает, вы можете настроить его браузеры на использование предоставляемой вами прокси-службы. Это будет перехватывать весь веб-трафик, делать с ним все, что вы хотите (искать в своей базе данных, уведомлять пользователя и т. д.), а затем передавать его в исходное местоположение. Запустите прокси в локальной системе или в удаленной системе, если это лучше подходит для вашего случая.

Если пользователь отказывается сотрудничать или вы не хотите, чтобы он менял настройки своего браузера, вы можете использовать одно из решений для перехвата пакетов, например fiddler.

person Mike Sokolov    schedule 30.08.2011

Простой и прямой способ — изменить DNS компьютера, чтобы он указывал на ваше приложение. это приведет к тому, что весь DNS-трафик будет проходить через ваше приложение, которое можно будет перехватить, а затем перенаправить на настоящий DNS-сервер. это также избавит вас от необходимости фильтровать трафик emule/torrent, поскольку обычно работает с чистым IP-адресом (что также может быть проблемой, поскольку его можно обойти, используя IP-адрес для просмотра).

-Как изменить DNS-серверы Windows

-преобразователь DNS

Еще один простой способ — настроить (программно) прокси-сервер браузера для прохождения через ваш сервер. Это облегчит вашу жизнь, но будет более очевидно для пользователей.

person Etherpulse    schedule 30.08.2011