![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
прокси
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].