WordPress, PHP, JavaScript, Web 2.0, Gaming, Motorräder, Fotografie, Piratenpartei, Privates

twitter

Spaß mit der Twitter API und Ausdruck des Protests gegenüber Harley Davidson

Mi 09 Dez. 09 # Permalink

@moto1203 hat mich über Twitter kontaktiert und gefragt, ob es nicht irgendwie möglich sei ein Programm zu schreiben, dass bei bestimmten Hashtags eine @reply erzeugt. Thematisch ging’s konkret um den bekannten Motorradhersteller “Harley Davidson”, der kürzlich die Tochter- und Traditionsfirma “BUELL” einfach so dicht gemacht hat. Buell Motorräder wurden “nicht oft genug” verkauft, was aber nichts daran ändert, das die Kisten ihren Markt hatten. Das fanden wir jedenfalls schon ziemlich kacke von Harley Davidson.

Also habe ich kurzerhand einen neuen Twitter-Account mit dem klangvollen Namen “@subversives” erstellt und ein kleines PHP-Skript geschrieben, dass neue Tweets mit einem #harley Hashtag sucht und eine zufällig ausgewählte Antwort erstellt. Natürlich konfigurierbar. :-) Weiterlesen…

Twitter-Sicherheitslücke bei geschützten Tweets [Update]

Mo 23 Nov. 09 # Permalink

Ich bin ein recht aktiver Twitter-Nutzer und gehe sehr offen mit dieser Anwendung um, wer das mit seinem Account nicht möchte, der hat bei Twitter die Möglichkeit seine Tweets auf “geschützt” zu setzen. So sind die eigenen 140-Zeichen Botschaften nur von Followern zu lesen, die vom Besitzer des Account freigegeben wurden. Gerade eben bin ich auf einen solchen Account gestoßen: Eine Person, die mir auf Twitter folgt, deren Tweets ich aber nicht lesen darf. Gut, das ist soweit ja kein Problem, jeder kann das mit der Privatsphäre halten, wie es beliebt, nur leider funktioniert das bei Twitter wohl nicht so recht.

Eine simple Google Suche hebelt den Schutzmechanismus von Twitter aus: “site:http://twitter.com/geschuetzter_account” (Beispiel). Offenbar erlaubt Twitter dem GoogleBot den Zugriff auch auf geschützte Tweets und da die Nachrichten nur 140-Zeichen lang sind, können diese über die Suchergebnisliste der Suchmaschine prima – oder gleich komplett über den Google Cache – gelesen werden.

Und nein, die Daten sind meiner Erkenntnis nach nicht im Index gelandet, weil der Twitter-Account zwischenzeitlich nicht geschützt war, es sind auch Tweets aus diesem Monat zu finden.

Das ist irgendwie… hmmm… #FAIL!

[Update]

Laut Aussage eines Freundes ist es doch keine Sicherheitslücke, Accounts die immer geschützt waren, können auch nicht über den Google-Cache oder die Suche aufgerufen werden. Scheinbar war der von mir gefundene Account dann doch zwischenzeitlich nicht geschützt. Verifiziert habe ich das noch nicht.

An der Problematik, dass die Tweets, wenn der Account erst nachträglich geschützt wurde, über Google weiterhin abrufbar sind, ändert das allerdings nichts. Aber das ist ja schon ein recht altes Problem. Was einmal versehentlich öffentlich publiziert wurde, ist aus dem Netz schwer wieder zu entfernen.

Twitter Listen als RSS/Atom Feed abonnieren

Mo 09 Nov. 09 # Permalink

Die neue Listenfunktion bei Twitter ist klasse, denn damit lassen sich endlich die Leute denen man folgt thematisch gruppieren. Da die Listen nun auch per Twitter API angesprochen werden können, ist es möglich die Tweets einer Liste per RSS bzw. Atom zu abonnieren. Eine praktische Sache.

Einfach im Browser oder RSS Reader eine dem folgenden Format entsprechende URL eingeben:

http://api.twitter.com/1/ACCOUTNAME/lists/LISTENNAME/statuses.atom

Wobei “ACCOUNTNAME” durch den Twitternamen z.B. “motorradblogger” zu ersetzen ist. Das gleiche gilt natürlich für “LISTENNAME“.

Zum Beispiel so: Meine Liste von Motorradbloggern.

Spielerei mit der Twitter API

Mo 26 Okt. 09 # Permalink

Kürzlich habe ich ein wenig mit der Twitter API gespielt. Ich wollte mal sehen, welche Follower meiner Follower auch mir folgen. Dazu habe ich mir eine kleine Funktion geschrieben die ermittelt, welche anderen Twitterer von einem Account verfolgt werden. Die Ergebnisse habe ich in einer Datenbank-Tabelle gespeichert und später ausgewertet.

Die Funktion ist zwar nicht perfekt, mir reichte sie jedoch.

<?php
function get_friends( $screen_name, $page_limit = 200 )
{
	$screen_names = array();
	for( $page = 1; $page < $page_limit; $page++ )
	{
		ob_start();
		$friends_json = file_get_contents( 'http://twitter.com/statuses/friends.json?screen_name=' . $screen_name . '&page=' . $page );
		$errors = ob_get_contents();
		ob_end_clean();
		if( $friends_json !== false )
		{
			$friends = json_decode( $friends_json );
			if( is_array( $friends ) && count( $friends ) )
			{
				foreach( $friends AS $friend )
					$screen_names[ $friend -> id ] = $friend -> screen_name;
			}
			else
			if( !count( $friends ) )
			{
				break;
			}
			else
			{
				$screen_names = array();
				break;
			}
		}
		else	break;
	}
	if( count( $screen_names ) || $errors == '' )
	{
		return $screen_names;
	}
	else
	{
		if( strpos( $errors, '401 Unauthorized' ) !== false )
			return false;
		else
			return null;
	}
}

// Example usage
print_r( get_friends( 'motorradblogger' ) );
?>

Schade übrigens, dass die Anzahl der Requests pro Stunde bei Twitter limitiert ist, sonst ließen sich ziemlich schnell, ziemlich viele Twitter-Accounts crawlen. ;-)

Die Benutzung ist sehr simpel: Einfach den Accountnamen übergeben, die Funktion läd Seitenweise alle Accounts, denen gefolgt wird und gibt diese in einem assoziativen Array (Schlüssel: Account-ID, Wert: Accountname) zurück. Im Falle eines Fehlers wird ‘false’ zurückgegeben, bei einem unbekannten Fehler ‘null’.