Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHTTPProxy mit Proxy? (https://www.delphipraxis.net/129905-idhttpproxy-mit-proxy.html)

lowF 27. Feb 2009 16:00


idHTTPProxy mit Proxy?
 
Hi!

Der Titel klingt vielleicht ein bisschen verwirrend.

Was ich versuche ist Folgendes:

Ich lasse auf meinem Rechner einen HTTPProxy von Indy (10) laufen. Der Sinn soll sein, dass alle Rechner in meinem Netzwerk nur über meinen PC als Proxy ins Internet kommen. So weit erstmal kein Problem.

Jetzt ist nur die Sache, dass ich selber nur über einen Proxy (HTTP) ins Internet komme. Also hat man da ja 2 Proxies hintereinander. (Wie) Kann ich das mit Indys HTTPProxy oder anderen IndyTools hinbekommen?

Bei IdHTTPProxy gibt es keine Properties für Proxy.

MfG
lowF

Edit:
Nur so theoretisch: Würde das auch mit 3 (oder mehr) Proxies gehen?

lowF 9. Mär 2009 12:09

Re: idHTTPProxy mit Proxy?
 
Ich push erstmal vorsichtig.

Habe gelesen, dass es Realisierungen mit IdHTTPServer und IdHTTP gibt, zusammen zu einem Proxy geformt. Gibt es dafür Code-Beispiele?

Assertor 9. Mär 2009 15:23

Re: idHTTPProxy mit Proxy?
 
Hi lowF,

Zitat:

Zitat von lowF
Ich push erstmal vorsichtig.

Und ich antworte mal vorsichtig :)

Zitat:

Zitat von lowF
Habe gelesen, dass es Realisierungen mit IdHTTPServer und IdHTTP gibt, zusammen zu einem Proxy geformt. Gibt es dafür Code-Beispiele?

Nein, leider nicht.

Aber was für ein Proxy läuft denn auf Deinem Rechner? Wenn es ein Socks4/5 Proxy ist, könntest Du das Event OnHTTPBeforeCommand des IdHTTPProxyServer nutzen:

Delphi-Quellcode:
procedure TForm1.IdHTTPProxyServer1HTTPBeforeCommand(
  AContext: TIdHTTPProxyServerContext);
var
  SocksInfo: TIdSocksInfo;
begin
  AContext.OutboundClient.IOHandler := TIdIOHandlerStack.Create(AContext.OutboundClient);
  SocksInfo := TIdSocksInfo.Create(AContext.OutboundClient);
  SocksInfo.Host := '';
  SocksInfo.Port := 8080; // der Port des anderen Proxy
  SocksInfo.Authentication := saNoAuthentication;
  SocksInfo.Version := svSocks5; // oder 4 oder 4A
  AContext.OutboundClient.Socket.TransparentProxy := SocksInfo;
end;
Falls Dein Socks-Proxy noch Anmeldedaten braucht, muß das entsprechend hinterlegt werden. Das funktioniert aber nur für Socks-Proxy wie gesagt.

Man könnte sonst auch ein TCP/UDP PortMapper nutzen, um einfach die Daten durchzureichen - aber das ist halt kein echter Proxy.

Prinzipiell ist der IdHTTPProxyServer "nur" ein einfacher Proxy-Server, solche Erweiterungen sind Sache des Programmierers. Kaskadierende Proxies sind auf jeden Fall von Haus aus nicht dabei. Die Proxy Unterstützung in den IdHTTP und IdFTP Clients ist übrigens ein anderer Ansatz, der die (häufige) Benutzung von Proxies bei den Client-Komponenten vereinfacht.

Gruß Assertor

lowF 15. Mär 2009 16:23

Re: idHTTPProxy mit Proxy?
 
Danke für die Antwort :D

Bei meinem Proxy kann ich das Event OnHTTPBeforeCommand benutzen.

Habe mir mal deinen Code angesehen und versucht, einigermaßen die Funktion zu verstehen.

Was genau passiert in der Zeile
Delphi-Quellcode:
AContext.OutboundClient.Socket.TransparentProxy := SocksInfo;
Wird hier nur die Zieladresse/Port/usw. von meinem HTTPRequest verändert?

MfG
lowF

sx2008 15. Mär 2009 16:57

Re: idHTTPProxy mit Proxy?
 
Du könntest die Software Privoxy einsetzen.
Privoxy ist ein Proxyserver, der die Anfragen an einen weiteren Proxyserver weiterleiten kann.
Zusätzlich kann Privoxy Werbeseiten, Popups und andere "Schweinereien" ausfiltern (das ist eigentlich seine Hauptaufgabe).

Assertor 16. Mär 2009 10:06

Re: idHTTPProxy mit Proxy?
 
Zitat:

Zitat von lowF
Was genau passiert in der Zeile
Delphi-Quellcode:
AContext.OutboundClient.Socket.TransparentProxy := SocksInfo;
Wird hier nur die Zieladresse/Port/usw. von meinem HTTPRequest verändert?

Ja, die SocksInfo enthält die entsprechenden Informationen, die dann durch die o.g. Zuweisung für die ausgehende Anfrage verwendet werden. Dadurch wird alles durch diesen Proxy geleitet. Leider ist dies hierbei nur für Socks-Proxy möglich.

Gruß Assertor


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz