Seite 1 von 1

Domains/Subdomains per Script erkennen

Verfasst: 26.01.2006, 11:48
von robo
Hi Leute,

ich mache mir gerade Gedanken darüber, wie man Subdomains per Script erkennen kann. Einfach von rechts die Punkte zählen geht ja nicht, denn es gibt ja so Zeugs wie <.co.uk> oder <.com.tw>. Wenn ich da die Punkte zähle, würde ja die eigentliche Domain schon als Subdomain gewertet. Die ganzen Sonderfälle wie die o. g. vielleicht extra behandeln? Aber wo kriege ich eine möglichst komplette Liste dieser Sonderfälle her? Sonst Ideen?

Wenn ich hier den entscheidenden Tip bekomme, stelle ich dann auch den entsprechenden Codeschnipsel (Perl) zur Verfügung.

cu, Robo :)

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Domains/Subdomains per Script erkennen

Verfasst: 26.01.2006, 12:57
von Michael
Je nachdem wie vollständig sie sein sollte habe ich
1. Ein Skript das schon die wichtigsten ca. 350 TLDs erkennt (Darunter sind auch Domains wie z.B. <.co.uk> oder <.com.tw> auch wenn es streng genommen keine TLDs sind)

2. Eine fast vollständige Liste mit allen bekannten TLDs++ (wie ich sie gerne nenne :)

Die Liste ist sehr lang und umfasst auch total abgedrehte Domains für US Bundesstaten und japanische Städte usw. Eigentlich nicht wirklich brauchbar für die üblichen Zwecke . :lol:

Re: Domains/Subdomains per Script erkennen

Verfasst: 26.01.2006, 13:23
von robo
Michael hat geschrieben:Je nachdem wie vollständig sie sein sollte habe ich
1. Ein Skript das schon die wichtigsten ca. 350 TLDs erkennt (Darunter sind auch Domains wie z.B. <.co.uk> oder <.com.tw> auch wenn es streng genommen keine TLDs sind)
Wenn ich das richtig verstehe, ist das eine Liste. Eine generische bzw. algorithmische Erkennung wäre mir lieber, aber das geht wohl nicht.

Bleibt die Frage, ob du die Liste rausrückst.
Michael hat geschrieben:2. Eine fast vollständige Liste mit allen bekannten TLDs++ (wie ich sie gerne nenne :)

Die Liste ist sehr lang und umfasst auch total abgedrehte Domains für US Bundesstaten und japanische Städte usw. Eigentlich nicht wirklich brauchbar für die üblichen Zwecke . :lol:
Na ich denke, das wäre übertrieben. ;-)

cu, Robo :)

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Re: Domains/Subdomains per Script erkennen

Verfasst: 26.01.2006, 18:32
von 800XE
[quote="robo"]algorithmische Erkennung wäre mir lieber, aber das geht wohl nicht.[/quote]
wie Michael schon sagte ... eigentlich gibts in england nur subdomains

Und eine algo erkennung wird nie 100%tig sein

Aber mal mein Vorschlag
erstnal links das hatetepe://wewewe. abschneiden
dann die Punte die noch da sind zählen

sind es 2 (oder auch mehr) ?
wie lang ist das STück rechts, inkl der 2 Punkte
z.B. mercedes.co.uk
= .co.uk = 6 Zeichen
oder
firma.de.com
= .de.com = 7 Zeichen

Ich würde mal sagen 8 Zeichen sind erlaubt, wenn es mehr ist, ist es eine echte Domain welche eine Subdomain hat

shop.firma.de
= .firma.de = 9 zeichen

naja, nach dem algo sind .de.vu dann "echte" Domains



algo mit Liste
die Liste enthält nicht

.de.com
.de.vu

sondern nur de,com,at,ch,net,org,vu,ws,ltd,co,uk (ja, gibt auch ".ltd.uk")

diese liste nehmen und versuchen .xx.yy zu löschen .... ist es erfolgreich, dann war es ein "subdomainTLD" und das links daneben ist dann eine echte DOmain ... obwohl es eigentlich nur eine SUbdomain ist .....

Verfasst: 26.01.2006, 18:36
von Michael
Bleibt die Frage, ob du die Liste rausrückst.
... ich machs :D

Ich habe mir mal etwas Zeit genommen, und das Skript mit ein paar Hintergrundinformationen unter https://www.m-software.de/ veröffentlicht.

Gruß
Michael

Re: Domains/Subdomains per Script erkennen

Verfasst: 26.01.2006, 19:12
von robo
800XE hat geschrieben:
robo hat geschrieben:algorithmische Erkennung wäre mir lieber, aber das geht wohl nicht.
wie Michael schon sagte ... eigentlich gibts in england nur subdomains
Das war aber nur EIN Beispiel ... davon gibts noch mehr.
800XE hat geschrieben:Und eine algo erkennung wird nie 100%tig sein
Ich habe eine ... :-)
800XE hat geschrieben:Aber mal mein Vorschlag
erstnal links das hatetepe://wewewe. abschneiden
Mache ich eh schon ...
800XE hat geschrieben:dann die Punte die noch da sind zählen

sind es 2 (oder auch mehr) ?
wie lang ist das STück rechts, inkl der 2 Punkte
z.B. mercedes.co.uk
= .co.uk = 6 Zeichen
oder
firma.de.com
= .de.com = 7 Zeichen

Ich würde mal sagen 8 Zeichen sind erlaubt, wenn es mehr ist, ist es eine echte Domain welche eine Subdomain hat
Funktioniert nicht.

hp.com ist 'ne echte Domain
managementsoftware.hp.com ist 'ne echte Subdomain

Aber so funktioniert es: Von links her beginnend einen Block nach dem anderen abschneiden und schauen, ob das, was übrigbleibt, noch per DNS auflösbar ist. Wenn nicht, hat man die "TLD". Nachteil: Ist saulangsam, gerade bei längeren Listen.

Code: Alles auswählen

sub domain &#123;
  my $res = shift;
  $res =~ s/^&#40;http&#58;\/\/&#41;?&#40;www\.&#41;?&#40;&#91;^\/&#93;+&#41;&#40;\/.*|&#41;$/$3/;
  my &#40;$lastres, $ip&#41;;
  while &#40;$res =~ /\.&#91;^\.&#93;+\./&#41; &#123;
    $lastres = $res;
    $res =~ s/^&#91;^\.&#93;+\.&#40;.*&#41;$/$1/;
    unless &#40;$ip = &get_ip &#40;$res&#41;&#41; &#123;
      $res = $lastres;
      last;
    &#125;
  &#125;
  return $res;
&#125;

sub get_ip &#123;
  my &#40;$name, $aliases, $addrtype, $length, @addrs&#41; = gethostbyname &#40;shift&#41;;
  my &#40;$a, $b, $c, $d&#41;;
  my $result = '';
  foreach my $addr &#40;@addrs&#41; &#123; 
    &#40;$a, $b, $c, $d&#41; = unpack &#40;'C4', $addr&#41;;
    $result .= ', ' if &#40;$result&#41;;
    $result .= "$a.$b.$c.$d";
  &#125;
  return $result;
&#125;
cu, Robo :)

Verfasst: 26.01.2006, 19:14
von robo
Michael hat geschrieben:
Bleibt die Frage, ob du die Liste rausrückst.
... ich machs :D

Ich habe mir mal etwas Zeit genommen, und das Skript mit ein paar Hintergrundinformationen unter https://www.m-software.de/ veröffentlicht.
Cool, vielen Dank. Ich werde mir das gleich mal ansehen.

Edit:

Super Sache! Danke nochmal. Allerdings meine ich, dein Beispiel-Regex für eine nicht sauber funktionierende Erkennung ist nicht korrekt:

^(www.)?[a-zA-Z0-9-].(?[a-zA-Z])$

Ich würde sagen, das sollte so in der Art aussehen:

^(www\.)?([a-zA-Z0-9-]+\.)+([a-zA-Z]+)$

cu, Robo :)

Domains/Subdomains per Script erkennen

Verfasst: 26.01.2006, 21:32
von Michael
Ok,

so hatte ich das auch gemeint. Auf meiner Webseite hatte ich nur das Häkchen hinter "Convert wikitext in article" nicht entfernt. Eigentlich sollte es so aussehen.

^(www\.)?[a-zA-Z0-9\-]*\.(?[a-zA-Z]*)$

Dein Vorschlag ist sogar noch einen Hauch besser. Das Metazeichen + verlangt ja mindestens 1 Zeichen während der * auch kein Zeichen akzeptieren würde. Meine Variante würde also auch www.. akzeptieren.

Man lernt halt nie aus :oops:

Domains/Subdomains per Script erkennen

Verfasst: 27.01.2006, 03:30
von robo
Hmmm ... schau mal im mittleren Teil, den habe ich nochmal geklammert und einen + Quantifier dahintergesetzt. So matcht der Regex dann auch auf Sub-Sub-Sub-Sub-Subdomains. :-) Was mir allerdings bei dir nicht ganz klar ist, ist das Fragezeichen direkt hinter der öffnenden Klammer im dritten Teil. Wofür steht das?

Achja, meinen Code bin ich noch schuldig. Hier ist er. Die Funktion erwartet eine URL und gibt die Domain (ohne Subdomain) zurück:

Code: Alles auswählen

@ttld = qw &#40;.fed.us .dni.us .com.ac .edu.ac .gov.ac&#41;;

sub domain &#123;
  my $res = shift;
  $res =~ s/^&#40;http&#58;\/\/&#41;?&#40;www\.&#41;?&#40;&#91;^\/&#93;+&#41;&#40;\/.*|&#41;$/$3/;
  
  if &#40;&#40;$res =~ /\.&#91;^\.&#93;+\./&#41; && &#40;$res !~ /^\d&#123;1,3&#125;\.\d&#123;1,3&#125;\.\d&#123;1,3&#125;\.\d&#123;1,3&#125;$/&#41;&#41; &#123;
    my $ready = 0;
    foreach my $tld &#40;@ttld&#41; &#123;
      if &#40;$res =~ /^&#40;&#91;^\.&#93;+\.&#41;*&#40;&#91;^\.&#93;+&#41;\Q$tld\E$/&#41; &#123;
        $res = $2.$tld;
        $ready++;
        last;
      &#125;
    &#125;
    unless &#40;$ready&#41; &#123;
      $res =~ s/&#40;&#91;^\.&#93;+\.&#41;*&#40;&#91;^\.&#93;+\.&#91;^\.&#93;+&#41;$/$2/;
    &#125;
  &#125;
  return $res;
&#125;
Die Liste "@ttld = qw (.fed.us .dni.us .com.ac .edu.ac .gov.ac);" ist jetzt natürlich in dem Beispiel stark gekürzt. :-)

cu, Robo :)

Domains/Subdomains per Script erkennen

Verfasst: 27.01.2006, 08:25
von Michael
Das Fragezeichen wird an der Stelle völlig ignoriert. Kann also entfallen.

PS: Nettes perl Skript. Das erinnert mich daran, warum ich schon lange nichts mehr in perl gemacht habe. :D

Gruß
Michael