Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> URL монитор 
:(
    Опции темы
vfedorov
Дата 2.1.2007, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Здравствуйте.

Я хочу написать программу, которая бы отображана все URL по которым ходили в разных браузерах. IE, FireFox, Opera.

Подскажите пожалуйста - с чего мне начать.

Буду рад любым исходникамб ссылкам.

Заранее спасибо

PM MAIL   Вверх
ptr
Дата 2.1.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Браузеры хранят историю в файлах. Тебе нужно определить местонахождение этого файла и считывать оттуда нужную информацию (для Opera global.dat, для Firefox history.dat). 
Например для Opera:
Читаешь файл opera6.ini ("Documents and Settings\user folder\Application Data\Opera\Opera\profile\"), ищещь там параметр "Global History File", если он там есть, то по этому пути читаешь файл с историей, если же нет, то читаешь global.dat в той же директории. В global.dat хранится название сайта, адрес, время посещения.

Это сообщение отредактировал(а) ptr - 2.1.2007, 13:22


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
vfedorov
Дата 3.1.2007, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Благодарю за ответ.

Есть ли ещё какой - нибудь способ? Вот нашёл простой сниффер на codenet.ru

Код

#include <conio.h>
#include <stdio.h>
#include <winsock2.h>

#define MAX_PACKET_SIZE    0x10000
#define SIO_RCVALL         0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb

//Структура заголовка IP-пакета

typedef struct IPHeader {
  UCHAR   iph_verlen;   // версия и длина заголовка
  UCHAR   iph_tos;      // тип сервиса
  USHORT  iph_length;   // длина всего пакета
  USHORT  iph_id;       // Идентификация
  USHORT  iph_offset;   // флаги и смещения
  UCHAR   iph_ttl;      // время жизни пакета
  UCHAR   iph_protocol; // протокол
  USHORT  iph_xsum;     // контрольная сумма
  ULONG   iph_src;      // IP-адрес отправителя
  ULONG   iph_dest;     // IP-адрес назначения
} IPHeader;

char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;

void main()
{
  WSADATA     wsadata;   // Инициализация WinSock.
  SOCKET      s;         // Cлущающий сокет.
  char        name[128]; // Имя хоста (компьютера).
  HOSTENT*    phe;       // Информация о хосте.
  SOCKADDR_IN sa;        // Адрес хоста
  IN_ADDR sa1;        //
  unsigned long        flag = 1;  // Флаг PROMISC Вкл/выкл.

  // инициализация
  WSAStartup(MAKEWORD(2,2), &wsadata);
  s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
  gethostname(name, sizeof(name));
  phe = gethostbyname( name );
  ZeroMemory( &sa, sizeof(sa) );
  sa.sin_family = AF_INET;
  sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
  bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
  
  // Включение promiscuous mode.
  ioctlsocket(s, SIO_RCVALL, &flag);

  // Бесконечный цикл приёма IP-пакетов.
  while( !_kbhit() )
  {
    int count;
    count = recv( s, Buffer, sizeof(Buffer), 0 );
    // обработка IP-пакета
    if( count >= sizeof(IPHeader) )
    {
      IPHeader* hdr = (IPHeader *)Buffer;
      //Начинаем разбор пакета...

    strcpy(src,"Пакет: ");
    CharToOem(src,dest);
    printf(dest);
    // Преобразуем в понятный вид адрес отправителя.
    printf("From ");
    sa1.s_addr = hdr->iph_src;
    printf(inet_ntoa(sa1));

    // Преобразуем в понятный вид адрес получателя.
    printf(" To ");
    sa1.s_addr = hdr->iph_dest;
    printf(inet_ntoa(sa1));

    // Вычисляем протокол. Полный список этих констант
    // содержится в файле winsock2.h
    printf(" Prot: ");
    if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
    if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");

    // Вычисляем размер. Так как в сети принят прямой порядок
    // байтов, а не обратный, то прийдётся поменять байты местами.
    printf("Size: ");
    lowbyte = hdr->iph_length>>8;
    hibyte = hdr->iph_length<<8;
    hibyte = hibyte + lowbyte;
    printf("%s",itoa(hibyte,"",10));

    // Вычисляем время жизни пакета.
    printf(" TTL:%s",itoa(hdr->iph_ttl,"",10));
    printf("\n");

    }
  }

  closesocket( s );
  WSACleanup();
}


Можно ли с помошью него получить URL сайта, с которого идут пакету? И если можно - то как?
PM MAIL   Вверх
witex
Дата 3.1.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 1
Всего: 4



ну адресс ip узнать там можно. То можно используя структуру hosten  получить адресс урл
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
ptr
Дата 4.1.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



vfedorov, а зачем тебе сниффер? Если ты будешь использовать сниффер, то тебе придётся постоянно висеть и ждать подключений, смотреть какие пакеты куда идут, вести собственную историю, чистить её и прочее. Ну и ещё для работы сниффера нужны права администратора. Тебе же нужна только история посещений, зачем же тебе тогда сниффер? Или я чего-то не понял?

Цитата(vfedorov @  3.1.2007, 07:15 Найти цитируемый пост)
Есть ли ещё какой - нибудь способ?

Это пожалуй самый простой способ.

Цитата(vfedorov @  3.1.2007,  07:15 Найти цитируемый пост)
Можно ли с помошью него получить URL сайта, с которого идут пакету? И если можно - то как?

Воспользоваться gethostbyaddr().


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.