| Autor |
Beitrag |
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 23.10.11 11:42
Hi,
ich suche eine Möglichkeit aus einen Domain Namen aus einer adresse zu extrahieren, also z.B.:
Quelltext 1: 2: 3:
| www.google.de -> google.de sub1.sub2.google.de -> google.de sub1.sub2.google.co.au -> google.co.au |
Mir selbst fällt als einziger Weg ein, das ich mir eine Liste bastle mit allen TopLevelDomains und allen SecondLevelDomains, die dann in etwa so aussieht:
Quelltext 1:
| com, de, co.au, org.au, net.au... |
Und dann schaue wie die endung der adresse ist und dementsprechend die adresse nach dem letzten punkt vor der endung abschneide. Dafür bräuchte ich aber eine einigermaßen zuverlässige Liste der TLDs/SLDs... weiß zufällig jemand wo man die herbekommen könnte?
100%ig zuverlässig muss es nicht sein, aber sollte zumindest für die gängigsten gehen.
Oder gibt es noch einen anderen gescheiten weg?
Ich brauche das ganze in Python, aber prinzipiell ist nehm ich auch gern Lösungen in beliebigen anderen Sprachen.
Danke,
Aya~
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
Nano-Ware
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: So 23.10.11 12:02
Ich glaub das geht einfach nicht weil vorne eine variable Zahl von Subs ist und hinten auch ne variable Zahl von Anschnitten
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: So 23.10.11 12:52
|
|
Greenberet
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: So 23.10.11 13:00
Wenn es sich wirklich nur um den DNS Namen ( www.c-sharp-forum.de) in deiner Adresse handelt und nicht um die gesammte url ( e.g. www.c-sharp-forum.de...e=reply&t=107480 ), dann könntest du das durch eine kleine Suche bzw. String.Split versuchen. Ansonsten müsstest du das Protokoll ( ) und den Pfad ( /posting.php?mode=reply&t=107480 ) auch entfernen.
1) Url raussuchen
Du durchsuchst den String von Hinten nach Vorn bis du den 2ten Punkt findest.
Jetzt musst du nur noch ein Substring von der Position des Punktes +1 bis zum Ende des Strings ausführen ---> aus www.c-sharp-forum.de wird c-sharp-forum.de
Wenn es keinen 2ten Punkt gibt kannst du den Namen direkt verwenden, weil er bereits gekürzt ist.
2) String.Split
Du trennst den String bei allen Punkten und fügst nachher den vorletzten und den letzten Teilstring getrennt von einem Punkt wieder zusammen.
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 23.10.11 13:04
Genau das geht ja nicht, siehe das beispiel mit google.co.uk ... also da einfach nach dem zweiten punkt von hinten splitten geht nicht.
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 23.10.11 13:06
Also da sämtliche Browser eine TLD-Liste mitführen (für die Cookie-Domains), wird das wohl einen Grund haben.
 geht nicht anders als Liste und dann längsten möglichen Match suchen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 23.10.11 13:10
Jep, bleibt nur die Frage wo ich eine solche Liste finde...
Alles was ich bisher gefunden habe sind wirkliche TLDs..
EIne luste der SLDs finde ich nur bei Domain Anbietern wie domains-united.de.. aber da fehlen eine menge (z.B. gov.au, auch wenn die jetzt nicht so wichtig wäre).
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 23.10.11 13:16
Die Liste der SubTLD und TLD ist eine Lösung, alternativ kannst du aber i.d.R. auch nicht-rekursiv auflösen lassen und den SOA-Name aus der letzten Anfrage nehmen. Nachteil ist aber bei Subdelegationen dass er dann falsch auflöst ; das lasst sich aber über die Maximallänge der TLD abfängst, bzw. die Anzahl der Labels, die TLD sein können.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 23.10.11 13:21
Eventuell könnte das sogar funktionieren. Aber immer einen Netz-Zugriff, wenn man eine URL zerpflücken will?
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| >nslookup uk Name: uk.
>nslookup gov.uk Name: gov.uk
>nslookup doh.gov.uk Nicht autorisierte Antwort: Name: doh.gov.uk Address: 213.216.145.131 |
Wenn du genug Testdaten hast, könnte man damit natürlich die TLD-Liste halbautomatisch bauen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 23.10.11 13:25
Mhh, das klingt garnicht so verkehrt... sollte auch zuverlässig funktionieren, oder?
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 23.10.11 13:43
Nehmen wir mal testweise die Domain box1.sys.ccs-baumann.de (die einigen hier im Forum bekannt vorkommen dürfte):
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| $ dig +trace in all box1.sys.ccs-baumann.de
; <<>> DiG 9.7.3 <<>> +trace in all box1.sys.ccs-baumann.de ;; global options: +cmd . 56011 IN NS l.root-servers.net. . 56011 IN NS f.root-servers.net. . 56011 IN NS i.root-servers.net. . 56011 IN NS a.root-servers.net. . 56011 IN NS b.root-servers.net. . 56011 IN NS m.root-servers.net. . 56011 IN NS j.root-servers.net. . 56011 IN NS c.root-servers.net. . 56011 IN NS k.root-servers.net. . 56011 IN NS d.root-servers.net. . 56011 IN NS g.root-servers.net. . 56011 IN NS h.root-servers.net. . 56011 IN NS e.root-servers.net. ;; Received 272 bytes from 193.189.244.225#53(193.189.244.225) in 124 ms
. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2011102300 1800 900 604800 86400 ;; Received 96 bytes from 198.41.0.4#53(a.root-servers.net) in 90 ms
. 57450 IN NS g.root-servers.net. . 57450 IN NS h.root-servers.net. . 57450 IN NS f.root-servers.net. . 57450 IN NS m.root-servers.net. . 57450 IN NS i.root-servers.net. . 57450 IN NS j.root-servers.net. . 57450 IN NS e.root-servers.net. . 57450 IN NS l.root-servers.net. . 57450 IN NS d.root-servers.net. . 57450 IN NS b.root-servers.net. . 57450 IN NS c.root-servers.net. . 57450 IN NS a.root-servers.net. . 57450 IN NS k.root-servers.net. ;; Received 336 bytes from 193.189.244.225#53(193.189.244.225) in 129 ms
de. 172800 IN NS a.nic.de. de. 172800 IN NS s.de.net. de. 172800 IN NS f.nic.de. de. 172800 IN NS l.de.net. de. 172800 IN NS z.nic.de. ;; Received 295 bytes from 192.112.36.4#53(g.root-servers.net) in 972 ms
ccs-baumann.de. 86400 IN NS ns3.regworld.com. ccs-baumann.de. 86400 IN NS ns4.regworld.com. ;; Received 89 bytes from 194.246.96.1#53(z.nic.de) in 100 ms
box1.sys.ccs-baumann.de. 600 IN A 176.9.26.144 ;; Received 57 bytes from 83.125.74.8#53(ns3.regworld.com) in 189 ms |
(Ja, das ist via UMTS aufgelöst, daher die Latenzen)
Wichtig sind im wesentlichen die Zeilen mit den Name-Servern.
Die letzte Delegation vor der finalen Antwort zeigt auf ccs-baumann.de, was die gesuchte Antwort ist.
Nun zu dem oben erwähnten Ausnahmefall, den ich oben erwähnt hab: 1.0.0.127.local.rbl.ccs-baumann.de (meine DNSRBL) SOA ist rbl.ccs-baumann.de:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| $ dig +trace in all 1.0.0.127.local.rbl.ccs-baumann.de
; <<>> DiG 9.7.3 <<>> +trace in all 1.0.0.127.local.rbl.ccs-baumann.de ;; global options: +cmd . 55683 IN NS d.root-servers.net. . 55683 IN NS g.root-servers.net. . 55683 IN NS h.root-servers.net. . 55683 IN NS e.root-servers.net. . 55683 IN NS l.root-servers.net. . 55683 IN NS f.root-servers.net. . 55683 IN NS i.root-servers.net. . 55683 IN NS a.root-servers.net. . 55683 IN NS b.root-servers.net. . 55683 IN NS m.root-servers.net. . 55683 IN NS j.root-servers.net. . 55683 IN NS c.root-servers.net. . 55683 IN NS k.root-servers.net. ;; Received 288 bytes from 193.189.244.225#53(193.189.244.225) in 119 ms
. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2011102300 1800 900 604800 86400 ;; Received 96 bytes from 192.33.4.12#53(c.root-servers.net) in 109 ms
. 54755 IN NS h.root-servers.net. . 54755 IN NS b.root-servers.net. . 54755 IN NS i.root-servers.net. . 54755 IN NS g.root-servers.net. . 54755 IN NS a.root-servers.net. . 54755 IN NS d.root-servers.net. . 54755 IN NS f.root-servers.net. . 54755 IN NS c.root-servers.net. . 54755 IN NS k.root-servers.net. . 54755 IN NS l.root-servers.net. . 54755 IN NS j.root-servers.net. . 54755 IN NS m.root-servers.net. . 54755 IN NS e.root-servers.net. ;; Received 336 bytes from 193.189.244.225#53(193.189.244.225) in 109 ms
de. 172800 IN NS a.nic.de. de. 172800 IN NS f.nic.de. de. 172800 IN NS l.de.net. de. 172800 IN NS s.de.net. de. 172800 IN NS z.nic.de. ;; Received 306 bytes from 128.63.2.53#53(h.root-servers.net) in 191 ms
ccs-baumann.de. 86400 IN NS ns4.regworld.com. ccs-baumann.de. 86400 IN NS ns3.regworld.com. ;; Received 100 bytes from 194.246.96.1#53(z.nic.de) in 80 ms
rbl.ccs-baumann.de. 600 IN NS master.rbl.ccs-baumann.de. ;; Received 73 bytes from 83.125.74.8#53(ns3.regworld.com) in 100 ms
local.rbl.ccs-baumann.de. 60 IN SOA ns42.sys.ccs-baumann.de. BenBE1987.gmx.net. 1316461500 60 60 86400 60 ;; Received 114 bytes from 176.9.26.150#53(master.rbl.ccs-baumann.de) in 79 ms |
Die korrekte Antwort fällt hier aber auch auf ccs-baumann.de, da mein Domainname die Länge gültiger SubTLDs und TLDs (laut IANA IIRC 8 Zeichen) überschreitet.
Hoffe, das hilft als Erklärung.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 23.10.11 13:55
In Delphi gibt es das fertig, da sieht das so aus:
// EDIT:
Ach so, es geht ausschließlich um das Auseinandernehmen des Hostnamens, das hatte ich falsch verstanden.
Zuletzt bearbeitet von jaenicke am So 23.10.11 14:54, insgesamt 1-mal bearbeitet
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 23.10.11 14:38
Mhh.. hab direkt mal etwas gefunden wo es nicht klappt...
Ich nutze das ganze um aus Hostnamen die in meinem ServerLog ankommen die Domain zu extrahieren, das klappt grad mit dem nslookup auch super, ausser bei der Telekom...
Diese funktionieren:
Quelltext 1: 2: 3:
| baiduspider-220-181-108-182.crawl.baidu.com -> baidu.com 208-115-111-69-reverse.wowrack.com -> wowrack.com pa114-72-199-143.pa.nsw.optusnet.com.au -> optusnet.com.au |
Hier kommt leider das raus:
Quelltext 1:
| p5b08b87c.dip.t-dialin.net -> p5b08b87c.dip.t-dialin.net |
Also ein nslookup auf "net", "t-dialin.net" und "dip.t-dialin.net" liefert kein ergebnis, erst "p5b08b87c.dip.t-dialin.net" tut es...
da bin ich aber vermutlich machtlos, oder?
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
ujr
      
Beiträge: 102
Erhaltene Danke: 12
|
Verfasst: So 23.10.11 17:30
Hallo,
die Frage ist ja, was Du damit machen willst. Welche Information aus der Telekom-Adresse wäre denn für Dich relevant?
Evtl. hilft dies ja: www.whois.net/whois/t-dialin.net
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 23.10.11 22:24
@Aya: Beachte bitte was das +trace in dem dig-Kommando jeweils macht. Kurzfassung: Es hangelt sich von den Root-Nameservern entlang zu der angeforderten Domain. Die markierten Stellen waren jeweils die Domains, für die (und Subdomains) ein anderer Nameserver delegiert wurde (die sogenanten SOA "Start of Authority"). Daher auch das Beispiel mit meinen beiden Domains und der Subdelegation. Für t-dialin.net bzw. obiges Beispiel von Dir erhalte ich:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| $ dig +trace in all p5b08b87c.dip.t-dialin.net
; <<>> DiG 9.7.3 <<>> +trace in all p5b08b87c.dip.t-dialin.net ;; global options: +cmd . 81129 IN NS c.root-servers.net. . 81129 IN NS m.root-servers.net. . 81129 IN NS g.root-servers.net. . 81129 IN NS b.root-servers.net. . 81129 IN NS a.root-servers.net. . 81129 IN NS e.root-servers.net. . 81129 IN NS d.root-servers.net. . 81129 IN NS j.root-servers.net. . 81129 IN NS i.root-servers.net. . 81129 IN NS l.root-servers.net. . 81129 IN NS h.root-servers.net. . 81129 IN NS k.root-servers.net. . 81129 IN NS f.root-servers.net. ;; Received 449 bytes from 10.8.23.254#53(10.8.23.254) in 24 ms
. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2011102301 1800 900 604800 86400 ;; Received 96 bytes from 2001:500:1::803f:235#53(h.root-servers.net) in 138 ms
. 81129 IN NS e.root-servers.net. . 81129 IN NS c.root-servers.net. . 81129 IN NS b.root-servers.net. . 81129 IN NS g.root-servers.net. . 81129 IN NS l.root-servers.net. . 81129 IN NS i.root-servers.net. . 81129 IN NS a.root-servers.net. . 81129 IN NS m.root-servers.net. . 81129 IN NS k.root-servers.net. . 81129 IN NS d.root-servers.net. . 81129 IN NS h.root-servers.net. . 81129 IN NS j.root-servers.net. . 81129 IN NS f.root-servers.net. ;; Received 449 bytes from 10.8.23.254#53(10.8.23.254) in 27 ms
net. 172800 IN NS j.gtld-servers.net. net. 172800 IN NS a.gtld-servers.net. net. 172800 IN NS i.gtld-servers.net. net. 172800 IN NS m.gtld-servers.net. net. 172800 IN NS e.gtld-servers.net. net. 172800 IN NS c.gtld-servers.net. net. 172800 IN NS d.gtld-servers.net. net. 172800 IN NS g.gtld-servers.net. net. 172800 IN NS f.gtld-servers.net. net. 172800 IN NS k.gtld-servers.net. net. 172800 IN NS b.gtld-servers.net. net. 172800 IN NS l.gtld-servers.net. net. 172800 IN NS h.gtld-servers.net. ;; Received 501 bytes from 192.228.79.201#53(b.root-servers.net) in 216 ms
t-dialin.net. 172800 IN NS dns00.sul.t-online.de. t-dialin.net. 172800 IN NS dns01.sul.t-online.de. t-dialin.net. 172800 IN NS dns00.sda.t-online.de. t-dialin.net. 172800 IN NS dns01.sda.t-online.de. ;; Received 143 bytes from 192.43.172.30#53(i.gtld-servers.net) in 48 ms
dip.t-dialin.net. 86400 IN NS dns51.t-ipnet.de. dip.t-dialin.net. 86400 IN NS dns01.btx.dtag.de. dip.t-dialin.net. 86400 IN NS dns04.btx.dtag.de. ;; Received 171 bytes from 2003:2:2:140:fee::53#53(dns01.sul.t-online.de) in 63 ms
p5b08b87c.dip.t-dialin.net. 86400 IN A 91.8.184.124 ;; Received 60 bytes from 194.25.2.130#53(dns01.btx.dtag.de) in 31 ms |
Vergleiche auch bzgl. den TLDs unter secure.wikimedia.org...iki/Top-Level-Domain
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Mo 24.10.11 00:45
Hi BenBE,
ich verstehe nur nicht ganz was mir dieses dip +trace genau bringen soll... also, wenn ich mir das ergebnis davon anschaue wuesste ich nicht worin diese sich zwischen ".net", "t-dialin.net", "dip.t-dialin.net" etc unterscheiden, so das ich damit rausbekomme welches die Domain ist.
Ich hatte es bei mir via pythons socket.gethostbyaddr() gemacht und da dann halt stueckchen weise die adresse gegeben bis ein ergebnis rauskam, also z.B.:
Quelltext 1: 2: 3:
| socket.gethostbyname('au') -> None socket.gethostbyname('com.au') -> None socket.gethostbyname('google.com.au') -> Yay :) |
Nur da liefert eben die t-dialin.net adresse erst ein positives ergebnis bei "p5b08b87c.dip.t-dialin.net".. bei allen anderen adressen die ich bisher probiert hatte funktionierte die Methode sehr gut.
Es kann jetzt natuerlich auch sein das die Domain halt einfach "p5b08b87c.dip.t-dialin.net" ist, dann bin ich halt wohl machtlos - ein ergebnis wie "t-dialin.net" waere aber trotzdem schoener, hautpsache ohne diese random-zahl am anfang.
Aya
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 24.10.11 00:58
Der Befehl dig +trace versucht die gegebene Domain aufzulösen unter der Annahme, dass er keinen anderen DNS-Server hat, der das für ihn tut. Der geht dann also der Reihe nach zu jedem Server hin (zuerst zu den Root-Servern) und fragt, ob die Server die Domain XY kennen. Jeder DNS-Server antwortet dann mit der detailliertesten, ihm autoritiv bekannten Domain.
Bei den Root-Servern ist das eben erstmal die erste TLD, mit einem Verweis, welche Server mehr wissen (Delegation; die Sachen hinter dem IN NS). Diesen schickt er auch wieder die Anfrage nach der vollen Domain und bekommt hier die Delegation zum nächsten Server, der wieder mehr wissen dürfte. Kennt der angefragte Server die Domain, antwortet er mit einer autoritiven Antwort "Jup, fdas ist XY" oder mit einem "Gibt's nicht!". An dem Punkt, wo Du eine autoritive Antwort bekommst, brauchst Du nur schauen, was die detaillierteste Antwort war, die dich delegiert hat zum autoritiven Server.
Es ist also nicht die eigentliche autoritive Antwort interessant, sondern die letzte Nicht-Autoritive und dort insbesondere, für welche Domain er dich delegiert hat. In meinem Beispiel also ccs-baumann.de. und rbl.ccs-baumann.de. Und anhand dieser Angabe kommst du bei T-Online zumindst schon mal zu dip.t-dialin.net, was dem Kriterium "ohne diese Random-Zahl" ja schon entspricht  Für viele der Domains sollte der Ansatz so bereits zu brauchbaren Ergebnissen führen; auch wenn er nicht ganz perfekt ist. Hier kann man aber über das filtern zu langer SubTLDs etwas tweaken (ggf. nur 6 statt 8, ...).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Mo 24.10.11 01:06
Mhh okay, soweit versteh ich es - nur, woran erkenn ich ob es eien autoritive antwort ist oder nicht?  Am "NS"?
Ein anderes beispiel bei dem mein bisheriger weg auch nicht klappt:
Quelltext 1:
| ec2-184-72-202-21.compute-1.amazonaws.com |
Wenn ich diese adresse hier eintippe: www.who.is/dns/
Bekommt der irgendwie raus das dies die domain amazonaws.com ist..
Bei "p5b08b87c.dip.t-dialin.net" bekommt er genauso raus das es t-dialin.net ist... da waere es doch interessant - wie?
Aya
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 24.10.11 01:28
Schlüsselwort ist hier SOA: Start of Authority.
Für dein Amazon-Beispiel ist das:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| C:\>nslookup -type=soa ec2-184-72-202-21.compute-1.amazonaws.com Server: fritz.box Address: 10.x.x.x
compute-1.amazonaws.com primary name server = pdns1.ultradns.net responsible mail addr = hostmaster.amazon.com serial = 2010101800 refresh = 10800 (3 hours) retry = 3600 (1 hour) expire = 2592000 (30 days) default TTL = 60 (1 min) |
Danach Längenfilter, wie erwähnt.
Ob eine Antwort autoritiv war oder nicht erfährst Du aus der Antwort des DNS-Servers, wenn du diesen direkt fragst. Wenn Du gethostbyname oder andere Hilfsfunktionen verwendest, musst du direkt nach den SOA-Records fragen, dann erhälst Du bereits die verkürzte Antwort wie oben gezeigt. Der Weg über die NS-Records ist insofern eine Alternative, als dass Du neben der eigentlichen Delegation immer auch den Pfad mit erhältst. Über einen Hit-Counter kannst Du dann via Heuristik ein wenig filtern (SubTLDs haben zahlreiche Subdomains mit SOA, während delegierte Subdomains einer normalen Domain i.d.R. nur wenige existieren.)
Jaja, ist gehackt, aber da hat man durchaus einen Ansatz. Kleines Testdatenset wäre aber durchaus mal wünschenswert, damit man das mal auf ne etwas größere Domain-Menge testen kann. Theoretisch sollte man nämlich mit ausreichend Testdaten auf der Liste der TLDs und SubTLDs rauskommen, wenn die Heuristik stimmt.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mo 24.10.11 01:31
Die Frage ist eben: was willst du? "Den Domain Namen" gibt's ja so nicht. Was meine Methode ausgibt, ist die erste Ebene mit A-Record. Das ist bei T-Com eben nach einigen rein virtuellen Ebenen die p${hexencode(in_addr)}.dip.t-dialin.net.
BenBE... hat das grade selbst erklärt während ich den Link gesucht hab.
Wenn du wirklich nur "den Namen vor der TLD" wilst, geht das nur mit einer Liste. Diejenige nach der Cookies gehen ist die Public Suffix List. Alles, was da drauf steht ist ein Public Suffix; erst da drunter kann man eigene Hostnamen registrieren.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
|