Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Proxy Server erstellen (https://www.delphipraxis.net/78200-proxy-server-erstellen.html)

dominikkv 30. Sep 2006 20:27


Proxy Server erstellen
 
hi
ich bin grad dabei mir delphi selber beizubringen und bin grad an meinem ersten "richtigen" programm :mrgreen:
dieses programm soll den quellcode aus einer Internet-seite die in meinem FireFox oder Opera aufgerufen ist auswerten. um an den quellcode ranzukommen hab ich mir gedacht ich erstelle ein proxy-server, mein browser ruft die seiten über den proxy auf und ich kann den quelltext rauslesen.

nun leider hab ich keine ahnung wie ich das it dem proxy anstellen soll :gruebel:

ich habe Turbo Delphi 2006.
ich denke indy wird bei dem proxy eine rolle spielen, ich hab auch bei der installation von Turbo Delphi angegeben das er Indy 10 verwenden soll, allerdings gibt es keine Objekte von Indy die ich auf die Form plazieren kann...oder verwendet man indy anders und man brauch keine objekte auf der form?

ich bin für jeden vorschlag wie ich ich ein proxy erstellen kann dankbar :cheers:
mfg.dominik

flossinger 1. Okt 2006 07:08

Re: Proxy Server erstellen
 
hi,

es kommt anscheinend immer drauf an, wie viel man selbst machen will und wieviel man auf die Arbeit anderer zurückgreifen möchte. Jeder hat da sein bevorzugtes Niveau, das sich auch mit der Zeit verändern kann. Ich persönlich vermeide vorgefertigte Dinge wie die indies.

Meinen proxy hab ich mit tserversocket und tclientsockets geschrieben. Angefangen habe ich so, dass ich den Proxyserverteil auf port 80 lauschen lassen hab und mir angesehen hab, wie die requests aussehen, wenn ich im Browser den proxy 127.0.0.1:80 einstelle. Dann habe ich für jede proxyserverconnection ein clientsocket erstellt und die requests hinaus und responses herein weiter geleitet. Der Nächste Schritt war, nicht nur den Verbindungsaufbau, sondern auch den Verbindungsabbau zu managen.

Inzwischen kann ich recht komplexe Seiten wie http://derstandard.at/ über local Proxy fehlerfrei ansehen. Fertig ist das Ding aber noch lange nicht.

Wichtig ist vor allem, das das Geschehen im Programm detailliert und übersichtlich protokolliert wird. Das mache ich auf einem Memo. So erkennst du dann die Fälle, die das Programm noch nicht beherrscht, und kannst die nötigen Massnahmen treffen. Einer dr Vorteile davon, auf socket Basis zu arbeiten ist, dass man das Handling neuer Sonderfälle jederzeit selbst nachrüsten kann. Man ist nicht auf die Entwicklerarbeit anderer angewiesen, und braucht sich nicht in die Programme anderer einarbeiten.

viel spass mit deinem Vorhaben,
der Flossinger

dominikkv 1. Okt 2006 09:04

Re: Proxy Server erstellen
 
:drunken: :spin:

hi :thumb:
danke für deine antwort.
hört sich ja schon mal gut an.
leider hab ich nicht so viel ahnung wie das mit dem einstellen und weiterleiten etc geht :drunken:
ein tserversocket und tclientsocket hab ich zwar nicht gefunden dafür ein ttcpserver und ttcpclient.
ist das das gleiche?

und...wozu brauch ich den client?
ist es nicht so das der browser eine seite an meinen server anfordert, dieser sich die seite aus dem inet holt und dan dem browser weitergibg?

naja und dann noch...wie lass ich meinen server "lauschen" (wie du unten beschrieben hast)?

mfg.dominik

flossinger 1. Okt 2006 13:05

Re: Proxy Server erstellen
 
Hallo Dominik,

ein Proxy ist eine recht kompexe Angelegenheit. Nachdem deine Fragen mehr auf die Grundlagen abzielen, solltetst du dir vielleicht überlegen, ob du nicht vorher ein paar einfachere Projekte erstellst. Teletypechat, Downloader oder http Fileserver wären ein guter Einstieg in die Materie.

ttcpserver und -client kenne ich nicht. Kann dir daher nicht sagen, ob die ähnlich zu programmieren sind wie tserversocket und tclientsocket.

Der serverteil des proxy kann sich KEINE Seite aus dem Internet holen. Der Serverteil kann nur auf der Verbindung antworten, die der Browser aufgenommen hat, um die Seite anzufordern. Im Proxy Programm muss zu dieser Verbindung ein client socket erstellt werden. Da drüber wird zum HTTP server im Internet eine Verbindung aufgebaut und die Seite angefordert. Der http server antwortet, der clientsocket empfängt, die Antwort wird dem Serverteil des proxy übergeben und auf der ursprünglichen Connection wird sie dem Browser geschickt, der ja dort immer noch auf die Antwort wartet.

Als nächstes kommt der Browser drauf, dass da duzende Grafiken auf der Webseite eingebettet sind und er schickt gleich ein paar Anforderungen parallel raus. Die Grafiken liegen auf dem selben host wie der html text der Seite oder auch nicht. Also bestehenn auf dem serverteil des proxy mehrere connections, für die jeweils clientsockets erstellt werden, um die Anforderungen weiter zu leiten. Die Anforderungen und Antwoten sollen natürlich parallel gehandhabt werden, damit der arme Betrachter am Browser nicht zu lange auf die Seitendarstellung warten muss.

Der Server lauscht, wenn du seine Portnummer definierst und ihn aktivierst.

serversocket1.Port:=80;
serversocket1.Open;

grüsse,
der flossinger

dominikkv 1. Okt 2006 13:49

Re: Proxy Server erstellen
 
aha -.-

ich hab mir jetzt borland developer studio 2006 runtergeladen und da kann ich jetzt indy benutzen...ich glaub ich machs mit indy.

hab TIdHTTPProxyServer auf Form1 plaziert und im FF den proxy eingetragen und siehe da... klappt auf anhieb. :mrgreen:

allerdings hab ich ein neues problem ...
hier mal der quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer,
  IdCmdTCPServer, IdHTTPProxyServer;

type
  TForm1 = class(TForm)
    IdHTTPProxyServer1: TIdHTTPProxyServer;
    procedure IdHTTPProxyServer1Connect(AContext: TIdContext);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IdHTTPProxyServer1Connect(AContext: TIdContext);
begin
 showmessage ('connected')
end;

end.
Fehlermeldung:

Zitat:

[Pascal Fehler] Unit1.pas(13): E2003 Undefinierter Bezeichner: 'TIdContext'

mkinzler 1. Okt 2006 13:51

Re: Proxy Server erstellen
 
Erweitere die uses mal um IdContext


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.

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