Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

прокси


Страницы:   1 2 3

Petr ©   (2006-11-28 22:50:00) 

как заставить программу работать через мой проксик если в ней нет возможность работать через прокси по умолчанию


хаха   (2007-06-11 17:30:00) [1]

TIEEvents = class(TComponent, IUnknown, IDispatch)
  private
     // Private declarations
   FConnected: Boolean;
    FCookie: Integer;
    FCP: IConnectionPoint;
    FSinkIID: TGuid;
    FSource: IWebBrowser2;
    FStatusTextChange: TIEStatusTextChangeEvent;
    FProgressChange: TIEProgressChangeEvent;
    FCommandStateChange: TIECommandStateChangeEvent;
    FDownloadBegin: TIEDownloadBeginEvent;
    FDownloadComplete: TIEDownloadCompleteEvent;
    FTitleChange: TIETitleChangeEvent;
    FPropertyChange: TIEPropertyChangeEvent;
    FBeforeNavigate2: TIEBeforeNavigate2Event;
    FNewWindow2: TIENewWindow2Event;
    FNavigateComplete2: TIENavigateComplete2Event;
    FDocumentComplete: TIEDocumentCompleteEvent;
    FOnQuit: TIEOnQuitEvent;
    FOnVisible: TIEOnVisibleEvent;
    FOnToolBar: TIEOnToolBarEvent;
    FOnMenuBar: TIEOnMenuBarEvent;
    FOnStatusBar: TIEOnStatusBarEvent;
    FOnFullScreen: TIEOnFullScreenEvent;
    FOnTheaterMode: TIEOnTheaterModeEvent;
  protected
     // Protected declaratios for IUnknown
   function QueryInterface(const IID: TGUID; out Obj): HResult; override;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
     // Protected declaratios for IDispatch
   function GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount, LocaleID:
      Integer; DispIDs: Pointer): HResult; virtual; stdcall;
    function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; virtual; stdcall;
    function GetTypeInfoCount(out Count: Integer): HResult; virtual; stdcall;
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; virtual; stdcall;
     // Protected declarations
   procedure DoStatusTextChange(const Text: WideString); safecall;
    procedure DoProgressChange(Progress: Integer; ProgressMax: Integer); safecall;
    procedure DoCommandStateChange(Command: Integer; Enable: WordBool); safecall;
    procedure DoDownloadBegin; safecall;
    procedure DoDownloadComplete; safecall;
    procedure DoTitleChange(const Text: WideString); safecall;
    procedure DoPropertyChange(const szProperty: WideString); safecall;
    procedure DoBeforeNavigate2(const pDisp: IDispatch; var URL: OleVariant;
      var Flags: OleVariant; var TargetFrameName: OleVariant; var PostData: OleVariant;
      var Headers: OleVariant; var Cancel: WordBool); safecall;
    procedure DoNewWindow2(var ppDisp: IDispatch; var Cancel: WordBool); safecall;
    procedure DoNavigateComplete2(const pDisp: IDispatch; var URL: OleVariant); safecall;
    procedure DoDocumentComplete(const pDisp: IDispatch; var URL: OleVariant); safecall;
    procedure DoOnQuit; safecall;
    procedure DoOnVisible(Visible: WordBool); safecall;
    procedure DoOnToolBar(ToolBar: WordBool); safecall;
    procedure DoOnMenuBar(MenuBar: WordBool); safecall;
    procedure DoOnStatusBar(StatusBar: WordBool); safecall;
    procedure DoOnFullScreen(FullScreen: WordBool); safecall;
    procedure DoOnTheaterMode(TheaterMode: WordBool); safecall;
  public
     // Public declarations
   constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ConnectTo(Source: IWebBrowser2);
    procedure Disconnect;
    property SinkIID: TGuid read FSinkIID;
    property Source: IWebBrowser2 read FSource;
  published
     // Published declarations
   property WebObj: IWebBrowser2 read FSource;
    property Connected: Boolean read FConnected;
    property StatusTextChange: TIEStatusTextChangeEvent read FStatusTextChange write FStatusTextChange;
    property ProgressChange: TIEProgressChangeEvent read FProgressChange write FProgressChange;
    property CommandStateChange: TIECommandStateChangeEvent read FCommandStateChange write FCommandStateChange;
    property DownloadBegin: TIEDownloadBeginEvent read FDownloadBegin write FDownloadBegin;
    property DownloadComplete: TIEDownloadCompleteEvent read FDownloadComplete write FDownloadComplete;
    property TitleChange: TIETitleChangeEvent read FTitleChange write FTitleChange;
    property PropertyChange: TIEPropertyChangeEvent read FPropertyChange write FPropertyChange;
    property BeforeNavigate2: TIEBeforeNavigate2Event read FBeforeNavigate2 write FBeforeNavigate2;
    property NewWindow2: TIENewWindow2Event read FNewWindow2 write FNewWindow2;
    property NavigateComplete2: TIENavigateComplete2Event read FNavigateComplete2 write FNavigateComplete2;
    property DocumentComplete: TIEDocumentCompleteEvent read FDocumentComplete write FDocumentComplete;
    property OnQuit: TIEOnQuitEvent read FOnQuit write FOnQuit;
    property OnVisible: TIEOnVisibleEvent read FOnVisible write FOnVisible;
    property OnToolBar: TIEOnToolBarEvent read FOnToolBar write FOnToolBar;
    property OnMenuBar: TIEOnMenuBarEvent read FOnMenuBar write FOnMenuBar;
    property OnStatusBar: TIEOnStatusBarEvent read FOnStatusBar write FOnStatusBar;
    property OnFullScreen: TIEOnFullScreenEvent read FOnFullScreen write FOnFullScreen;
    property OnTheaterMode: TIEOnTheaterModeEvent read FOnTheaterMode write FOnTheaterMode;
  end;


Levko   (2007-02-01 16:38:00) [2]

Я кстати думал об этом. Как это реализовывают:
1) Перехват футкций Winsock. Так делают FreeCap, SockCap.
   Достоинства: Простота.
  Недостатки: Внедрение влечёт за собой выделение памяти для изменённых DLL. Также очень часто этого ооочень не любят некоторые проги (запакованные ASProtect). Ну про ругательства антивирей и фаерволов я не говорю. Да и тормоза. Запускать программы надо через главное окно "проксификатора" что тоже не очень удобно.
2) Написание своего LSP (Layer service provider) и NSP (Name service provider).  Так делает Proxifier.
Достоинства: Не патчит программы. Запускать программы надо как обычно, а не через главное окно "проксификатора". Работет довольно быстро.
Недостатки: Давольно сложно писать этот драйвер. Для установки LSP нужны права админа. Не работает со службами. (Windows Update например).

Пока юзаю Proxifier. Но есть мысли разобраться и написать "проксификатор". Главное время найти :( Чтоб доки про это почитать...


Eraser   (2006-12-07 03:38:00) [3]

> [38] Petr   (07.12.06 00:43)

читай Джеффери Рихтер "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows", там довольно подробно.

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


Petr   (2006-12-07 00:43:00) [4]

подмена вызовов сетевого API

КАК? надо делать hook? на что? помогите плиз


Eraser   (2006-12-06 22:47:00) [5]

> [36] Petr   (06.12.06 22:41)

все уже сказано в [3].


Petr   (2006-12-06 22:41:00) [6]

ап


Petr   (2006-12-04 00:20:00) [7]


> как я понял, автору требуется заставить другую программу
> работать через свой прокси

так точно!


> Если да, то можно создать программу отлавливающую пакет
> и подменяющую заголовок пакета.

вот ее то и нужно сделать! как??? но правдо не только заголовок но это потом а для начала хоть бы и так!! как это делается?


Eraser   (2006-12-01 18:20:00) [8]

> [30] Alek Aaz   (01.12.06 12:12)


> А мы вроде и делаем СВОЕ приложение и МОЖЕМ использовать
> ДРУГИЕ компоненты Indy.

из

> [0] Petr   (28.11.06 22:50)
> как заставить программу работать через мой проксик если
> в ней нет возможность работать через прокси по умолчанию

и тем более

> нет вы непоняли! я какрас хочу написать программу типа ProxyCap,
> FreeCap...

это не очевидно, как я понял, автору требуется заставить другуюпрограмму работать через свой прокси.


Anatoly Podgoretsky   (2006-12-01 16:50:00) [9]

> Alek Aaz  (01.12.2006 12:12:30)  [30]

> Если да, то можно создать программу отлавливающую пакет и подменяющую заголовок пакета.

А вот это как раз и есть НАТ, а не прокси. Если конечно не углубляться в тонкости терминологии, что такое прокси.


Anatoly Podgoretsky   (2006-12-01 16:48:00) [10]

> Alek Aaz  (01.12.2006 12:12:30)  [30]

Верно но не все, прокси для этого не требуется, требуется НАТ сервер.


Anatoly Podgoretsky   (2006-12-01 16:47:00) [11]

> Petr  (01.12.2006 00:18:28)  [28]

Пакетный файрвол.


Alek Aaz   (2006-12-01 12:12:00) [12]

2 Eraser ©   (30.11.06 15:08) [27]
> > [18] Alek Aaz   (30.11.06 06:11)
> > Ну так просветите для чего и как их использовать? Вроде,
> их можно использовать только в своем приложении и только
> в связке с другими компонентами Indy.
:-)  
А мы вроде и делаем СВОЕ приложение и МОЖЕМ использовать  ДРУГИЕ компоненты Indy.

Как я понял задачу (образно).
Есть программа которая скомпилирована и шлет пакеты на IP адрес 10.1.1.1 А нужно слать пакеты на 192.168.1.1 Изменить IP адрес 10.1.1.1 не представляется возможним.
Господин Petr хочет создать программу - аналог proxy-сервера которая будет перенаправлять запросы на нужный ему IP адрес.
И в данной ветке его интересует как заставить программу посылать пакеты на его прокси программу что впрочем одно и тоже что и подмен пакетов.
Все верно?
Если да, то можно создать программу отлавливающую пакет и подменяющую заголовок пакета.
Кстати, можно попробовать сделать через команду arp -s 10.1.1.1 Нужный:тебе:mac:адрес:машины

Может сработать. Все зависит от реализации сервера.


Reindeer Moss Eater   (2006-12-01 09:12:00) [13]

мне нужен полный контроль над всеми пакетами!!!

Нужен контроль - читай внимательно ветку.


Petr   (2006-12-01 00:18:00) [14]


> Если зашит IP, то спасет фокус с дефолтным шлюзом.

да зашит IP что за фокус??
и идеи отключения от сети не подходять! мне нужен полный контроль над всеми пакетами!!! хочу пропускаю хочу нет в обе стороны в зависимости от содержимого пакетов... вообщем она должна быть в сети!


Eraser   (2006-11-30 15:08:00) [15]

> [18] Alek Aaz   (30.11.06 06:11)


> Ну так просветите для чего и как их использовать? Вроде,
> черным по белому написано:

их можно использовать только в своем приложении и только в связке с другими компонентами Indy.


Reindeer Moss Eater   (2006-11-30 12:33:00) [16]

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

Если зашит IP, то спасет фокус с дефолтным шлюзом.


Anatoly Podgoretsky   (2006-11-30 12:30:00) [17]

> Reindeer Moss Eater  (30.11.2006 12:19:23)  [23]

> А hosts файл уже отменили?
> Или там не имя а адрес прописан?

А hosts он двухнаправленый и прямая и обратная зона одновременно.


Reindeer Moss Eater   (2006-11-30 12:21:00) [18]

Даже если в проге прописан IP, обмануть её очень легко.
Отключаемся от инета и указываем дефолтным шлюзом свою машину со своим проки.
Все.


Reindeer Moss Eater   (2006-11-30 12:19:00) [19]

с тем который в ней прописан! и в ней нет возможности его менять! чего тут непонять то??

А hosts файл уже отменили?
Или там не имя а адрес прописан?


Орион (из универа)   (2006-11-30 11:28:00) [20]


> Alek Aaz   (30.11.06 06:11) [18]
> 2 Орион ©   (29.11.06 10:38) [8]
> >Зря
>
> А что так? :)

А ты вопрос понял? :)
Скорее всего неправильно понял, потому и смотри [9].


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо