Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Domains/Subdomains per Script erkennen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
robo
PostRank 8
PostRank 8
Beiträge: 837
Registriert: 23.12.2003, 19:41
Wohnort: Schwangau

Beitrag von robo » 26.01.2006, 11:48

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 :)

Anzeige von ABAKUS

von Anzeige von ABAKUS »


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

Michael
PostRank 8
PostRank 8
Beiträge: 808
Registriert: 04.01.2004, 20:23
Wohnort: Herne

Beitrag von Michael » 26.01.2006, 12:57

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:

robo
PostRank 8
PostRank 8
Beiträge: 837
Registriert: 23.12.2003, 19:41
Wohnort: Schwangau

Beitrag von robo » 26.01.2006, 13:23

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 :)

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

Jetzt anfragen: 0511 / 300325-0.


800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 26.01.2006, 18:32

[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 .....

Michael
PostRank 8
PostRank 8
Beiträge: 808
Registriert: 04.01.2004, 20:23
Wohnort: Herne

Beitrag von Michael » 26.01.2006, 18:36

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

robo
PostRank 8
PostRank 8
Beiträge: 837
Registriert: 23.12.2003, 19:41
Wohnort: Schwangau

Beitrag von robo » 26.01.2006, 19:12

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 :)

robo
PostRank 8
PostRank 8
Beiträge: 837
Registriert: 23.12.2003, 19:41
Wohnort: Schwangau

Beitrag von robo » 26.01.2006, 19:14

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 :)

Michael
PostRank 8
PostRank 8
Beiträge: 808
Registriert: 04.01.2004, 20:23
Wohnort: Herne

Beitrag von Michael » 26.01.2006, 21:32

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:

robo
PostRank 8
PostRank 8
Beiträge: 837
Registriert: 23.12.2003, 19:41
Wohnort: Schwangau

Beitrag von robo » 27.01.2006, 03:30

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 :)

Michael
PostRank 8
PostRank 8
Beiträge: 808
Registriert: 04.01.2004, 20:23
Wohnort: Herne

Beitrag von Michael » 27.01.2006, 08:25

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

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag