Seite 1 von 1

whois-Abfrage

Verfasst: Dienstag 22. Februar 2011, 09:04
von Peak_me
Ich möchte eine whois-Abfrage zu einer .de-Domain machen.
Wieso funktioniert dies nicht:

Code: Alles auswählen

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("whois.denic.de", 43))
s.send("test.de")
print s.recv(1024)
Auf welche Weise muss ich mit dem Server kommunizieren, dass er mir eine Antwort gibt?


Gruß
Paul

Re: whois-Abfrage

Verfasst: Dienstag 22. Februar 2011, 09:13
von lunar
Die Anfrage „funktioniert nicht“, weil sie nicht dem Protokoll entspricht. Du musst nach dem Servernamen noch "\r\n" senden. Steht im Übrigen sogar bei Wikipedia ...

Re: whois-Abfrage

Verfasst: Dienstag 22. Februar 2011, 09:49
von Peak_me
Das nenn ich mal effiziente Kommunikation!
ein Antwort, die das Problem löst, in unter 9 Minuten

danke! :D

Es ging auch kurz, jetzt kommt aber
Error: 55000000002 Connection refused; access control limit exceeded :roll:

Ich möchte abfragen, ob eine (große) Liste von Domains schon registriert ist.
Dazu taugt dann die oben genannten Möglichkeit wohl nicht.

Ich habe diese weiteren Möglichkeiten gefunden:

Code: Alles auswählen

try:
    socket.gethostbyname(url)
    #anweisungen
except:
    pass

Code: Alles auswählen

nsurl="nslookup "+url
    nslookup=os.popen(nsurl).readlines()
    if len(nslookup)>3:
        #Anweisungen

Code: Alles auswählen

try:
    urllib2.urlopen(url)
    #Anweisungen
except:
    pass
Soll eine Liste mit URLs überprüft werden, von denen erwartet wird, dass sie überwiegend aktiv sind, dann hat gethostbyname deutlich die Nase vorn:
Pro URL braucht
gethostbyname ca 0,0005 Sekunden,
nslookup ca 0,1 Sekunden und
urllib ca 0,15 Sekunden.
Meine CPU-Auslastung (Dualcore 2 GHz) liegt währen dieser Operationen bei:
gethostbyname 60 %
nslookup 30 %
urllib 1%
Erstaunlich ist die im Vergleich hohe CPU-Auslastung von nslookup gegenüber urllib, obwohl beide etwa gleichlange brauchen.
Was macht nslookup, was urllib nicht macht?

Sollen jedoch Listen überprüft werden, in denen unregistrierte URLs überwiegen, liegt nslookup vorne:
gethostbyname braucht ca 0,3 Sekunden,
nslookup ca 0,2 Sekunden und
urllib ca 1 Sekunde.
Diese Zeiten schwanken natürlich stark, jenachdem wie die URLs aufgeteilt sind, aber es zeichnet sich in etwa dieser Trend ab.
Um mehr URLs pro Zeiteinheit überprüfen zu können, kann man auch die Listen in parallele Prozesse aufteilen, was jedoch auch Probleme nach sich zieht:
nslookup und gethostbyname erreichen CPU-bedingt schnell eine Grenze
urllib hat bei parallelen Prozessen hohe Ausfallquoten: bei 20 oder mehr Prozessen werden bei meiner 2-Mbit-Leitung nur noch unter 30 % aller registrierten URLs erkannt, der Rest wird Traffic-bedingt nicht erkannt. Diesen Effekt kann man durch heraufsetzen der setdefaulttimeout-Zeit abschwächen, was jedoch dann wieder in kleinerer Überprüfungsfrequenz resultiert.

Ein weiteres Problem ist, dass ich bei gethostbyname kein setdefaulttimeout implementieren kann.


Wenn jemand Gedanken zu diesen Problemen hat und vielleicht weitere Überprüfungsmethoden kennt, würde ich mich darüber sehr freuen.


Gruß
paul

Re: whois-Abfrage

Verfasst: Dienstag 22. Februar 2011, 23:16
von Leonidas
Du weißt aber schon, das Domains registriert sein können, selbst wenn ihnen keine Adressen zugeordnet ist? Daher kannst du es vergessen mit ``urllib`` zu versuchen da Informationen zu bekommen.

Re: whois-Abfrage

Verfasst: Mittwoch 23. Februar 2011, 00:38
von Peak_me
Ja, das ist mir bewusst.
Mit urllib hat die Liste mit den gefundenen URLs keinen Anspruch auf Vollständigkeit.

Re: whois-Abfrage

Verfasst: Mittwoch 23. Februar 2011, 14:24
von svenXY
:arrow: http://www.denic.de/de/whois/index.jsp:
Um Massen-Abfragen auf unseren whois-Servern zu vermeiden und dafür Sorge zu tragen, dass der Dienst allen Nutzern zur Verfügung steht, existiert eine Beschränkung der Anzahl der Abfragen aus einem bestimmten Bereich pro Zeitintervall. Wird dieser Wert überschritten, werden alle weiteren Abfragen mit "Connection refused; access control limit exceeded" beantwortet.
Hast Du einen guten Grund zum Domaingrabbing?

Re: whois-Abfrage

Verfasst: Mittwoch 23. Februar 2011, 16:39
von Peak_me
Das ist mir klar, dass denic das begrenzt.
Deswegen sind ja die anderen Methoden, die ihre Antworten aus der "normalen" Internetstruktur (von den DNS-Servern etc.) beziehen, besser geeignet.

Und Domaingrabbing will ich nicht betreiben, ich will die Dinger ja nicht registrieren sondern nur statistisch auswerten.

Re: whois-Abfrage

Verfasst: Mittwoch 23. Februar 2011, 16:46
von cofi
Peak_me hat geschrieben:Und Domaingrabbing will ich nicht betreiben, ich will die Dinger ja nicht registrieren sondern nur statistisch auswerten.
Hast du schon versucht die Registrare zu kontaktieren? Die Zahlen müssten ihnen ja mehr oder weniger leicht zugänglich sein und ruecken sie eventuell aus.

Re: whois-Abfrage

Verfasst: Donnerstag 24. Februar 2011, 22:15
von Peak_me
also ich denke nicht, dass Strato und Co ihre registrierten Domains rausrücken