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

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


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


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

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


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

Берёшь HTTP сервер из демок Delphi. IP адрес нужного сайта сайта в hosts меняешь на
127.0.0.1. Готово: при переходе на него в любом браузере твой сервер этот запрос получит и
сможет сделать с ним всё что угодно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.01.2021, 00:36
    #40033737
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
к слову, кому нужен сниффер, может глянуть старый, но годный проект Розыча (+ обсуждение):
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
06.01.2021, 00:53
    #40033741
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
Dimitry Sibiryakov

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

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

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

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


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

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

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

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

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


... и на большинстве из них написано что функция недокументированная.
Т.е. официальной документации по ней нет и она предназначена только для использования разработчиками библиотеки.
Ну или теми кто сам разобрался как она работает, но без гарантий что при очередном обновлении ничего не поменяется.
...
Рейтинг: 0 / 0
06.01.2021, 17:30
    #40033892
Toropov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
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
06.01.2021, 17:39
    #40033894
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
Toropov,

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

Сейчас есть Safari - WebKit, Chrome/Opera/YaBrowser/Vivaldi/итд - Blink, Firefox - Gecko. Больше распространенных браузеров нету. У Blink && Gecko один стандарт - WebExtensions, про Safari не знаю.
...
Рейтинг: 0 / 0
06.01.2021, 17:53
    #40033899
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
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
06.01.2021, 19:49
    #40033922
Toropov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
_Vasilisk_, благодарю! Всё работает!
...
Рейтинг: 0 / 0
11.01.2021, 11:25
    #40034823
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта?
Самое надежное - прокси с запретом прямых подлючений или сниффер. Прокси более простой вариант
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Каким образом возможно из своей программы на Delphi поймать открытие конкретного сайта? / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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