powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
25 сообщений из 25, страница 1 из 1
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033549
Toropov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Стоит задача просто отловить сам факт перехода на определённый сайт. С браузером пользователь может работать любым. Возможно как-то аналогично файрволу (параллельно с ним) реализовать слежение за трафиком и фиксировать момент перехода на определённый IP (сайт)?
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033555
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toropov,

Есть ньюансы:
1. IP<>сайт: на одном IP может быть несколько сайтов и наоборот
2. Браузер может использовать прокси
3. Посмотрите на WinPCap - вроде, есть порт апи для дельфи
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033640
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для сабжа есть более подходящие инструменты.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033665
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гугли в сторону: delphi sniffer
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033666
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toropov
С браузером пользователь может работать любым.


Правильней будет написать для разных браузеров дополнения (плагины).
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033671
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Toropov
С браузером пользователь может работать любым.


Правильней будет написать для разных браузеров дополнения (плагины).

Для "любых" бразуеров плагины. А ты не запыхаешься?
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033677
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toropov
Добрый день! Стоит задача просто отловить сам факт перехода на определённый сайт. С браузером пользователь может работать любым. Возможно как-то аналогично файрволу (параллельно с ним) реализовать слежение за трафиком и фиксировать момент перехода на определённый IP (сайт)?


всё только через прокси разрешить - не вариант?
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033714
Toropov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x1ca4064, благодарю!
Да, с вашей подсказкой нашёл интересную статью:
http://iantonov.me/page/sozdanie-sniffera-na-delphi
Буду изучать и пробовать!
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033723
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалено
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033724
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToropovВозможно как-то аналогично файрволу (параллельно с ним) реализовать слежение за трафиком и
фиксировать момент перехода на определённый IP (сайт)?

Берёшь HTTP сервер из демок Delphi. IP адрес нужного сайта сайта в hosts меняешь на
127.0.0.1. Готово: при переходе на него в любом браузере твой сервер этот запрос получит и
сможет сделать с ним всё что угодно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033737
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к слову, кому нужен сниффер, может глянуть старый, но годный проект Розыча (+ обсуждение):
https://rouse.drkb.ru/network.php
https://forum.sources.ru/index.php?showtopic=219840&view=showall
http://delphimaster.net/view/6-1107518050/all
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033741
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

ToropovВозможно как-то аналогично файрволу (параллельно с ним) реализовать слежение за трафиком и
фиксировать момент перехода на определённый IP (сайт)?

Берёшь HTTP сервер из демок Delphi. IP адрес нужного сайта сайта в hosts меняешь на
127.0.0.1. Готово: при переходе на него в любом браузере твой сервер этот запрос получит и
сможет сделать с ним всё что угодно.
этот файл в игноре у винды уже давно.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033766
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Relic Hunter
Dimitry Sibiryakov

пропущено...

Берёшь HTTP сервер из демок Delphi. IP адрес нужного сайта сайта в hosts меняешь на
127.0.0.1. Готово: при переходе на него в любом браузере твой сервер этот запрос получит и
сможет сделать с ним всё что угодно.
этот файл в игноре у винды уже давно.


сказки венского леса
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033779
Toropov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наткнулся ещё на информацию о функции "DnsGetCacheDataTable" из DNSAPI.dll. В принципе, можно было бы периодически сканировать кеш доменных имён и получать нужный результат. Не могу никак найти описание данной функции, может кто-нибудь помочь?
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033808
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToropovНе могу никак найти описание данной функции

https://www.google.com/search?q=DnsGetCacheDataTable function
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033846
Toropov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, undocumented function DnsGetCacheDataTable.
Есть страницы с перечислением функций содержащихся в dnsapi.dll, но ни одного пояснения.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033857
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toropov,

https://coderoad.ru/31889957/Утечка-памяти-при-использовании-DnsGetCacheDataTable

Вот тут посмотри. Там пример использования есть + в конце еще что-то по фикс утечки памяти.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033859
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToropovЕсть страницы с перечислением функций содержащихся в dnsapi.dll, но ни одного пояснения.

На первой странице половина ссылок на примеры использования, ты что, Си читать не умеешь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033881
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toropov
Dimitry Sibiryakov, undocumented function DnsGetCacheDataTable.
Есть страницы с перечислением функций содержащихся в dnsapi.dll, но ни одного пояснения.


... и на большинстве из них написано что функция недокументированная.
Т.е. официальной документации по ней нет и она предназначена только для использования разработчиками библиотеки.
Ну или теми кто сам разобрался как она работает, но без гарантий что при очередном обновлении ничего не поменяется.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033892
Toropov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster
Вот тут посмотри. Там пример использования есть

Си, к сожалению, не знаю. Попытался:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
type
  TDnsGetCacheDataTable = procedure (var P: Pointer); stdcall;

procedure TFormMain.ButtonStartClick(Sender: TObject);
var DnsGetCacheDataTable: TDnsGetCacheDataTable; // указатель на функцию TDnsGetCacheDataTable
    LibHandle: HModule;        // описатель библиотеки
    pEntry: Pointer;           //нетипизированный указатель
begin
  pEntry := nil;
  LibHandle := LoadLibrary('DNSAPI.dll');
  if LibHandle <> 0
  then begin
   @DnsGetCacheDataTable := GetProcAddress(LibHandle, 'DnsGetCacheDataTable');
   if @DnsGetCacheDataTable <> nil
   then begin
    MemoMain.Lines.Add('Готово!');

   // DnsGetCacheDataTable(&pEntry)

 {   int stat = DnsGetCacheDataTable(&pEntry);
    PVOID pFirstEntry = pEntry;
    printf("stat = %d\n", stat);
    pEntry = pEntry->pNext;
    while (pEntry) {
        wprintf(L"%s : %d \n", (pEntry->pszName), (pEntry->wType));
        pDnsApiFree(pEntry->pszName);
        PVOID p = pEntry;
        pEntry = pEntry->pNext;
        pDnsApiFree(p);
}
   end
   else begin
    MemoMain.Lines.Add('Ошибка отсутствия процедуры в библиотеке.');
   end;
  end;
  FreeLibrary(LibHandle);
end;


Но вот что вместо stat использовать в Delphi и далее чтение объекта из памяти реализовать - пока не знаю.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033894
Toropov,

Напиши браузерное расширение, это самый простой способ. Сейчас кстати браузеры используют DoH в обход системного днс резолвера.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033896
rgreat,

Сейчас есть Safari - WebKit, Chrome/Opera/YaBrowser/Vivaldi/итд - Blink, Firefox - Gecko. Больше распространенных браузеров нету. У Blink && Gecko один стандарт - WebExtensions, про Safari не знаю.
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033899
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://stackoverflow.com/a/31892801/5376639
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
type
type
  PDNSCACHEENTRY = ^DNSCACHEENTRY;
  DNSCACHEENTRY = record
    pNext: PDNSCACHEENTRY; // Pointer to next entry
    pszName: PWideChar; // DNS Record Name
    wType: Word; // DNS Record Type
    wDataLength: Word; // Not referenced
    dwFlags: Cardinal; // DNS Record FlagsB
end;

function DnsGetCacheDataTable(var Entry: PDNSCACHEENTRY): Integer; stdcall; external 'DNSAPI.dll';
procedure DnsApiFree(AData: Pointer): Integer; stdcall; external 'DNSAPI.dll';

var
  Entry: PDNSCACHEENTRY;
  OldEntry: PDNSCACHEENTRY;
begin
  Entry := nil;
  DnsGetCacheDataTable(Entry);
  while (Entry <> nil) do begin
    // Print Entry
    DnsApiFree(Entry^.pszName);
    OldEntry := Entry;
    Entry := Entry^.pNext;
    DnsApiFree(OldEntry);
  end;
end;
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40033922
Toropov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, благодарю! Всё работает!
...
Рейтинг: 0 / 0
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
    #40034823
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое надежное - прокси с запретом прямых подлючений или сниффер. Прокси более простой вариант
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]