Hallo zusammen,
ich möchte mit einem selbstgeschrieben Proxy-Server Internet-Seiten filtern.
Den bisher geschriebenen Code habe ich aus vielen Beiträgen aus der
DP zusammen-
gesucht (verwende Delphi7 und Indy9):
Delphi-Quellcode:
procedure TfrmMain.IdhttpserverProxyCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Method: TIdHTTPMethod;
Source, Dest: TStream;
Url: AnsiString;
begin
try
AResponseInfo.ContentText := '
';
if Pos('
ups.com', ARequestInfo.Host) = 0
then Exit;
//Nur "ups.com"-Seiten zulassen
try
while idhttpProxy.Tag = 1
do Application.ProcessMessages;
idhttpProxy.Tag := 1;
if ARequestInfo.Command = '
GET'
then Method := hmGet
else if ARequestInfo.Command = '
POST'
then Method := hmPost
else if ARequestInfo.Command = '
HEAD'
then Method := hmHead
else
begin
AResponseInfo.ResponseNo := 501;
Exit;
end;
Source :=
nil;
Dest :=
nil;
if Method <> hmHead
then
begin
AResponseInfo.ContentStream := TMemoryStream.Create;
if Method = hmPost
then Source := ARequestInfo.PostStream;
Dest := AResponseInfo.ContentStream;
end;
Url := '
http://'+ARequestInfo.Host+ARequestInfo.Document;
if Length(ARequestInfo.QueryParams) > 0
then Url :=
Url+'
?'+ARequestInfo.QueryParams;
idhttpProxy.DoRequest(Method,
Url, Source, Dest);
finally
AResponseInfo.ResponseNo := idhttpProxy.Response.ResponseCode;
AResponseInfo.ResponseText := idhttpProxy.Response.ResponseText;
AResponseInfo.RawHeaders.Assign(idhttpProxy.Response.RawHeaders);
idhttpProxy.Tag := 0;
end;
except
end;
end;
Die Prozedur gestattet nur das Laden von Internet-Seiten von Hosts mit "ups.com".
Das funktioniert soweit ganz gut...nur wenn man sich über eine https-Seite anmelden
muß klappt's nicht mehr...
Ich habe schon den
Indy Http-Client und -Server Komponenten einen SSL-IO-Handler hinzugefügt
(habe ich hier irgendwo gelesen) und die SSL-DLLs für
Indy besorgt, aber Zugriffe auf
"https://..." werden völlig ignoriert!?!
Hat jemand eine Idee was fehlt?
Habe von einer
Indy HTTP-Proxy Komponente gelesen - finde ich aber bei mir nicht...