Kurze Twitter Namen finden für #Nerds

Teile mit anderen, was dir gefällt.

twitter namen bereits vergebenNeulich wollte ich ein neues Twitter Konto eröffnen, doch alle kurzen Namen, die mir einfielen, waren schon belegt. So schrieb ich ein kleines Programm, das mir alle freie Twitter Namen ermittelt.

Falls Du noch einen kurzen Twitter Namen suchst, gibt es hier eine Liste mit freien, 5-stelligen Twitter Namen. Ausschließlich mit den Buchstaben des Alphabets und zwischen @aaaaa bis @zzzzz.

Kurze Twitter Namen finden

Ob nun @alese oder @h8ter, kurze Twitter Namen (handles) sind oft schon vergeben. Schaut man sich deren Profile an, sind es oft brach liegende Accounts ohne Bild (eggheads) und ohne aktuelle Tweets.

Tote Accounts sind mega nervig, doch Twitter löscht inaktive Nutzerkonten nicht. Statt dessen sollen wir bei der Registrierung zusätzliche Zahlen oder Unterstriche an den gewünschten Benutzernamen anhängen. @TollerTipp_, aber ich wollte keinen Unterstrich im Namen haben. Niemand_mag_den_Unterstrich. Mit viel Glück und Ausdauer fand ich schließlich doch einen freien, vierstelligen Twitter Namen – @abbo. Doch erneut klappte die Registrierung nicht.

twitter namen ändern

Twitter lässt die Registrierung vierstelliger Handles nicht mehr zu. Ein neuer Twitter Account muss aus mindestens 5 Zeichen bestehen. Um so wertvoller sind wohl alte Handles wie @N, @CNN oder @ZDF.

Wertvoll ist nicht übertrieben. Es gibt tatsächlich Firmen, und Staaten, die für Ihren Wunsch-Twitter-Namen eine Menge Geld bezahlt haben.

Geld wollte ich nicht ausgeben und lange Namen wie @heidewitzka kamen auch nicht in Frage. Als ich beim Herumprobieren mit 5 Buchstaben noch immer kein Glück hatte, packte mich der Ehrgeiz. Ich bin kein Hacker aber Nerd genug, um ein kleines Skript zu schreiben, das für mich alle freien 5-stelligen Twitter Nutzernamen findet.

<Nerdmode>

Mit einem alten, inaktiven Twitter Account (*grins*) erwarb ich einen Twitter Developer-Key und konnte nun auf die Twitter-API Funktionen zugreifen. Zwar gibt es dort keine Liste verfügbarer Benutzernamen, trotzdem fand ich dort den richtigen Ansatz. Mit der API-Funktion users/users-lookup lassen sich bis zu 100 Nutzernamen auf einmal abfragen. Twitter gibt als Antwort Nutzerdaten zurück. Fehlt ein abgefragter Name in der Ergebnisliste, dann kann das verschiedene Dinge bedeuten:

  1. Der Nutzer ist suspended, also deaktiviert. Eine Registrierung mit diesem Namen ist nicht möglich.
  2. Es handelt sich um ein nicht erlaubtes Wort („about“, „forum“, „lists“ …). Die gehen auch nicht
  3. Der Name ist noch frei und kann registriert werden. :mrgreen:

Ich wollte also ein Skript schreiben, dass jede 5-stellige Buchstabenkombination durchprobiert und sich diejenigen Namen merkt, zu denen Twitter nichts zurückliefert.

Step 1 – Wörterbuchdatei erstellen

Als erstes erstellte ich eine Wörterbuchdatei mit einem mir bis dato unbekannten aber sehr genialen Tool: Crunch kann Wortlisten nach individuellen Wünschen generieren. Damit erzeugte ich eine Datei aaaaa-zzzzz.txt mit allen 5-stelligen Buchstabenkombinationen des Alphabets und importierte diese dann in eine Datenbanktabelle.


crunch 5 5 -f charset.lst lalpha -o START.txt

Step 2 – Twitter Namen abfragen

Zu jedem Eintrag in der Wortliste sollte Twitter mir die Nutzerdaten liefern.
An die API darf man höchstens 20 Anfragen pro 5 Minuten stellen und dabei jedes mal bis zu 100 Nutzernamen abfragen. Das macht max. 24.000 Checks pro Stunde. Es dauert mindestens 20,6274 Tage bis alle Checks gelaufen sind. 😣

Okay, Zeit spielt keine große Rolle aber ich brauchte noch einen Auslöser, (einen Trigger) für mein Skript, der alle 5 Minuten die Ausführung anstößt. Da mein Server keine cronjobs unterstützt, habe ich Uptimerobot gebeten, alle 5 Minuten das Skript erneut aufzurufen.

Das Skript liest pro Durchlauf 2000 Einträge aus der Wortliste und teilt sie in 20 x 100 Wörter. 20 mal fragt das Skript die Twitter-API an und markiert die existierenden Einträge in der Datenbank als taken. Die restlichen sind freie Twitter Namen oder deaktivierte Handles.


//get next 2000 words from wordlist
$wordlist = $this->getWordList(0,2000);
//init result data structure
foreach ($wordlist as $entry){
  $wordlistArr[] = $entry;
  $found[$twhandle]['user'] = $entry;
  $found[$twhandle]['status'] = 'unknown';
}

//client used to connect with Twitter API
$twClient = $this->getTwitterClient();

//step 1: read 100 users from twitter and repeat this 20x.
for ($i=0;$i<20;$i++){
  //divide wordlist into parts with 100 values
  $set = array_slice($wordlistArr, ($i-1)*100, 100);

  $response = $twClient->users->lookup($set)->toValue(); //ask twitter
  foreach($response as $r){
    if (isset($r->screen_name)){
      //twitter knows this name, it is already taken
      $lcScreenName = strtolower($r->screen_name);
      $found[$lcScreenName]['status'] = 'taken';
    }
  }
}

Das Skript sollte auch prüfen, ob es sich um einen deaktivierten Account handelt. Das geht ganz einfach. Ruft man das Profil eines deaktivierten Nutzers im Browser auf, wird man auf eine spezielle Seite für tote Accounts weitergeleitet. Wenn das Skript also die Profilseite aufruft und eine Umleitung erkennt, dann markiert es den Namen als suspended.


//step 2: check if the remaining handles are suspended
foreach($wordlistArr as $curruser){
  $checkURL = 'https://twitter.com/'.$curruser;
  $fp = fopen($checkURL, "rb");
  //the header information is all we need to know
  $headers = $http_response_header;
  fclose($fp);
  foreach($headers as $h){
    if (eregi("^location: https://twitter.com/account/suspended",$h)){
      //request has been redirected to the suspended page.
      $found[$curruser]['status'] = 'suspended';
    }
  }
}

Anschließend bleiben nur noch die verfügbaren Twitter Namen und ein paar nicht erlaubte Namen übrig.
Die ebenfalls auseinander zu halten, ist etwas komplizierter.

Auf der Registrierungsseite prüft Twitter noch während der Eingabe des Nutzernamens, ob dieser verfügbar ist. Diese Anfrage kann das Skript auch stellen das Ergebnis auswerten.


//step 3: validate twitter handle
//will only work for a few requests...
foreach ($wordlist as $handle){
  $wordlistArr[] = $handle;
  $found[$handle]['user'] = $handle;
  $found[$handle]['status'] = 'available';
  
  $checkURL = 'https://twitter.com/users/username_available?context=signup&username='.$handle;
  $json['valid'] = false;
  $json['reason'] = 'unknown'; 
  
  //make request
  if ($fp = fopen($checkURL, "rb")) do {  
  $response=fgets($fp);
  } while ( !feof($fp) );
  fclose($fp);
  
  //process response as json
  if (isset($response)){
    $json = json_decode($response, true);
    if ($json['valid']){
      //handle is valid
      $found[$handle]['status'] = 'valid';
    }
    else if (isset($json['reason']) && (strlen($json['reason'])>0)){
      //handle is not valid.
      //save reason.
      $found[$handle]['status'] = $json['reason'];
    }
  }
}

Wer tausende Anfragen von der gleichen IP-Adresse absetzt, wird von Twitter geblockt und kriegt gar keine Antworten mehr. 😣 Ich habe diesen Ansatz daher nicht konsequent durchgeführt. Die Liste der verfügbaren Twitter Namen kann also ein paar unerlaubte Wörter enthalten. 13 sind mir bereits bekannt.

  1. @about
  2. @aczaw
  3. @akbmv
  4. @alfnu
  5. @apozp
  6. @awprn
  7. @basah
  8. @bbcbb
  9. @bcpdd
  10. @bczmn
  11. @forum
  12. @lists
  13. @randy

</Nerdmode>

Tja, soviel Aufwand, um „ein paar“ freie Twitter Namen zu ermitteln.

Auswertung 5 stellige Twitter Namen

als Tabelle…

gesamt:11.881.376
belegt:4.405.502
deaktiviert:1.509.163
nicht erlaubt:13
noch frei:5.966.698

und hier als Diagramm…

5-stellige Twitter Namen
5-stellige Twitter Namen

Es gibt also doch genügend freie Handles. Rund die Hälfte der 5-stelligen Buchstabenkombinationen sind noch nicht als Twitter Namen registiert. Wer aber einen kurzen und sinnvollen Benutzernamen haben möchte, muss dennoch lange suchen und herumprobieren. In den Kommentaren werde ich 100 zufällig gewählte Namen veröffentlichen, die stand heute noch frei sind. Wenn ich merke, das Interesse besteht, mache ich auch mal eine kleine Webseite, auf der ihr gezielt nach euren Wünschen suchen könnt.