Webservertyp herausfinden ?
-
ich habe mir ein Programm heruntergeladen, das in einem IP-Bereich nach bestimmten Webservern sucht und diese auflistet.
Nun möchte ich gerne mehr über das Programm dahinter erfahren.
Ich habe bereits herausgefunden, das wenn ich den Server (die IP) mit der
Indy-Komponente IdIcmpClient auf Port 80 anpinge, der Webserver dahintersteht.
Nur erhalte ich keine Meldung/Infos darüber ob es sich dabei um einen Apache,IIS oder was anderes handelt.- wie kann ich herausfinden welcher Webserver an einer IP auf port 80 anspricht ?
Ich hoffe ihr könnt mir helfen.
Schon jetzt vielen Dank
simon
-
Einen HTTP-Request absetzen und die Response-Header auswerten.
-
Genauere Spezifikationen zu HTTP sind bei http://www.w3c.org zu finden. Vielleicht noch vorweg: Statt GET oder POST zu benutzen empfielt sich für solche Dinge der HEAD request.
-junix
-
hier die Spezifikation der HTTP Requests: http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5
Ich möchte nun das ganze per ClientSocket realisieren, da man da bessere Möglichkeiten hat, als mit z.B. Indy.
Nun habe ich eine Verbindung schon herstellen können mit
ClientSocket1->Host="192.168.10.12"; ClientSocket1->Port=80; ClientSocket1->Open();
Jetzt stelle ich mir die Frage, wie kann ich den HTTP Request an meinen Server abschicken ?
Und wie empfange ich dann die Daten des Servers ?Hoffentlich könnt ihr mir helfen.
-
Es erscheint doch reichlich widersprüchlich, dass du offensichtlich keine Ahnung vom Thema hast (nicht beleidigend gemeint), gleichzeitig aber behauptest, dass du per Socket "bessere Möglichkeiten" als mit Indy hättest.
Was passt dir denn zB. an TIdHTTP::Head nicht?
-
das siehst du ganz richtig, das ich keine Ahnung von der Sache habe, daher bin ich ja hier damit ich ein wenig was lerne
Mit Indy hat bei mir die ganze Sache nicht funktioniert, da es nicht wirklich eine gute Dokumentation (mit Beispiel u.ä.) gibt.
Da diese bei TClientSocket etwas besser ist, dachte ich damit komme ich weiter.
Nun habe ich aber gemerkt, das das auch nicht so einfach ist und hoffe daher auf eure Hilfe.Jetzt habe ich mir nocheinmal TIdHTTP::Head angeschaut und bin immer noch nicht weiter. Irgendwas stimmt mit dem Request nicht.
Hier mein Versuch:IdHTTP1->DoRequest(hmHead,"www.google.de",0,0); Edit11->Text=IdHTTP1->ResponseText;
-
ok, hab des rätsels Lösung
IdHTTP1->Head("http://www.google.de"); Edit11->Text=IdHTTP1->Response->Server;
danke für eure Geduld.
Wie das mit ClientSocket funktioniert würde mich aber dennoch interessieren