Посмотрите, какой сайт пользователь посещает в браузере независимо - PullRequest
1 голос
/ 15 ноября 2010

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

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

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

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

Ответы [ 5 ]

1 голос
/ 28 августа 2011

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

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

Это сценарий и его можно легко использовать из .NET .

1 голос
/ 15 ноября 2010

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

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

0 голосов
/ 30 августа 2011

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

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

0 голосов
/ 30 августа 2011

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

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

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

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

0 голосов
/ 30 июля 2011

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

лучшая часть - это wireshark с открытым исходным кодом, созданный из другой программы api, winpcap с открытым исходным кодом.

Полагаю, это то, что вы хотите.

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

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

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

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

Надеюсь, что поможет

...