Ostatnio zapragnąłem trochę posurfować po największym portalu społecznościowym w Polsce jakim jest Nasza-Klasa. Poniżej prościutki kod odwiedzający losowe konta.
Deklarujemy zmienne do logowania, plik przetrzymujący ciasteczka i nazwę przeglądarki z jaką będzie się przedstawiał nasz automat.
$cookie = 'cookie.txt'; $loginUrl = 'http://nasza-klasa.pl/login'; $login = 'login'; $password = 'pass'; $useragent = 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3';
Logujemy się na konto n-k:
$ch = curl_init( $loginUrl ); curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie ); curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie ); curl_setopt( $ch, CURLOPT_COOKIE, $cookie); curl_setopt( $ch, CURLOPT_USERAGENT, $useragent ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, 'login='.$login.'&password='.$password ); curl_setopt( $ch, CURLOPT_REFERER, 'http://nasza-klasa.pl/' ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); $afterLogin = curl_exec($ch); curl_close($ch);
Wywołujemy adresy losowych kont:
for( $i=1; $i<=100; $i++ ) { $profileID = rand( 1000, 15000000 ); // rand $ch = curl_init( 'http://nasza-klasa.pl/profile/'.$profileID ); curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie); curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie); curl_setopt( $ch, CURLOPT_COOKIE, $cookie); curl_setopt( $ch, CURLOPT_USERAGENT, $useragent ); curl_setopt( $ch, CURLOPT_HEADER, 0); curl_setopt( $ch, CURLOPT_REFERER, 'http://nasza-klasa.pl/' ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); $profile = curl_exec($ch); curl_close($ch); if( !preg_match( '/Nie znaleziono strony \(404\)/', $profile ) ) { // konto istnieje // z danymi konta możemy zrobić co chcemy... } else { // nie ma konta takiego konta } }
Ustawiamy w contab'ie wywołanie skryptu co 10 minut:
*/10 * * * * curl -s -o /dev/null PATH_TO_SCRIPT
Z uwagi na bardzo dużą liczbę kont prawdopodobieństwo odwiedzenia w niedługim czasie 2 razy tego samego konta jest stosunkowo niewielkie.
Jednak jeżeli chcemy odwiedzić każde konto jedynie raz to należy zmodyfikować skrypt tak aby przy każdym wywołaniu iterował po kolejnej setce kont. Informacje o ID od którego mamy zacząć możemy zapisywać w bazie danych lub w pliku.