Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- include_once('simple_html_dom.php');
- $password = 'jH¡@3_§k__,AS#sd¤82(üasd>ö6223HH>6%/kG.$';
- $datafile = 'fbfriends.data';
- //Behövs om man t.ex. bara kör php-cli (som jag alltså)
- date_default_timezone_set('Europe/Stockholm');
- //Skriv ett meddelande (eller lagra i en databas o.s.v. om man hellre vill det)
- function print_message($typ, $meddelande)
- {
- echo(date('Y-m-d H:i:s').": $typ: $meddelande\n");
- }
- //Hitta alla vänsidor och vänner rekursivt (inte ofta jag tycker att man ska använda rekursivt men här blev det enklare)
- function getFriends($ch, $url)
- {
- $friends = Array();
- curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com'.$url);
- $html = str_get_html(curl_exec($ch));
- $lista = $html->find('div[id=sections]',0)->find('div[class=acw apm]',0)->find('a[class=sec]');
- if (empty($lista))
- { //Vi är nestlade till djupet, lägg till vännerna
- foreach($html->find('div[class=ib]') as $friendholder)
- $friends[] = htmlspecialchars_decode($friendholder->children(1)->children(0)->name, ENT_QUOTES); //kovertera också om någon använder cituationstecken i namnet
- return $friends;
- }
- else
- { //Vi är inte nestlade till djupet, bäst att gå djupare in
- foreach ($lista as $link)
- $friends = array_merge($friends, getFriends($ch, htmlspecialchars_decode($link->href)));
- //Inget mer att hämta, gå upp ett steg
- return $friends;
- }
- }
- //Sätt upp curlen
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, 'email='.urlencode($email).'&pass='.urlencode($password));
- curl_setopt($ch, CURLOPT_COOKIEFILE, 1); //Har glömt bort varför jag kör med 1!? Hade säkert någon bra idé och det fungerar ju uppenbart
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- //Logga in
- curl_setopt($ch, CURLOPT_URL,'http://m.facebook.com/login.php');
- $html = str_get_html(curl_exec($ch));
- //Kontrollera att du loggades in genom att se om du kan logga ut
- $loggaut = $html->find('a[data-sigil=logout]');
- if (empty($loggaut))
- {
- print_message('Error', $html->find('div[id=rootContent]',0)->children(0)->children(0)->children(0)->innertext);
- die(1);
- }
- //Hämta alla vänner
- $friends = getFriends($ch, '/friends.php');
- //Logga ut
- /* Behövs nog inte igentligen
- $loggaut = 'http://m.facebook.com'.$html->find('a[data-sigil=logout]',0)->href;
- curl_setopt($ch, CURLOPT_URL, htmlspecialchars_decode($loggaut));
- curl_exec($ch);
- */
- //Ta bort curl
- curl_close($ch);
- //Ladda in fil med vänner
- if (!file_exists($datafile))
- {
- print_message('Info','Hittade ingen gammal data att jämföra med - skapar data för framtida bruk');
- touch($datafile); //Skapa filen om den inte finns
- }
- $prev_friends = unserialize(file_get_contents($datafile));
- if (!empty($prev_friends))
- {
- $diff = array_diff($prev_friends, $friends);
- if (!empty($diff))
- {
- //Skriv ut skilnaderna... jag kör outputen till en fil i crontab...
- foreach($diff as $lost_friend)
- print_message('Förlorad vän', $lost_friend);
- }
- }
- //Spara mina nuvarande vänner för nästa gång
- file_put_contents($datafile, serialize($friends));
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement