Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie funktioniert IdWhoIs (Indy)? (https://www.delphipraxis.net/51219-wie-funktioniert-idwhois-indy.html)

MisterNiceGuy 8. Aug 2005 15:26


Wie funktioniert IdWhoIs (Indy)?
 
Hi, ich versuche die Informationen, die man einer domain entlocken kann in ein Memo zu laden.
Dazu wollte ich die Indykomponenten benutzen, allerdings scheitere ich seit etwa einer Stunde kläglich am Code. Ich hab mir schon die 11Mb große Dokumentation von Indy 10 runtergeladen, aber dadurch komme ich auch nicht wirklich weiter.
Mit dem Code
Delphi-Quellcode:
  idwhois1.Host := 'www.google.de';
  idwhois1.Connect;
  showmessage(idWhois1.WhoIs('www.google.de'));
bekomme ich andauernd eine Fehlermeldung.
(Socket Error # 10060. Connection timed out) :twisted:

Kann mir einer helfen? Bestimmt :)

MfG

dahead 8. Aug 2005 15:28

Re: Wie funktioniert IdWhoIs (Indy)?
 
dir ist klar, dass du nicht verbunden bist, und deshalb den header nicht auslesen kannst, oder?

MisterNiceGuy 8. Aug 2005 15:30

Re: Wie funktioniert IdWhoIs (Indy)?
 
hö? Aber ich connecte doch!? :shock:

dahead 8. Aug 2005 15:35

Re: Wie funktioniert IdWhoIs (Indy)?
 
wenn du die fehlermeldung kriegst, dass beim verbinden eine zeitüberschreitung aufgetreten ist, bist du wohl nicht verbunden.

Delphi-Quellcode:
if TIDWhoIs.Connected then

SubData 8. Aug 2005 15:56

Re: Wie funktioniert IdWhoIs (Indy)?
 
Gib bei Host mal whois.internic.net ein...

MisterNiceGuy 8. Aug 2005 16:02

Re: Wie funktioniert IdWhoIs (Indy)?
 
Keine Chance, immer das gleiche...
Und welche Funktion hat der Host? Ist das die Domain über die ich etwas in Erfahrung bringen will?

MisterNiceGuy 8. Aug 2005 17:11

Re: Wie funktioniert IdWhoIs (Indy)?
 
Hm jetzt bekomme ich den Fehlertyp 11004... Immerhin scheint er nun zu verbinden, aber wie gehts weiter? :/

dahead 8. Aug 2005 17:22

Re: Wie funktioniert IdWhoIs (Indy)?
 
Zitat:

Zitat von SubData
Gib bei Host mal whois.internic.net ein...

die ist bereits in TIDWhoIs eingebaut:

Delphi-Quellcode:
procedure TIdWHOIS.InitComponent;
begin
  inherited;
  Host := 'whois.internic.net';   {Do not Localize}
  Port := IdPORT_WHOIS;
end;
d.h. das kann auch gar kein anderes resultat bringen.

Zitat:

Hm jetzt bekomme ich den Fehlertyp 11004... Immerhin scheint er nun zu verbinden, aber wie gehts weiter? :/
http://www.delphipraxis.net/internal...t.php?p=206719
http://www.delphipages.com/threads/t...=98878&G=98878 (ist zwar ftp aber selbes problem)
http://www.google.de/search?hl=de&q=...le-Suche&meta=

versuch doch mal die ip statt des hosts zu verwenden.

MisterNiceGuy 8. Aug 2005 17:37

Re: Wie funktioniert IdWhoIs (Indy)?
 
Vielleicht ne dumme Frage, aber wie bekomme ich die IP der Adresse raus?

dahead 8. Aug 2005 23:06

Re: Wie funktioniert IdWhoIs (Indy)?
 
Stichwort DNS: http://de.wikipedia.org/wiki/Domain_Name_System

bzw. um das herauszubekommen in der Eingabeaufforderung die Befehle ping bzw. tracert verwenden.

bsp: ping www.google.de / tracert www.google.de

tn249 9. Aug 2005 01:02

Re: Wie funktioniert IdWhoIs (Indy)?
 
vielleicht auch mal ne andere adresse als google verwenden, immerhin verweigert google beim idhttp mit der standarteinstellung für client(oder wie das heißt) den datantransfer

Gruß
tn249

jensw_2000 9. Aug 2005 01:05

Re: Wie funktioniert IdWhoIs (Indy)?
 
So sollte es klappen ... funktioniert jedenfalls bei mir ..

Delphi-Quellcode:
  try
    idWhois.Host:='whois.internic.net';
    idWhois.ASCIIFilter:=true;
    memo1.Lines.Text:=idWhois.WhoIs('borland.com');
  finally
    idWhois.Disconnect; // nur sicherheitshalber disconnecten
    idWhois.DisconnectSocket; // nur sicherheitshalber disconnecten
  end;

MisterNiceGuy 9. Aug 2005 12:25

Re: Wie funktioniert IdWhoIs (Indy)?
 
@jensw_2000: Welche IndyVersion nutzt du? Ich habe es mit 10 probiert, aber es ging immernoch nicht. Werd jetzt mal Indy 9 ausprobieren...

MisterNiceGuy 9. Aug 2005 12:34

Re: Wie funktioniert IdWhoIs (Indy)?
 
ah mit Indy 9 gehts :) Aber ich bekomme nur Informationen der Art:

Domain: www.web.de
Status: Invalid

Nichts über Admin, Beistzer oder anderes :-/

mirage228 9. Aug 2005 13:02

Re: Wie funktioniert IdWhoIs (Indy)?
 
Hi,

soweit ich weiss, musst Du das "www" nicht mit angeben.

mfG
mirage228

MisterNiceGuy 9. Aug 2005 13:10

Re: Wie funktioniert IdWhoIs (Indy)?
 
Also ich finde keine Funktion, die mir mehr Informationen ausgibt als den DomainName, immerhin bekomme ich jetzt schon den Status connected, dank Mirage ;)

jensw_2000 9. Aug 2005 15:12

Re: Wie funktioniert IdWhoIs (Indy)?
 
Schau mal in deinen 2. Thread z diesem Thema :zwinker:

Zitat:

WHOIS ein ein Protokoll um Informationen zu einer Domain zu sammeln.
Damit bekommst du relativ viele Infos über Betreiber, Admins, Server, DNS Servern usw.

Eine WHOIS Abfrage für DE Domains kannst du z.B. bei www.denic.de machen.
www.ripe.net und www.internic.net sind gute Adressen für .COM, .ORG und .NET Domains.

Dumm ist, das kein WHOIS Server alle Domains kennt ...
Habe zumindest noch keinen gefunden ...

Die Whois Abfragen funktionieren bei vielen Anbietern nur noch per HTTP.
Der eingentlicht WHOIS Protokoll ist auf vielen Servern deaktiviert, weil einige "Dussels" den Dienst für SPAM-Daten-Beschaffung und ähnlichen Unfug missbraucht haben...

[edit]
Mit idWhois gehts übrigens so ...

Quellcode: markieren
try
idWhois.Host:='whois.denic.de';
idWhois.ASCIIFilter:=true;
memo1.Lines.Text:=idWhois.WhoIs('google.de');
finally
idWhois.Disconnect; // nur sicherheitshalber disconnecten
idWhois.DisconnectSocket; // nur sicherheitshalber disconnecten
end;



Der Denic Whois Server gibt jedoch nur noch per HTTP detailierte Infos zurück.
Über WHOIS bekommst du nur noch die Info, ob eine Domain "freigeschaltet" ist.

[/edit]

Ich hoffe es hilft dir trotzdem weiter.
Zur Not kann man ja immernoch parsen

Mit folgendem Code bekomme ich brauchbare Ergebnisse ...

Delphi-Quellcode:
  try
    idWhois.Host:='whois.internic.net';
    idWhois.ASCIIFilter:=true;
    memo1.Lines.Text:=idWhois.WhoIs('borland.com');
  finally
    idWhois.Disconnect; // nur sicherheitshalber disconnecten
    idWhois.DisconnectSocket; // nur sicherheitshalber disconnecten
  end;
Code:
Whois Server Version 1.3

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to [url]http://www.internic.net[/url]
for detailed information.

   Domain Name: BORLAND.COM
   Registrar: EMARKMONITOR INC. DBA MARKMONITOR
   Whois Server: whois.markmonitor.com
   Referral URL: [url]http://www.markmonitor.com[/url]
   Name Server: NS.BORLAND.COM
   Name Server: NS1.BORLAND.COM
   Name Server: NS2.BORLAND.COM
   Status: REGISTRAR-LOCK
   Updated Date: 22-jul-2005
   Creation Date: 11-jan-1991
   Expiration Date: 10-jan-2006


>>> Last update of whois database: Tue, 9 Aug 2005 02:00:44 EDT <<<

jensw_2000 9. Aug 2005 15:17

Re: Wie funktioniert IdWhoIs (Indy)?
 
Eine WhoIs Abfrage über www.denic.de gibt zu WEB.DE übrigens folgende Infos ...


Code:
Domaindaten
   Domain: web.de
   Letzte Aktualisierung: 16.04.2004 

Domaininhaber
Der Domaininhaber ist der Vertragspartner der DENIC und damit der an der Domain materiell Berechtigte.

  Name und Adresse: WEB.DE AG
Amalienbadstrasse 41
D-76227 Karlsruhe
Germany
 

Administrativer Ansprechpartner
Der administrative Ansprechpartner (admin-c) ist die vom Domaininhaber benannte natürliche Person, die als sein Bevollmächtigter berechtigt und gegenüber DENIC auch verpflichtet ist, sämtliche die Domain web.de betreffenden Angelegenheiten verbindlich zu entscheiden.

   Name: Michael Greve
   Kontakttyp: PERSON
   Adresse: WEB.DE AG
Amalienbadstrasse 41 
   PLZ: 76227 
   Stadt: Karlsruhe
   Land: DE



Technischer Ansprechpartner, Zonenverwalter
Der technische Ansprechpartner (tech-c) betreut die Domain web.de in technischer Hinsicht.

Der Zonenverwalter (zone-c) betreut die Nameserver der Domain web.de.

   Name: Hostmaster Cinetic GmbH
   Kontakttyp: PERSON
   Adresse: Cinetic GmbH
Michael Greve / Hr. Stoll / Hr. Merz
Amalienbadstr. 41 
   PLZ: 76227 
   Stadt: Karlsruhe
   Land: DE
   Telefon: +49 721 94329 0 
   Telefax: +49 721 94329 22 
   E-Mail: [email]hostmaster@cinetic.de[/email]



Technische Daten
   Nameserver: nsx1.cinetic.de.
   Nameserver: nsx2.cinetic.de.

MisterNiceGuy 9. Aug 2005 18:13

Re: Wie funktioniert IdWhoIs (Indy)?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also beide anderen WhoIs-Server ergeben nun vernünftige Ergebnisse, aber whois.denic.de funktioniert nicht!!! :wall:

Edit: Gibst du als host: whois.denic.de ein?

Edit2: Könnt ihr mal mein Programm testen bitte? Mit den Einstellungen:

Domain: web.de
WhoIs-Server: whois.denic.de

Danke :)

jensw_2000 9. Aug 2005 19:30

Re: Wie funktioniert IdWhoIs (Indy)?
 
1. Ja, der Server whois.denic.de ist richtig

1a) Der Server funktioniet richtig, ebenso wie dein Progamm.
Die Daten-Ausgabe über das "klassische" Whois Protokoll wurden bei denic vor ca. einem Jahr jedoch vollständig gesperrt um Missbrauch der Daten zu vermeiden. whois.denic.de gibt dir nur noch den Domainnamen und den Status "Connect" für "Domainname vergeben" und "Free" für "Domainname verfügbar" zurück.

1b) Du kannst die Infos immernoch vollständig auf der Website der DENIC abfragen, nachdem du die Nutzungsbedingungen akteptiert hast. Eventuell kannst du ja für deutsche Domains eine automatisierte Abfrage der WHOIS Daten per http bauen und die Rückgabedaten aus den HTML Code herausfischen.
Das würde ich dann aber mit idHTTP machen und nicht über TWebBrowser. idHTTP ist nach meinen Tests mehr als 4 mal so schnell und daher zum Parsen perfekt geeignet.

2. Dein Pogramm funktioniert super :thumb:

Schöne Grüße,
Jens

:hi:

MisterNiceGuy 9. Aug 2005 19:46

Re: Wie funktioniert IdWhoIs (Indy)?
 
oh danke, das ist nett :) Aber ich bin halt schon ein bissl traurig, dass also somit keine Abfrage (de-Adressen) über mein Programm möglich ist. :(

Kennst jemand vielleicht noch einen anderen Whois-Server für .de-Adressen?

Ursprünglich ist das Programm ja dazu da Adressen von Mario Dolzer zu erkennen und den User davor zu warnen, und der hat ja nun mal fast ausschließlich .de-Adressen.

jensw_2000 9. Aug 2005 21:18

Re: Wie funktioniert IdWhoIs (Indy)?
 
Das könnte ggf. interessant für dich sein.
http://www.iks-jena.de/cgi-bin/whois

Das Perl Script kann als OS heruntergeladen werden. (GPL)

In "Whois.pm" steht, der das Prog für DE Domains den whois.denic.de benutzen soll.


Ausschnitt aus whois.pm von Erik Heinz <erik@iks-jena.de>
-----------------------------------------------------------------------------------------------
'com' => 'whois.internic.net',
'de' => 'whois.denic.de', 'edu' => 'whois.educause.net',
'ee' => 'whois.eenet.ee',
'es' => 'https://www.nic.es/esnic/servlet/WhoisControllerHTML?tipo=dominio&dominio=%D',
-----------------------------------------------------------------------------------------------

...oder baue dir einfach flink einen HTML Parser und nutze die o.A. Website direkt zur Whois Abfrage.
Die schreiben auf ihrer Website nichts davon, das Parsen unerwünscht oder untersagt ist ...

MisterNiceGuy 9. Aug 2005 21:40

Re: Wie funktioniert IdWhoIs (Indy)?
 
Danke, die Tipps sind echt hilfreich! :) Ich hab mir mal die Dokumentation zu whois.denic.de durchgelesen und da steht, dass man per Parameterübergabe auch mehr Informationen herausholen kann. Leider akzeptiert die Indykomponente keine Parameter...

Edit: Das mit der Website ist schwierig, ich benutze Delphi 7 personal, da ist so weit ich weiß kein Webbroser drin.

jensw_2000 9. Aug 2005 23:03

Re: Wie funktioniert IdWhoIs (Indy)?
 
Warum nicht einfach über idHTTP ?

Delphi-Quellcode:
function GetWhoisByWeb(Domain:String):String;
// Das Parser Gründgerüst habe ich aus der DP, Autor leider unbekannt
// Diese Funktion nutz HTTP Dienste von [url]www.iks-jena.de[/url]
// 
var
  idHTTP:TidHTTP;
  ParamData : TStringStream;
  s:String;
  f:Textfile;
begin
  ParamData := TStringStream.Create('');

  //Result initialisieren
  Result:='';
 
  // idHTTP dynamisch erzeugen
  idHTTP:=TIDHTTP.Create(nil);

  try
    // Parameter search=erstellen und mit Domainnamen versehen
    ParamData .WriteString('search=' + Domain);

    // Post wie von einer HTML-Form simulieren
    IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';

    // Ansender = Website
    IdHTTP.Request.Referer := 'http://www.iks-jena.de/cgi-bin/whois';

    // Bin mir nicht sicher ob der Rest gebraucht wird... aber so machts der Mozilla Firefox
    // sollte also nicht verkehrt sein :)
    IdHTTP.Request.AcceptCharset := 'ISO-8859-1,utf-8;q=0.7,*;q=0.7';
    IdHTTP.Request.AcceptEncoding := 'gzip,deflate';
    IdHTTP.Request.AcceptLanguage := 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';

    try
      // idHTTP (Indy7) aufrufen und Suche posten
      s:=IdHTTP.Post('http://www.iks-jena.de/cgi-bin/whois', ParamData);
    except
      on e:Exxeption do
        s:='Schwehrer Fehler beim Absenden des Befehls:'+#13#10+e.message;
    end;
   
    // gewünschten Part aus der "Result-Website" ausschneiden
    if pos('
<PRE>',s)<>0 then
    begin
       S:=Copy(s,Pos('
<PRE>',s)+9,length(s));
       s:=Copy(s,1,pos('</PRE>',s)-1);
    end
    else begin
      // oder Fehler ausgeben
      s:='Prüfung nicht möglich!'+#13#10+
         'Entweder sind Ihre Eingaben unvollständig oder'+#13#10+
         'es besteht keine Verbindung zu http://www.iks-jena.de'        ;
    end;

  finally
    // idHTTP freigeben
    FreeAndNIL(idHTTP);
  end;

  Result:=s;

end;

Aufruf:

Delphi-Quellcode:
TForm1.Button1Click(sender:tobject);
begin
  Memo1.lines.text:=GetWhoisByWeb('web.de');
end;

MisterNiceGuy 9. Aug 2005 23:50

Re: Wie funktioniert IdWhoIs (Indy)?
 
Klasse funktioniert, vielen Dank! Hast was gut :mrgreen:

jensw_2000 10. Aug 2005 00:30

Re: Wie funktioniert IdWhoIs (Indy)?
 
Naja ...
so ganz nicht :roll:

Man hat offensichtlich nur eine beschränkte Anzahl Abfragen zur Verfügung ...

Code:
%REFERRAL START
Connection refused; access control limit reached.
%%REFERRAL END

MisterNiceGuy 10. Aug 2005 01:29

Re: Wie funktioniert IdWhoIs (Indy)?
 
weißt du nach wievielen Anfragen das kommt? Also bei mir müssen es heute abend an die 50 gewesen sein...

Übringes! Das Programm ist fertig :D Hab mich lange nicht mehr so gefreut, dass es endlich funktioniert hat!!

Ich hänge es mal an...

Edit1: Ich mach einen neues Thema auf und lösche das Programm hier.

jensw_2000 10. Aug 2005 02:36

Re: Wie funktioniert IdWhoIs (Indy)?
 
Zitat:

Man hat offensichtlich nur eine beschränkte Anzahl Abfragen zur Verfügung ...
Sorry, das war ein Fehler von mir.
Habe versehentlich das falsche "Spielprojekt" erwischt.

Die besagte Meldung kam noch unter Verwendung von idWHOIS.

Mit der beschriebenen Variante funktionierts sauber.
Ich habe bisher auch nur knapp 20 Testabfragen gemacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 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