[PHP/MySQL] Wie funktionieren "gelöschte Domains" - Systeme?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

ich habe mal wieder eine Frage, wie könnte es auch anders sein. ;)
Im Netzt stolpert man ja immer wieder über verschiedene Websites, die gelöschte Domains listen, beispielsweise https://www.domainannounce.com

Aber wie funktionieren solche Systeme?

Meine Vermutung ist:

- eine Datenbank mit Domains existiert (Frage 1: Woher stammen diese Datenbanken? Crawler, die selbstgeschrieben sind, open source?
- ein System läuft durch und überprüft bei den Domains, ob sie frei geworden sind oder nicht. (Frage 2: Cronjob oder Software? Und wie wird das überprüft?)
- freie Domains werden in die DB eingetragen

Könnte das vom System her so passen oder bin ich völlig auf dem Holzweg?

Danke ;)
 
Zuletzt bearbeitet:
Vom Prinzip her koennte das Alles stimmen, auch wenn ich nicht glaube,dass eine der Registrierungsstellen ganze Datenbanken rausgibt.

Aber wenn du dich mal informierst, wer fuer die Verwaltung der Domains zustaendig ist, ist ja klar, dass man an sich nur via Script deren Anfrageformulare auslesen muss.

Es kann sein, dass "große Subunternehmer" bspw. der DENIC, sowas wie United-Domains, da schon direkte Datenbanken beziehen kann bzw. anderweitige Schnittstellen nutzt, fuer "Normalsterbliche" waere mir nicht bekannt, dass solche existieren.

Die von dir verlinkte Website hat ja primaer nur ein Eingabefeld, und nach Eingabe koennen sie ja direkt bei dem Whois Dienst der jeweiligen NIC anfragen, ob frei, und die ganzen Pagerank Spielererien sind ja wieder ein anderes Thema.

Fuer eine Ueberwachung, wann welche Domains freiwerden, muesste man natuerlich dann eigene Datenbanken pflegen, kannst ja mal anfragen, wie genau die das machen ;)
 
Vom Prinzip her koennte das Alles stimmen, auch wenn ich nicht glaube,dass eine der Registrierungsstellen ganze Datenbanken rausgibt.

Aber wenn du dich mal informierst, wer fuer die Verwaltung der Domains zustaendig ist, ist ja klar, dass man an sich nur via Script deren Anfrageformulare auslesen muss.

Es kann sein, dass "große Subunternehmer" bspw. der DENIC, sowas wie United-Domains, da schon direkte Datenbanken beziehen kann bzw. anderweitige Schnittstellen nutzt, fuer "Normalsterbliche" waere mir nicht bekannt, dass solche existieren.

Die von dir verlinkte Website hat ja primaer nur ein Eingabefeld, und nach Eingabe koennen sie ja direkt bei dem Whois Dienst der jeweiligen NIC anfragen, ob frei, und die ganzen Pagerank Spielererien sind ja wieder ein anderes Thema.

Fuer eine Ueberwachung, wann welche Domains freiwerden, muesste man natuerlich dann eigene Datenbanken pflegen, kannst ja mal anfragen, wie genau die das machen ;)

Ja das Eingabefeld mein ich ja nicht, sondern unten die Übersicht. Denn die zeigt ja frisch gelöschte Domains an. Und bei mehr als 1300 frisch gelöschter am Tag ist es unwahrscheinlich, dass sowas nur die Daten per Eingabeformular erhält. :roll:
 
Jep, das mit dem Eingabefeld bezog sich ja nur auf die direkte Abfrage.

Wie die Ihre Datenbank fuer freie Domains fuellen (verknuepft mit dem Zeitpunkt der Eintragung, somit kann man "Kuerzlich freigewordene" auch auslesen) kann man ja schlecht nachvollziehen.

Da aber der Serviec auch was kostet, ist gut vorstellbar, dass die entweder Crawler dafuer laufen lassen (was an sich gar nicht so aufwendig ist, nur aufgrund der riesigen Anzahl Domains braucht man dementsprechende Hardware), oder man kann tatsaechlich bei den NIC's Datenbanken und/oder API Zugriff erkaufen.

1.1 Wie lange dauert es bis eine frei gewordene Domain bei Domainannounce angezeigt wird?


Hierzu kann leider keine allgemein zutreffende Aussage gemacht werden. Wir überprüfen laufend eine grosse Anzahl von Domains auf ihre Verfügbarkeit. Sobald wir feststellen, dass eine Domain frei geworden ist, wird diese Kunden mit einem Realtime Account in Echtzeit angezeigt.

Als registriertes Mitglied können Sie auch veranlassen, dass Ihre Wunsch-Domain in unsere Datenbank eingetragen und überwacht wird. Bei freiwerden der Domain werden Sie dann per Mail benachrichtigt

Lässt auf die Methode via Crwaler schließen.
 
Jep...also scheints so zu sein, dass im Prinzip 2 Crawler laufen:

1. Datenbank füllen: Eine Crawler läuft und durchsucht das Netz nach Links, die er speichern kann. Daraus entsteht eine Datenbank.

2. Datenbank überprüfen: Der zweite Crawler läuft und durchsucht Schritt für Schritt einen Datenbankeintrag nach dem Anderen ob eine Domain seit der letzten Überprüfung frei geworden ist.

Müsste also vermutlich mit c++ oder als direktes Programm laufen. Da komm ich mit php nicht wirklich weit.
 
2 Crawler ist vllt "etwas" untertrieben.

Ein weiterer Punkt:
Domains haben eine Laufzeit (de-Domains von einem Jahr), man könnte also bei gewissen Domains, wenn man an das Registrierungsdatum kommt, nach einer gewissen Zeit nachschauen ob die Domain in den Transit kommt (letzte Chance vor Freigabe) usw.
Einfach sinnlos nen Crawler sekündlich jede bekannte Webseite aufrufen zu lassen ist ineffektiv und wird denke ich keinen Erfolg haben.

Edit: deutsche Domains haben keine öffentliche Expires-Info, com-Domains wohl schon. How to Snatch an Expiring Domain
 
Hmh....hab auch schon gesucht aber für de ist wirklich nichts an Daten rausgegeben. Aber trotzdem hats www.sneo.de oder eben auch der Anbieter oben ja irgendwie geschafft.
 
Hab leider noch immer keine Lösung gefunden, aber vielleicht ne Idee:

Nen localhost mit xampp, nem Cronjob und ne Datenbank.

Die Datenbank enthält de-Domains. Jede Minute wird der Cronjob aufgerufen der nichts macht außer die Domains aus der Datenbank der Reihe nach abzuarbeiten und zu überprüfen. Wenn sein Limit erreicht ist, hört er einfach auf.
Und indem der jede Minute aufgerufen wird kann ja somit der Cron auch parallel mehrfach laufen.

Denkt ihr sowas in der Art würde funktionieren? Oder doch noch andere Ideen?
 
Weist du wieviel Millionen de.Domains es gibt?
Da erreichst du mit deinem Cronjob-Ansatz gar nichts, da hat jeder Dienst vor dir die Info, dass die Domain gelöscht wurde.
So ein System muss hunderte (bis tausende) Domains gleichzeitig mit HEAD-Requests (durch asynchrones IO) abarbeiten können.
 
Hi,

naja wollte versuchen über die Datenbank so zu steuern, dass nur sinnvolle Domains drin sind indem beispielsweise die DB von dmoz oder so eingesetzt wird. Also qualitative Seiten nutzen.
Aber mit welchem Ansatz würdest du denn rangehen? Also Sprache, etc...

Danke
 
Und am besten solltest dein Spider auch noch die robots.txt beachten, damit man ihn aussperren kann, wenn er einen zu sehr belästigt.
 
Aber mit welchem Ansatz würdest du denn rangehen? Also Sprache, etc...

Ein Java-Daemon mit 2 Aufgaben:
  1. Ein Teil sucht dauerhaft im Internet nach neuen Seiten, indem es sich von Website zu Website hangelt und dort max. bis zur Tiefe 2 die Seiten durchsucht (Endlosschleifen auf einer Seite verhindern)
  2. Der andere Teil läuft die schon bekannten Domains durch und macht einen Head-Request um zu schauen, ob die Website antwortet. Sollte sie nicht antworten kommt sie in eine Liste mit näher zu untersuchenden Seiten

Das ganze System muss mit asynchronen IO-Zugriffen arbeiten um die Paralellität auf ein Maximum zu steigern und alles muss nach dem Master-Worker-System zusammengebaut werden, um möglichst viele Prozesse unabhängig voneinander laufen lassen zu können und die Software auch ohne Probleme auf mehrere Server zu skalieren.
 
Möchte mich nochmal zu dem Thema mit ner Frage melden:

Wie überprüfe ich mit php ob eine de-Domain jetzt freigeworden ist? Einfach überprüfen, ob die Domain jetzt gerade frei geworden ist mit Whoise - Abfrage senden und dann den Status überprüfen, ob der frei ist? Oder gibts da nen eigenen Status für? Und welche php-Funktion würdet ihr nutzen um am besten bzw. viele Abfragen hintereinander zu machen?

Danke
 
Also ich wuerde sagen dass man das einfacher machen kann indem man DNS server ueberwacht, das wuerde auch den Delay erklaeren da DNS server die Daten cachen.
 
Also da wuerde ich sagen es muesste reichen nach ablauf des Caching intervals eine DNS anfrage zu stellen fuer die domain, und sollte sich etwas am eintrag geaendert haben, dann koennte die domain geloescht worden sein.
Also checken wir die seite.

Der Vorteil ist dass man erstens parallel anfragen stellen kann, die last verteilt wird (auf deine DNS server) und man wesentlich weniger daten hin und herschiebt.

Konkrete Beispiele hab' ich leider keine.
 
Hallo,

ja das mein ich ja. Also beispielsweise Domain: www.test.de

DNS - Abfrage stellen -> besetzt

und dann alle 10 Minuten (oder welche Cachingzeit meinst du?) die gleiche Abfrage stellen.

Wenn diese Abfrage dann nen anderen Status bringt (aber was muss da die Abfrage bringen?) ist sie eben frei.

Aber das sind ja genau meine Fragen. Denn wie diese Abfrage mit php gestalten und welche Stati sind da wichtig?

Danke
 
Mit caching meinte ich die TTL die mit der DNS antwort zurueck geschickt wird. Denn die Werte werden sich nicht schneller aendern, und erst nach ablauf des TTL werden die caches in der hierarchie erneuert.

Im Grunde brauchst du nur die Domaine, ablauf TTL und einen MD5 hash der DNS entry informationen. Somit wartest du bis das TTL abgelaufen ist, stellst eine anfrage, vergleichst die hashes und findest somit ein update raus.
 
Hmh....irgendwie komm ich mit deinem Vorschlag nicht so mit. :roll: Aber hab mir aus ner Funktion schonmal eine whois-Abfrage gemacht:

PHP:
function check_domain($url) { 
    $lusrv = "whois.denic.de"; 
    $fp = fsockopen($lusrv,43); 
    fputs($fp, "-C ISO-8859-1 -T ace,dn $url\r\n"); 
    $string = ""; 
    while(!feof($fp)) 
        $string.= fgets($fp,128); 
    fclose($fp); 
    if(ereg("(nothing found|No match|No entries found|NOT FOUND|Not found|not found in database|Whois information is not available for domain|We do not have an entry in our database matching your query)",$string)) { 
        echo "<center><b><font color=\"#00FF00\">Der Domainname ".$url." ist frei.</font></b></center><br>"; 
        return 1; 
    }else{ 
        echo "<center><b><font color=\"#FF0000\">Der Domainname ".$url." ist vergeben.</font></b> "; 
        echo "<pre>".$string."</font></pre>"; 
        return 0; 
    } 
}

Funktioniert auch. Aber wie kann ich das Ding noch mehr vereinfachen? Denn hier kommen ja auch die Denic - Daten alle zurück und ich bräuchte eigentlich nur die Info: Frei oder nicht.

Also wie kann ich das vor allem performancetechnisch noch verbessern?

PS.: Nicht wundern mit dem nur de. Denn geht nur um de-Domains.
 
du ignorierst alles was Synke sagt? :LOL:
Denn DNS wäre die erste Anlaufstelle, aber das ist natürlich komplexer also machen wir die Holzhammermethode, wo uns Denic nach wenigen minuten sperren wird :ugly: