Howto: Expired Domains – Präsentation und Quellcode

Howto: Expired Domains – Präsentation und Quellcode

16.03.2011
Von Andreas Graap
83 Kommentare

Wie versprochen möchte ich nun die Präsentation zu meinem Vortrag “Howto: Expired Domains, Wie baut man einen .de Domainsnapper” auf der SEO Campixx 2011, sowie den Quellcode des Domainsnappers, veröffentlichen.

 

Ein paar Worte zum Domainsnapper

Der Domainsnapper prüft während der Aktualisierungszeiten der DENIC Nameserver, ob eine Domains frei wird und registriert diese direkt automatisch.

Die Registrierung erfolgt über InterNetworX. Dort benötigt Ihr also ein Kundenkonto und müsst euer Konto aufladen. Ausserdem braucht ihr ein gültiges Handle. Das könnt ihr euch unter Domain-Kontakte anlegen und wird später als Domaininhaber, aber auch Admin-C, Tech-C und Zone-C, eingetragen. Bitte achtet darauf, dass es vom Typ: Person ist, ansonsten funktioniert die Registrierung nicht. Kopiert euch die ID des erstellten Kontakts in die Zwischenablage.

Die Domains, die geprüft werden sollen, müsst ihr in die Datei domains.txt eintragen. Pro Zeile eine Domain. Ganz wichtig: Ohne www.

In der Datei domainsnapper.php müssen folgende Variablen am Anfang des Codes gesetzt werden:

  1. $email: Eure E-Mail Adresse, an die eine Info im Fall eines Registrierungsversuches geht.
  2. $inwx_user: Euer InterNetworX Benutzername
  3. $inwx_pwd: Euer InterNetworX Passwort
  4. $handle: Die ID des Kontakts, den ihr bei InterNetworX erstellt habt
  5. $nameserver: Der DENIC Nameserver, der abgefragt werden soll

Um den Domainsnapper laufen zu lassen, benötigt ihr einen Server mit SSH Zugang auf dem die Scriptlaufzeit nicht begrenzt ist.

Der Start erfolgt über folgenden Aufruf:

nohup php domainsnapper.php > /dev/null &

Um den Domainsnapper zu stoppen muss der Prozess gekillt werde:

ps ax |grep domainsnapper.php
kill PROZESS_ID

Noch ein paar Hinweise:

  1. Es werden immer die Sedo Nameserver eingetragen, da diese für jede beliebige Domain eine Antwort liefern. Das könnt ihr nach erfolgreicher Registrierung natürlich direkt umstellen.
  2. Auch wenn der Nameserver eine Domain nicht kennt, heißt es nicht zwangsläufig, dass diese noch frei ist. Sie kann auch in der Zwischenzeit bereits von jemand anderem registriert worden sein.
  3. Jede .de Domain, die in der domains.txt steht und frei ist wird direkt registriert. Passt also auf, was ihr dort eintragt.
  4. Wie in meinem Vortrag besprochen liegt der Schlüssel in der Domainauswahl.

So und nun viel Spaß mit dem Domainsnapper. Würde mich über Erfahrungsberichte und Beispiele für erfolgreich registrierte Domains sehr freuen.

Download


Zum Download müsst ihr auf den folgenden Button klicken und einen Tweet oder eine Facebook Nachricht hinterlassen. Danach werdet ihr direkt zum Download weitergeleitet.




Über den Autor

Andreas Graap

Andreas ist Internet-Unternehmer seit 1997 und Geschäftsführer der ANGRON GmbH. Er hält regelmäßig Vorträge auf Konferenzen, veröffentlicht Fachartikel und ist Betreiber des Video Podcast Webschorle.
XINGTwitterFacebookGoogle+

Kommentare:

  1. Danke!!!!!!!!!!!

  2. Hey Andreas, vielen Dank für den coolen Vortrag und das Skript – werd es als Grundlage nehmen um meinen Crawler mit nem Snapper zu erweitern. Viel Glück beim expireds fischen weiterhin!

    • Oh, ein Namensvetter!
      Na dann viel Spaß beim Grabben ;)

  3. Hallo Andreas,
    ich habe für die Campixx leider kein Ticket bekommen. Umso toller finde ich es, daß Du auch außerhalb der Campixx noch Deine Präsentation und das Script der community zur Verfügung stellst!

    Danke nochmal!

  4. Hi Andreas,

    wirklich guter Vortrag und cool das du das Skript veröffentlichst.

  5. Danke dafür. Werde das Teil mal intensiv testen und dann noch mal Feedback geben.

  6. Hallo,

    danke erstmal dafür, habe den Link zu diesem Artikel von einem Campixx Besucher per Skype gekriegt der begeistert war ;)

    Wäre es möglich dazu nochmal ein Video zu erstellen, also nicht vom Vortrag sondern von der Einrichtung bis zur Nutzung des Tools?

    Gruß,
    Henry

    • Sorry, aber das ist aktuell nicht geplant.

  7. Meinst du wirklich Sedo-Nameserver (bei den Hinweisen)?

    Gruß,

    Michael

    • Ja, die liefern für jede Domain eine Antwort zurück, was bei der Registrierung von Vorteil ist. Nach erfolgreicher Registrierung kannst du es ja direkt wieder ändern.

  8. Hallo Andreas,

    vielen Dank für das Teielen deines Snapper-Scriptes. Nur leider mag es bei mir irgendwie nicht so funktionieren (Managed Server, hosteurope)

    ist diese Antwort auf “nohup php domainsnapper.php > /dev/null &” so korrekt: “$ nohup: ignoring input and redirecting stderr to stdout”

    Danke schonmal für deine Mühe!

    Gruß Willy

    • Ja, das passt.

  9. Respekt, alter Expirejunkie ;o)

  10. Ich bin begeistert! Danke für die tolle Arbeit und die Veröffentlichung.

  11. @Willy
    mit “top” oder “ps ax |grep domainsnapper.php” siehst DU oh das Script rennt.

    @Andreas Danke für Dein Vortrag und Script.

  12. [...] und ein bisschen Glück. Wer mit dem Programmieren noch ein paar Probleme hat, der sollte mal bei angron.de vorbeischauen. Alle die den Vortrag von Andreas Grapp auf der SEO CAMPIXX verpasst haben, können [...]

  13. Vielen Dank, dass Du es uns zur Verfügung stellst! :-)

    Nur eine Frage: Gibt es eine Obergrenze oder Empfehlung, wie viele Domains man maximal in die Liste eintragen sollte?

    Beste Grüße,
    Manuel

    • Je weniger, desto besser. Bei ca. 200 Domains werden diese in etwa jede Minute geprüft.

  14. @Andreas, Stefan: Danke für die Hilfe.

    Wenn ich jedoch “top” oder “ps ax |grep domainsnapper.php” eingebe kommt bei mir nur “Cannot find /proc/version – is /proc mounted?”

    Wo liegt hier das Problem, bzw. was müsste als Response auf die Eingabe kommen?

    Grüße

    • Das liegt an dem managed Server von Hosteurope. Du hast nicht die notwendigen Rechte dazu. Versuch es mal auf einem Root (v)Server.

  15. Hi,
    einfach und nett das Script. Sag mal sperrt der Denic DNS bei zu vielen Anfragen für einige Minuten oder liegt das an einer Einstellung an meinem Server? Kommt irgendwann “Failed to write read data buffer” nach ein paar Tausend Domains…

    • Kommt das bei jeder Abfrage, oder nur Zwischendurch?
      “UDP stellt einen verbindungslosen, nicht-zuverlässigen Übertragungsdienst bereit. Das bedeutet, es gibt keine Garantie, dass ein einmal gesendetes Paket auch ankommt” (Wikipedia)
      Diese Fehler können durchaus mal vorkommen, aber nicht dauerhaft. Du könntest noch versuchen den Nameserver zu wechseln und/oder das Timeout hoch zu setzen. An der DENIC sollte es nicht liegen.

      • Wenns nach gut 4000 Request einmal losgeht, kommt es dauerhaft für ca. 3 Minuten – auch von den übrigen Denic Servern. Auch wenn ich einen Sleep von 100ms zwischen den Abfragen einlege oder den Timeout auf 3 Sekunden ändere, passiert das. Ich teste nochmal mit nem anderen Server.

  16. hallo

    leider laeuft das snapper nicht.
    sobald ich eine “frei” domain eintrage beendet sich der snapper sofort.

    fehler in der nohup

    PHP Fatal error: Call to undefined function xmlrpc_encode_request() in /install/domainsnapper/domrobot.class.php on line 33

    brauche ich noch bestimmte module / pakete?
    oder was ist der fehler?

    mein zugangsdaten von iwx sollten stimmen

    danke!

    • Die domrobot.class.php wird von INWX zur Verfügung gestellt, da kann ich leider keinen Support für geben. Die Klasse wurde 1:1 übernommen und nur zur Registrierung eingebunden. Bei mir funktioniert sie tadellos. Am besten mal bei INWX nachfragen.

      • danke fuer die schnelle antwort – habe mal eine anfrage gestellt. melde mich, wenn ich eine anwort erhalten haben.

        wo hast du die “klasse” herruntergeladen” evt. gibt es schon eine neue version?

        gruss

        • https://www.inwx.de/de/help
          -> API Dokumentation (ganz unten)

        • habe den fehler gefunden – jetzt funktioniert es!

          folgende packete haben gefehlt

          php-openssl
          php-xmlrpc

          vielen dank!

          braucht jemand eine domain :)

  17. Hi,

    erstmal Danke für dieses Skript… nun aber eine Frage…

    “Not on Twitter? Pay with a post on your Facebook wall!

    Soon available again. Please ‘pay’ with Twitter till then.”

    Ich hab kein Twitter und FB funktioniert anscheinend nicht? Oder wie geht das? Muss ich mir jetzt dafür einen Twitter Account besorgen?

    Vielen Dank für’s beantworten der Fragen.

    LG

    Steffen

    • Hab es gerade getestet. Hat problemlos funktioniert. Bitte noch mal kurz melden, falls es nach wie vor nicht geht.

  18. Hallo,

    Hat jmd den Script intensiv getestet?

    Wie sieht es bei .de Domains aus? Hat man auf richtig gute Keys zu snappen ein Chance?

    Greetz

    P.Kurz

  19. @ P. Kurz

    Man hat keine Chance!
    Es wurden auch welche die von mir beobachtet wurden frei, aber es waren immer folgende Grabber schneller:

    Grünneberg Wuppertal
    Impaxx Investments London
    Greenfield

    innerhalb von Millisekunden!

  20. Hallo,

    habe nochmal eine Frage, ob das so in der Form richtig funktioniert. Habe das Script momentan auf einem Server mit Root-Rechten liegen.

    Nachdem ich “nohup php domainsnapper.php > /dev/null &” eingebe bekomme ich als Antwort: “[1] 6112
    nohup: ignoring input and redirecting stderr to stdout
    “. So weit so gut. Nach Eingabe von “ps ax |grep domainsnapper.php” bekomme ich das als Response: “7537 ttyp0 S+ 0:00 grep –color=auto domainsnapper.php
    ” ist das so korrekt?

    Denn wenn ich versuche “kill 7537″, kommt stets, dass der Prozess nicht bekannt ist. Die Zahl ändert sich auch nach jeder ps ax Abfrage.

    Danke schonmal für die Bemühungen!

  21. @ Andreas,

    warum wird eigentlich ausgerechnet f.nic.de durchsucht? Werden alle Rootserver der denic gleichzeitig geupdated?

    • Schau dir mal die Präsentation an. Neben f.nic.de kannst du auch l.de.net oder z.nic.de nehmen. Diese drei werden nach meinem Test gleichzeitig aktualisiert. Die anderen beiden 1-2 Sekunden später.

  22. Guten Abend Andreas,

    vielen Dank für Ihre Mühe und das bereitgestellte tolle Script! Sehr gute Arbeit!
    Einige Fragen habe ich jedoch zur Technik:

    Ist die Verwendung einer Datenbank nicht sinnvoller, oder ist die Performance bei der Textdatei besser? Oder kommt es vielleicht sogar auf die Anzahl der Einträge an?

    Sie schreiben 10000 Abfragen pro Sekunde sind möglich pro Server? Wie genau soll das klappen?
    Die Denic-Server haben ja auch Antwortzeiten von 2-6 ms.

    Danke sehr! Niklas

    • Muss jeder für sich selbst entscheiden, ob er eine DB oder eine Textdatei benutzt. Für dieses Beispiel war die Lösung mit einer Textdatei am einfachsten. Ich selbst setze auch eine DB ein.
      10.000 Abfragen / Sekunde kann man mit dem Script nicht schaffen. Aber mit den entsprechenden Mitteln geht es :-)

      • Hi,

        und was sind denn die entsprechende Mittel? Ich mache das ganze auch mit einer MySQL DB aber komme Nichtmal annähernd an die 10.000 …

        Vielen Dank ;)

        Gruß,
        Hamid

  23. Hallo Andreas,

    wieviele Domains überwachst du (ungefähr) und wieviele Registrierungen pro Jahr machst du dadurch ungefähr im Schnitt?

    Denke das wären noch gute Orientierungshilfen, gerade für Neueinsteiger wie mich, die Zahlenmäßig noch überhaupt keine Vorstellung von der Materie haben.

    Danke und schöne Grüße!

    • Würde dir empfehlen max. 1.000 Domains zu nehmen, die PR <= 3 und Domainpop <= 50 haben. Bei besseren Domains wirst du damit zu geringe Chancen haben.

  24. Hallo,

    habe das gleiche Problem wie Willy am 9. April 2011 geschrieben hab.
    Der Prozess ist abgekoppelt vom Elternprozess und von der Bash.
    Die PID ändert sich ständig und leider auch die PPID welche wiederrum den INIT Prozess mit der PID 1 hat.

    Wie kann ich den Prozess trotzdem killen? Mit nem TERM?

    Danke für Hilfe!
    Grüße

  25. Hi Andi,

    kann ich einfach einen anderen Nameserver eintragen – also keinen von der DENIC – um auch .com .net .org Domains zu checken?

    THX
    Carlos

    • Es ist nur mit den DENIC Nameservern getestet und darauf optimiert. Nameserver für andere TLDs müsstest du selbst testen.

      • Hat es jemand mal mit anderen Domainendungen getestet? Müsste man rein theoretisch wirklich nur den nameserver ändern? Welche Nameserver bieten sich für .com Domains an?
        lg
        Rubby

  26. hat bisher irgend jmd. eine Sinvolle Domain gesnappt?

    Lohnt sich der Aufwand?

    Danke

  27. Hallo! weiss jemand was mit den denic Nameservern los ist????

  28. [...] Angron.de Obwohl Andreas Graap schon viele Jahre dabei ist, ist sein Blog noch relativ neu. Auf der SEO-Campixx 2011 hat er einen sehr guten Vortrag zum snappen von .de-Domains gehalten, die Folien kann man hier ansehen: Howto: Expired Domains – Präsentation und Quellcode [...]

  29. muss die Domain mit Domainendung in die txt datei eingetragen werden?

    • Ja

  30. Wo bekomme ich denn einen Überblick welche De domains wann enden?

    • Gar nicht.

  31. Hallo!

    Welchen Vorteil in Sachen Geschwindigkeit soll dieses Script gegenüber einfachen shell-basierten Abfragen wie nslookup und dig bringen? Die Request-Methode sieht mir auf den ersten Blick sehr, sehr umständlich und unnötig kompliziert aus? Haben Sie da einmal Vergleichstests gemacht zu anderen Möglichkeiten? Wie viele ms braucht eine Antwort?

    Gruss,
    Frank

    • Es produziert keinen Overhead. Es werden nur die ersten 12 Bytes abgefragt, mehr sind nicht notwendig. Ausserdem wird UDP anstelle von TCP verwendet. Es ist definitiv schneller als nslookup/dig, kannst es gerne mal testen und hier deine Ergebnisse posten.
      Ausserdem werden die Antworten nicht gecachet, was für diesen Einsatz wesentlich ist.

  32. [...] sehr ausführlich beschrieben, um nicht zu sagen fast garnicht. Es ist aber so, dass Andreas einen Post zu seinem Vortrag geschrieben hat, der auch nach den Tagen noch sehr lesenswert ist. Vor allen Dingen weil er einen Domainsnapper [...]

  33. Danke für das Skript. Hat den schon jemand erfolgreich eine URL gespannt? Wo bekommt ihr die URL Listen her?

  34. Hi,
    tolle Sache, aber wo finde ich den Quellcode?
    VG

    • wer lesen kann ist klar im Vorteil… :) habs…

  35. Morgen Andreas,

    ich habe eben Grad über dem Beitrag von Marco deinen Domaingrabber entdeckt. Der Gedankenansatz von diesen Domaingrabber ist ja sehr gut, vielleicht könnte man diese Anwendung noch ein wenig erweitern welche automatisch die Domains über zum Beispiel Google findet. Dann wäre das Projekt perfekt.

    Grüße Nico

    • Kannst es gerne entsprechend deinen Anforderungen anpassen.
      Das Programm ist dazu gedacht zu zeigen, wie man gelöschte Domains registrieren kann – nicht wie man potentielle Domains findet. Einfach Google zu scrapen wäre zu einfach. Da speilen viele Faktoren eine Rolle, auf die ich auf der Campixx eingegangen bin. In der Präsentation findest du dazu auch noch ein bischen.

  36. Hab jetzt auch mal das Script getestet, komm nur irgendwie nicht weiter, wenn ich den Befehl:

    nohup php domainsnapper.php > /dev/null &

    ausführe, kommt: nohup: ignoriere Eingabe und leite Stabdartfehlerausgabe auf Standartausgabe um

    Was bedeutet das? Oder läuft das Script schon?

    Hab den befehl mit der Software “Putty” ausgeführt und was passiert wenn ich das Pogramm schliesse? Oder bin ich komplett auf dem Holzweg?

    Gruß Chris

    • Das ist soweit korrekt. Das Script sollte im Hintergrund laufen – auch wenn du Putty schließt.
      Testen kannst du das z.B. mit: ps ax |grep domainsnapper

      • Das hab ich mal gemacht, aber was ich seh ist folgendes:

        S 0:00 php domainsnapper.php
        S+ 0:00 grep domainsnapper

        Ich denke das kann nicht sein, oder?

        • Doch, sieht gut aus. Der Prozess läuft (der obere).

          • Komisch, wenn das Script läuft warum registreirt er dann nicht die zwei domains die in der .txt stehen?

            Die Domains sind nämlich frei ;-)

          • Das kann ich dir so auf die Entfernung leider auch nicht sagen…

  37. Hallo Andreas,
    kann man das Script auch auf dem eigenen Rechner einrichten?
    Wenn ja, wie wäre dies möglich? Stichwörter würden mir reichen :-)

    • Genau dafür ist es gemacht :-)

  38. Danke für den Code, mal sehen, was wir daraus basteln ;-)

  39. Danke für den Vortrag. Thema ist spannend.

    Ich werde mir auch den Code mal anschauen.

    Gruß

    Lars

  40. Hi und danke für das Script. Ich habe allerdings mit Expireds überhaupt keine Erfahrung deswegen mal ne blöde Frage: warum macht man nicht einfach einen Domaincheck per dchk?

    • Das geht natürlich auch. Hat allerdings mehr Restriktionen, ebenso wie direkte Whois abfragen.

  41. Hallo Andreas,
    Erstmal, vielen dank für die kostenlose Bereitstellung des Domainsnappers, GROßES KINO :-)
    Wenn es erlaubt ist würde ich gerne noch mal die frage von @ Rubby aufgreifen,
    Sind noch weitere Domainendungen möglich ? oder ist dieses Tool rein auf .DE Domains beschränkt ??

    Gruß
    Martin

    • Es ist in der jetzigen Form rein auf .de Domains beschränkt.

  42. [...] Automatisch registrieren: Dazu bedient man sich eines Domain Snappers – den kann man sich auch selbst programmieren. Andreas “Webschorle” Graap (@Angron) hat das schon vorgemacht, Howto: Expired Domains. [...]

  43. [...] großer Dank geht an Andreas Graap, dessen Domainsnapper-Script ich die Nameserver-Mechanik entnommen [...]

  44. Hallo und danke, dass du den Code zur Verfügung stellst. Verstehe ich es richtig, dass man das auf einem managed vServer von Hosteurope nicht zum Laufen kriegen kann?

  45. >Bei ca. 200 Domains werden diese in etwa jede Minute geprüft.

    voll fett *megarofl*

  46. Hi, vielen Dank erstmal für das Tool, welches ich heute installiert habe.

    Drei Fragen, 1.
    11985 pts/0 S 0:00 php domainsnapper.php
    12081 pts/0 S+ 0:00 grep domainsnapper.php

    Das dürfte ja eigentlich korrekt sein? Zeile 2 (12081) ändert sich jedoch permanent, bzw. die Prozess-ID – liegt wohl an der ständigen Aktualisierung des Tools?

    2. Ist die Schnittstelle von InternetWorx noch auf dem gleichen Stand wie bei der Entstehung dieses Tools oder gibt es da Änderungen?

    3. Das Handle trage ich ja so ein oder?
    $handle = ’47111′; // Contact ID

    Ich versuche leider vergeblich, Domains zu registrieren. Funktioniert nicht, obwohl das Tool scheinbar problemlos läuft. Super Idee eigentlich, jetzt muss ichs nur noch zum Laufen kriegen :)

  47. Nachtrag:

    11985 pts/0 S 0:00 php domainsnapper.php -> Lässt sich beenden mit “Kill 11985″
    12081 pts/0 S+ 0:00 grep domainsnapper.php -> Lässt sich nicht beenden bzw. wechselt ständig die ProzessID

  48. Hat mir beim palenen weitergeholfen. Ich habe meinen Expired Domain Dienst mit Python unter Unter http://www.expired-domains.co realisiert. Da poste ich die kostenlos :)

  49. hmm wie weiss ich, ob der auch läuft ? Ja doofe frage.. ist aber so :(

    root@ub1:~# nohup php domainsnapper.php > /dev/null &
    [1] 9244
    root@ub1:~# nohup: ignoriere Eingabe und leite Standardfehlerausgabe auf Standardausgabe um

  50. oder anders gefragt, wo sehe ich, dass er auch wirklich was macht.. du nohup.out is einfach leeeer.

  51. Beschäftige mich jetzt seit kurzem auch mit der Thematik und hab schon meine ersten Fehler gemacht.

    Unter anderem hat mir der Support von INWX bestätigt, dass die Schnittstellen-Funktion domain.check (überprüft ob ein Domainname frei ist) mit einem Cache arbeitet und unter Umständen also nicht den realen Zustand einer Domain in Echtzeit wiedergibt.

    Diese Problematik wird dann auf die Funktion domain.create vererbt, da bei jedem Aufruf von domain.create wohl auch ein domain.check aufgerufen wird.

    Wenn man also mit dem Nameserver früh genug erkennt ob eine Domain frei ist und sie auch rechtzeitig registrieren könnte, kann der Cache bei INWX einem einen Strich durch die Rechnung machen.

    Kennt jemand eine Schnittstelle die entweder ohne Cache arbeitet oder Registrierungen direkt abschickt ohne vorher die Domain nochmal zu prüfen?