Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.15;
Скачать: CL | DM;

Вниз

Замена данных отправляемых при коннекте к серверу (тип браузера, сисетмы и т.д.)   Найти похожие ветки 

 
demonyca   (2002-02-03 03:39) [0]

Как можно учуществить замену данных отправляемых при коннекте к серверу (тип браузера, системы, языка ОС и т.д.)


 
demonyca   (2002-02-03 04:13) [1]

я понимаю, что это возможно сделать с помощью сокетов, но как прикруть это к тому же TWebBrowser?


 
Ghost. ©   (2002-02-03 14:35) [2]

Как прикруить не знаю, но цель должна оправдываь седства, можешь сделать свой прокси пехваывать запрос и переделываь его


 
demonyca   (2002-02-03 16:12) [3]

А где нибудь можно посмотреть хоть примерно как это делать?


 
Ghost. ©   (2002-02-03 16:34) [4]

Вот вартиант обработки того, что прислал бртаузер

//Получение данных от броузера и отправка их на HTTP-сервер
procedure TClientThread.LocalSocketDataAvailable(Sender:TObject;Error:Word);
var Cmd,LeftPart,RightPart:string;
i:Integer;
begin

try
FCount:=FLocalSocket.Receive(@FBuffer, SizeOf(FBuffer));//Получение от броузера
MainForm.Memo.Lines.Add("Addr "+FLocalSocket.PeerAddr);
MainForm.Memo.Lines.Add("Proto "+FLocalSocket.GetXPort);

i:=0;
While i<>10 do
begin
inc(i);
beep;
end;
//FLocalSocket.OnDataSent:=LocalSocketDataSent;//Эта процедура будет вызвана
//FLocalSocket.SendStr("<Body> Error!<BR>Вы не подключены к Internet</body>");
//Release;
//Exit;

except
end;

IF FCount<=0 then EXIT;//Ничего не принято от броузера, защита

//Броузер отдал запрос и ждет ответ (или выпадет по таймауту)
//С этого момента в FBuffer находится полный запрос броузера.
//Можно анализировать, изменять...

//В данном случае выделяем из запроса URL, HOST, команду,
//а также пишем на экран и в LOG

//Перенос буфера в строку
SetLength(FBufStr,FCount);MOVE(FBuffer,FBufStr[1],FCount);

//Выделение URL
FURL:=COPY(FBufStr,POS(" ",FBufStr)+1,LENGTH(FBufStr));
FURL:=COPY(FURL,1,POS(" ",FURL)-1);

//выделене имени хоста
FHost:=COPY(FURL,8,LENGTH(FURL));
FHost:=COPY(FHost,1,POS("/",FHost)-1);

//выделение запроса (GET,HEAD,POST,...)
Cmd:=COPY(FBufStr,1,POS(" ",FBufStr));
FBufStr:=COPY(FBufStr,LENGTH(Cmd),LENGTH(FBufStr));

FBufStr:=COPY(FBufStr,LENGTH("http://")+2,Length(FBufStr));
FBufStr:=COPY(FBufStr,POS("/",FBufStr)+1,LENGTH(FBufStr));

FBufStr:=Cmd+"/"+FBufStr;

FListMessage:=FUrl;
SYNCHRONIZE(UpdateList);//Обновление видимого списка запросов

FMemo3Msg:="---"+TimeToStr(NOW)+" Запрос программы "+IntToStr(FThreadUniqueID)+"----------"#13#10+FBufStr;
SYNCHRONIZE(UpdateMemo3);//Добавление в видимый список запросов/ответов

FRemoteSocket.OnDataAvailable := RemoteWSocketDataAvailable;//Укзание на процедуру приема данных от HTTP-сервера
FRemoteSocket.MultiThreaded := TRUE;
FRemoteSocket.proto:="tcp";

//Создать запрос на основе @Buffer и SizeOf(Buffer)
try
FRemoteSocket.Addr:=FHost;
FRemoteSocket.Port:="80";
except
RELEASE;//Сокет не создан, это внутренняя ошибка клиента
end;

FRemoteSocket.OnSessionConnected:=RemoteSocketConnect;//Указание на процедуры
FRemoteSocket.OnSessionClosed := RemoteSocketSessionClosed;//при CONNECT и при CLOSESESSION

//Имеем данные к отправке на HTTP сервер (находятся в FBuffer)
IF (NOT (FRemoteSocket.State=wsConnected))
then FRemoteSocket.Connect
else FRemoteSocket.Send(@FBuffer,FCount);
end;




Страницы: 1 вся ветка

Текущий архив: 2002.04.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-46501
Nazya
2002-03-07 14:29
2002.04.15
Местера помогите с сервисом (нужен исходник)


1-46408
BofA
2002-04-02 15:29
2002.04.15
Как прочитать строку из файла


3-46227
aw
2002-03-22 16:47
2002.04.15
SQL вешает программу.


1-46407
Beginner
2002-03-30 15:44
2002.04.15
Не знаю технологии


1-46308
Miron12
2002-04-03 13:49
2002.04.15
Средства отладки приложений под винды