Pravidelný občasník originálního humoru

Jak získat 100 milionů údajů o uživatelích Facebooku

Autor chlívek (Webdesign, Internet) - vydáno 29.7.2010

Nabídnu malý pohled na to, jak funguje Facebook Graph API a jak se vlastně Ron Bowes snadno dostal k 100 milionům jmen, příjmení, adres profilů a Facebook ID. Uvidíte, že je to extrémně snadné. A nabídnu pár dalších zajímavých triků - jak získat seznam vlastních přátel či seznam členů skupiny a těch co lajkují nějakou stránku. Může se to hodit


Údaje 100 milionů uživatelů Facebooku volně k dispozici vyvolala velký zájem, včetně několika jedinců, kteří stále nechápou, jak to vlastně s těmi údaji je - místo toho aby se podívali na Open Graph API se věnují sprostým mailům. Což se ale na Open Graph API podívat teď společně?

Tak co třeba http://graph.facebook.com/Daniel.Docekal?

{
   "id": "570949930",
   "name": "Daniel Bradbury Do\u010dekal",
   "first_name": "Daniel",
   "middle_name": "Bradbury",
   "last_name": "Do\u010dekal",
   "link": "http://www.facebook.com/Daniel.Docekal",
   "gender": "male",
   "locale": "en_US"
}

Ach ano, přesně tady to máme. Máme tu adresu profilu na Facebooku, jméno, příjmení, prostřední jméno, pohlaví, ID na Facebooku. A taky to, že nesnáším Facebook v češtině a používám ho v angličtině. A tentýž výsledek samozřejmě dostanete, pokud použijete mé ID - tedy http://graph.facebook.com/570949930

A co se s numerickým ID dá udělat? No pochopitelně, dá se "inkrementovat". Takže na http://graph.facebook.com/570949933 najdete dalšího existujícího uživatele v pořadí, na http://graph.facebook.com/570949940 dalšího. A můžete pokračovat. Hodně dlouho pokračovat.

User Feed co by neměl být veřejný

Co dál se dá hezkého zjistit, aniž byste se museli nějak moc namáhat?

Co třeba http://graph.facebook.com/Daniel.Docekal/feed - ideální, najdete tam kompletní přehled všech statusů a odkazů, prostě zeď uživatele. S ohledem na to, že Facebook vzbuzuje představu, že vaše statusy nejsou zcela veřejné, může tohle být docela překvapení. A pochopitelně tam najdete i všechny reakce na vaše příspěvky - čímž snadno můžete začít shromažďovat další jména/příjmení a uživatelská ID.

Ve skutečnost je viditelnost mého "feed" vpořádku - nastavil jsem to tak v nastavení soukromí (zde) - Facebook opravdu respektuje, jakým způsobem si nastavíte tuhle "jednoduchou" tabulku. A pokud si nastavíte vše do "Everyone" polohy, tak se samozřejmě nedivte ničemu.

Ne, přátelé ti (bezprostředně) veřejní nejsou, ale co dalšího je?

http://graph.facebook.com/Daniel.Docekal/friends vypadá také lákavě, přátelé Facebook uživatele - tady už narazíte. Musíte se autentikovat přes OAuth. Což na druhou stranu není nijak složité - můžete si to schválně vyzkoušet.

Kompletní dokumentaci k tomu, co je přístupné v rámci user objektu najdete tady. a dozvíte se tam něco zajímavého, že můžete použít fields pro určení toho, co vlastně chcete vědět. Ne vše bude přístupné, Facebook tady vcelku respektuje to, co si nastavíte v rámci viditelnost. Ale dozvíte se tady taky jaké další connections parametry můžete použít.

V praxi to znamená, že si můžete zkusit napsat skript, který pomocí inkrementace ID bude vybírat https://graph.facebook.com/_ID_/?fields=birthday - a buďte si jistí, že se k datům narození dostanete. Tedy pokud je daný uživatel nastavil jako veřejné.

Zajímavé může být i https://graph.facebook.com/_ID_/likes - přehled toho, co uživatel označil jako Líbí/Like - a dostanete se k seznamu Pages, kde je uživatel lajka (fanoušek).

Co třeba http://graph.facebook.com/Daniel.Docekal/picture - hned zjistíte jaký má uživatel profilový obrázek (ano, to je další veřejná informace na Facebooku).

Tak co s tím OAuth a Access Token?

Co třeba http://app.apigee.com/console/facebook - užitečná služba pro testování podobných věcí.

Pak už stačí jenom https://graph.facebook.com/Daniel.Docekal/friends (a zvolit OAuth autentikaci). Užitečné, dá se tak získat vlastní přehled "přátel". Na "cizí" přátele to totiž nefunguje - Can't lookup all friends of 1185277881; can only lookup for the logged in user (570949930) or for pairs of users

Takže ani tudy cesta k seznamu přátel nevede, aspoň něco je na tom Facebooku jisté.

A co Facebook Pages?

Nezapomeňte, Facebook Page (stránka) je veřejně přístupný objekt. Takže například https://graph.facebook.com/pooh.cz vede k základním údajům o POOH.CZ Facebook Page (což je samozřejmě totéž jako https://graph.facebook.com/73853464545 - i zde fungují ID, jsou totiž společná pro jakékoliv objekty).

Pak už snadno zjistíte, že https://graph.facebook.com/73853464545/feed může být extrémně užitečné, pokud chcete dostávat ze své Page data někam jinam - geniální export. Ale při bližším pohledu i zde najdete komentáře - takže je možné snadno dolovat další data o uživatelích.

Přes ně se pak můžete dostat k jejich údajům - jeden příklad za všechny (Marek Fiala nechť promine, ale toto jsou veřejně dostupné údaje a Marek by možná mohl svůj účet nastavit lépe). Respektive, jsou veřejné pro kohokoliv přihlášeného k Facebooku (Marek Fiala není v mých přátelích):

{
"id" : 1425322613,
"name" : "Marek Fiala",
"first_name" : "Marek",
"last_name" : "Fiala",
"link" : http://www.facebook.com/profile.php?id=1425322613,
"birthday" : "04/07/1985",
"hometown": {
"id" : 103072199732335,
"name" : "Polná"
},
"work": [
{
"employer": {
"id" : 114252701922688,
"name" : "Superhosting"
},
"location": {
"id" : 108210209207966,
"name" : "Prague"
},
"position": {
"id" : 114977041850318,
"name" : "Programator"
},
"start_date" : "0000-00"
}
]
,
"education": [
{
"school": {
"id" : 110610612299901,
"name" : "ČVUT FEL"
},
"year": {
"id" : 111149032238763,
"name" : "2009"
},
"concentration": [
{
"id" : 106712489365591,
"name" : "Výpočetní technika"
}
]
},
{
"school": {
"id" : 106422206061441,
"name" : "SPŠ Jihlava"
},
"year": {
"id" : 108364149197254,
"name" : "2004"
}
}
]
,
"gender" : "male",
"locale" : "en_US",
"updated_time" : "2009-05-18T20:55:12+0000"
}

Uplně stejně se dá dostat k obsahu Group/Skupiny - stačí znáte její číslo - https://graph.facebook.com/188175849611/feed vede na "Windows 7 Tips and Tricks (POOH.CZ)" - s jedním rozdílem, budete potřebovat OAuth autentikaci. Daleko zajímavější ale bude https://graph.facebook.com/188175849611/members - jistě chápete, že přístup k seznamu členů Skupiny je ... no prostě fajn.

A https://graph.facebook.com/73853464545/members potom, vcelku očekávatelně umožňuje získat seznam členů Page/Stránky (OAuth požadováno). Ale pokud byste si třeba dělali iluzi, že je nutné být fanouškem, tak to opravdu není. https://graph.facebook.com/MediaTimes.cz/members ochotně poskytne seznam členů (Facebook jméno, Facebook ID), aniž bych byl fanouškem.

Vyhledávání v Open Graph

S pomocí https://graph.facebook.com/search?q=QUERY&type=OBJECT_TYPE můžete objekty v Open Graph databázi proheldávat, OBJECT_TYPE je post, user, page, event či group. Nenabízí se sice wildcards podpora, ale přesto jde o velmi užitečnou pomůcku.

Co je ale například zajímavé, že https://graph.facebook.com/search?q=Dočekal&type=user vrací spoustu výsledků, které vypadají jako nijak nesouvisející s "Dočekal" - po bližším zkoumání zjisíte, že ačkoliv hledáte ve jméně, vyhledávají se i některá další políčka (například přezdívka).

Vyhledávání je užitečné i v podobě hledání ve všech veřejných statusech - například https://graph.facebook.com/search?q=facebook&type=post, aby bylo jasno, jak to vlastně vypadá. Opět zde můžete najít dostatek jmen a ID uživatelů, kteří na takovéto statusy reagovali.

Užitečná pomůcka

Jakub Pajer mi dal další tip na hodně užitečnou pomůcku - na http://zesty.ca/facebook najdete velmi užitečný "browser" v Open Graph objektech.

Štítky : Internet, Webdesign, Facebook.com, Sociální síť, Soukromí, Ochrana soukromí, Open Graph, Open Graph API, Facebook API, API, Facebook stránka, Facebook skupina, MUSTREAD



|
Poslední změna : 29.7.2010 21:41, Vytvořen : 29.7.2010 20:40, Vydán : 29.7.2010, 29085x

Komentáře pro ty z Facebooku

Aktuální články autora

Související články