Bimatampan’s Weblog

Agustus 28, 2010

[PERL] Facebook BOT #1

Filed under: bot, facebook, komputer, linux, perl, ubuntu — bimatampan @ 9:21 am

Setelah sekian lama memikirkan cara bagaimana agar bisa terus update status tanpa online (secara fisik), akhirnya ketemu juga cara yang praktis.
Banyak referensi yang menyarankan memakai facebook API, tapi ternyata kurang praktis, berbelit2 dan “tidak bebas”😀
Akhirnya kupakai yang versi bikinan sendiri, lebih enak ngembanginnya pake perl.

screenshoot FB

Intinya, bot ini akan login ke facebook, lalu mengupdate status dengan isi random quote dari quotationspage, lalu akan “tidur” selama 300 detik, dan begitu seterusnya akan mengupdate lagi sampai botnya dimatikan.

Kode sumber dapat dilihat di sini.

Penampakan runningnya :

screenshoot running bot

Selamat menikmati…..😀
(bagian ke dua akan menambah share link di FB kita).

54 Komentar »

  1. pertamax diamanken…..😀

    Komentar oleh bimatampan — Agustus 28, 2010 @ 10:23 am

  2. weks, ngajarin ga bener nih..

    *patut di coba! hehe. TQ atas share nya.
    mo gw pelajarin, syukur2 bisa di modif..
    ga gitu ngerti perl.

    Komentar oleh banghasan — September 28, 2010 @ 12:27 pm

  3. @bangtoyib :

    silahken dimodif bang…..

    ini ngajarin bener kok, biar pada “melek” kode….😀

    Komentar oleh bimatampan — Oktober 5, 2010 @ 5:56 am

  4. gan kodenya ditaruh mana ya?
    ane nyubi nih yg bginian gan

    Komentar oleh puguh — Oktober 8, 2010 @ 7:50 pm

  5. @puguh :

    dijalanken di command prompt atau shell brooo….

    Komentar oleh bimatampan — Oktober 9, 2010 @ 4:50 pm

  6. ooo iya2 thk gan nnti kpn2 dicoba…. bye🙂

    Komentar oleh puguh — Oktober 9, 2010 @ 5:34 pm

  7. Gan.. Ane bisa minta tolong dikasih tau ga cara liat yang ngasih cendol? Agan pernah bikin kan ya? Keberatan ga kalo ngasih tau ane.. Thank you banget sebelumnya, gan..

    Komentar oleh click2see — Oktober 16, 2010 @ 9:24 pm

  8. @click2see :

    di sini bro :

    https://addons.mozilla.org/en-US/firefox/user/4953194/

    Komentar oleh bimatampan — Desember 28, 2010 @ 9:00 am

  9. gan ane udh add supaya yg kirim cendol keliatan, tapi yg keluar bukan berupa username nya gan tapi link, nah kalo ane mau keluar yang ussernamenya bijimane gan…..mohon pencerahannya….makasih

    Komentar oleh Dicky — Februari 10, 2011 @ 5:18 pm

  10. @Dicky :

    pake punya bro idx :

    http://userscripts.org/scripts/show/65502

    tapi install greasemonkey dulu ya…..😀

    Komentar oleh bimatampan — Februari 11, 2011 @ 3:26 am

  11. itu langsung di copy paste langsung kah?

    Komentar oleh kagara — Februari 26, 2011 @ 9:45 pm

  12. om bima, script perl’a dah ga bsa dipake, error trus…pdhal sy sdh edit semua yg diminta. atau mngkin sy ada yg kurang? mohon di update info’a, thanks. btw great share

    Komentar oleh wtff — Maret 13, 2011 @ 10:57 am

  13. @kagara & @wtff :

    ntar aku cek dulu bro

    Komentar oleh bimatampan — Maret 13, 2011 @ 1:26 pm

  14. ok, thanks om bima.
    bookmarked & waiting for kindly reply :-p, cheerz

    Komentar oleh wtff — Maret 14, 2011 @ 9:50 pm

  15. gmana om bima, ada prkembangan?

    Komentar oleh wtff — Maret 16, 2011 @ 2:03 pm

  16. @wtff :

    aku barusan nyoba skrip ini, dan sukses update status

    mungkin bro wtff ada di belakang proxy ?

    Komentar oleh bimatampan — Maret 16, 2011 @ 6:37 pm

  17. // trima kasih sdh di reply.

    tidak om, sy tidak pake proxy😀. berikut scrinsut error’a :

    [IMG]http://i53.tinypic.com/2yzn7o1.png[/IMG]

    oia sy liat teks “result: Not running” di halaman webpage (bawah kiri)–> http://ideone.com/tf2CG

    // mohon petunjuk’a om (maaf sy sdh merepotkan)

    Komentar oleh wtff — Maret 17, 2011 @ 1:07 am

  18. @wtff :

    itu loginnya sudah berhasil,

    tapi gak tau kenapa tuh kok gagal, mungkin itu profile ID orang lain (bukan milik kita atau friend kita)

    lha wong aku nulis di wall friend bisa kok pake skrip itu

    Komentar oleh bimatampan — Maret 17, 2011 @ 2:02 am

  19. sy pake profile sendiri om😀 bukan pnya orang lain. (sy kan coba pke account yg lain).
    baiklah om bima seperti’a sy harus cari solusi’a sendiri

    if( $rcvd =~ /Undefined variable:/ ) {
    @error = ($rcvd =~ m#\s+in\s+(.*?)${error}wtff/lang/perl.php#);
    print “\n\tFound error:\t $error[-1]\n”;
    } else {
    print “\n\tKeep trying….\n”;
    }

    terima kasih sudah mau berbagi.
    sampai jumpa om bima // p3a(3
    salam

    wtff a.k.a batara a.k.a r41nnu|<e

    Komentar oleh wtff — Maret 17, 2011 @ 11:44 am

  20. oke om Bima, sy sdh coba pake ID yg lain, ternyata TIDAK ADA MASALAH pd script’a & BERHASIL update status😀.
    Error sebelum’a terjadi secara sy setting privacy terlalu tinggi,hehehehe :p

    thanks

    Komentar oleh wtff — Maret 17, 2011 @ 4:35 pm

  21. @wtff :

    nah lo kan….😀

    Komentar oleh bimatampan — Maret 17, 2011 @ 4:56 pm

  22. buatin bot untuk kaskus dong

    Komentar oleh halo — Maret 21, 2011 @ 6:17 pm

  23. @halo :

    berani bayar berapa juta ?

    Komentar oleh bimatampan — Maret 21, 2011 @ 8:53 pm

  24. Bozz knapa ga pake Getopt::Long , so ga perlu hard code buat ganti username, pw etc

    Regards🙂

    Komentar oleh quite_monk — Maret 24, 2011 @ 7:47 pm

  25. @quite_monk :

    silahken source codes nya dirubah2 bro😀

    asal tetep kasih credits ya………..

    Komentar oleh bimatampan — Maret 24, 2011 @ 8:29 pm

  26. hehe siap, bole post code sendiri ga? sebagai bahan perbandingan aja🙂
    sapa tau makin banyak yang tertarik migrasi ke perl🙂

    Komentar oleh quite_monk — Maret 26, 2011 @ 4:38 am

  27. @quite_monk :

    silahken brooo……😀

    Komentar oleh bimatampan — Maret 26, 2011 @ 7:13 am

  28. #!/usr/bin/perl

    use 5.010;
    use warnings;
    use strict;
    use WWW::Mechanize;
    use HTML::TreeBuilder;

    my $base = ‘http://www.facebook.com/’;
    my $url_quote = ‘http://www.quotationspage.com/random.php3’;

    my $agent = WWW::Mechanize->new();

    $agent->add_header( “User-Agent” => ‘Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20110103 Fedora/3.6.13-1.fc14 Firefox/3.6.13’);
    $agent->add_header( “Accept” => ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’);
    $agent->add_header( “Referer” => ‘http://www.facebook.com/’);

    #get quotations word’s from the quotations webpage
    $agent->get($url_quote);
    my $status = _get_quote($agent->content);

    #connect to fb
    $agent->get($base);
    #login to fb
    say “loging in …!”;

    my $login = _do_login();
    #if login success post the quotations word’s!
    if($login){
    say “We’re in!.. starting changing the status ..”;
    #parse the home page and get the form id and fb dtsg
    my $form_id = _get_post_form_id($agent->content);
    my $fb_dtsg = _get_fb_dtsg($agent->content);
    _status($form_id, $fb_dtsg);
    say “your status now ‘$status'”;
    say “sleep for 5 minutes!”;
    sleep 300;
    }

    sub _get_quote{
    my $string = shift;
    my $node = HTML::TreeBuilder->new();
    $node->parse($string);
    #parse the content
    my $quote = $node->find_by_attribute( class => ‘quote’ )->as_text;
    my $authors = $node->find_by_attribute( class => ‘author’ );
    $author = ‘Unknown’ unless $authors;
    my $author = $authors->look_down( _tag => ‘b’)->as_text;
    my $status = “$quote by : $author”;
    $node->delete;
    return ($status);
    }

    sub _do_login {

    $agent->post(
    ‘https://www.facebook.com/login.php?login_attempt=1′,
    Content => {
    ’email’ => ‘bijaksana.sekali@gmail.com’,
    ‘pass’ => ‘sandradewi!’,
    }
    );
    if($agent->content =~ /(Email Salah)/ ) {
    say “Email salah !”;
    return 0;
    }elsif($agent->content =~ /(Silakan masukkan kembali sandi Anda)/){
    say “Password salah, $1!”;
    return 0;
    }

    return 1;
    }

    sub _status{
    my($form_id, $fb_dtsg) = @_;
    #post the status
    $agent->post(

    ‘http://www.facebook.com/ajax/updatestatus.php?__a=1 ‘,
    Content => {
    ‘post_form_id’ => $form_id,
    ‘fb_dtsg’ => $fb_dtsg,
    ‘status’ => $status,
    ‘post_form_id_source’ => ‘AsyncRequest’,
    }
    );

    }

    sub _get_post_form_id {
    my $string = shift;
    my $node = HTML::TreeBuilder->new();
    $node->parse($string);

    my $id = $node->find_by_attribute( name => ‘post_form_id’)->attr(‘value’);
    $node->delete;
    return $id;
    }

    sub _get_fb_dtsg {
    my $string = shift;
    my $node = HTML::TreeBuilder->new();
    $node->parse($string);

    my $id = $node->find_by_attribute( name => ‘fb_dtsg’)->attr(‘value’);
    $node->delete;
    return $id;
    }

    Komentar oleh quite_monk — Maret 26, 2011 @ 7:46 am

  29. hihi lupa username & pw na ke bawa :”>, that’s so lame hihi,
    tolong di hapus username ama pw nya bro

    Komentar oleh quite_monk — Maret 26, 2011 @ 7:49 am

  30. @quite_monk :

    ternyata bro ini odesk contractor juga ya…….. wkwkwkwkwkkwkkk………

    salam contractor bro……😀

    Komentar oleh bimatampan — Maret 26, 2011 @ 9:37 am

  31. hihi iya boss, ko tau?

    Komentar oleh quite_monk — Maret 26, 2011 @ 9:47 am

  32. aku ko ga liat ya contractors yang namanya bima?

    Komentar oleh quite_monk — Maret 26, 2011 @ 9:55 am

  33. @quite_monk :

    wkwkkwkkwkwkwkkkk…..

    BTW, pake sapidi ya bro, paket apa bro ? kenceng gak ?

    Komentar oleh bimatampan — Maret 26, 2011 @ 10:14 am

  34. paket family, bozz, mayan Line Rate – Downstream (Kbps):448, tapi uploadnya haduhhh Line Rate – Upstream (Kbps):123, upload 1 mega butuh 3-5 menit😦

    Komentar oleh quite_monk — Maret 26, 2011 @ 6:20 pm

  35. @quite_monk :

    kalau quota habis, jadinya lambat kayak keong apa lumayan cepet bro ?

    Komentar oleh bimatampan — Maret 26, 2011 @ 6:50 pm

  36. skarang kayanya ga ada kuota, klo donlot tetep di atas 30Kbps pernah donlot fc11 4 giga lbih butuh 30 jam
    saran aja bro buat title nya ni page http://id.wikipedia.org/wiki/Perl

    Komentar oleh quite_monk — Maret 26, 2011 @ 8:38 pm

  37. wah bagus artikelnya mas..

    kapan fb bot 2 nya nih..
    oia nanya kl buat reminder adzan juga bisa yah ?
    jadi muncul di distatus pas jam nya..
    thx

    Komentar oleh aziz — April 27, 2011 @ 12:51 pm

  38. @aziz :

    bisa bro, tinggal utek2 dikit tuh….😀

    Komentar oleh bimatampan — April 27, 2011 @ 8:29 pm

  39. ini buat’y pke visual basic ya om

    Komentar oleh washere — Agustus 22, 2011 @ 5:00 pm

  40. @washere :

    pake perl gan

    Komentar oleh bimatampan — Agustus 23, 2011 @ 12:44 am

  41. @bimatampan perl th apa om
    tolong di jelaskan secara detail
    maaf newbie

    Komentar oleh washere — Agustus 23, 2011 @ 3:13 pm

  42. @washere :

    perl itu interpreter spt python & php bro

    Komentar oleh bimatampan — Agustus 23, 2011 @ 3:17 pm

  43. @bimatampan ane pnya cpanel d stu da derictory perl,pa th juga perl,n bsa d pke untuk ini ga?

    Komentar oleh washere — Agustus 24, 2011 @ 10:50 am

  44. @bima tampan:
    gan ajarin w dong
    bener” ga ngerti nih

    Komentar oleh washere — Agustus 31, 2011 @ 7:13 pm

  45. @washere :

    sebaiknya pakai yg command line bro,

    ini petunjuknya :

    https://bimatampan.wordpress.com/2009/01/11/petunjuk-pemakaian-skrip-perl/

    Komentar oleh bimatampan — Agustus 31, 2011 @ 9:00 pm

  46. @bimatampan
    gan th yg tulisan mrah smua’y di edit ya

    Komentar oleh washere — September 2, 2011 @ 3:06 pm

  47. @washere :

    yg mana bro ?

    Komentar oleh bimatampan — September 2, 2011 @ 5:25 pm

  48. @bima
    yg ini gan
    my @waktu = localtime(time);
    $browser->cookie_jar(HTTP::Cookies->new(file => “./log/lwpcookies_update_fb.txt”, autosave => 1));
    my $log = ‘./log/update_fb_’.$waktu[3].($waktu[4]+1).($waktu[5]+1900).’-‘.$waktu[2].’-‘.$waktu[1].’-‘.$waktu[0].’.txt’;

    Komentar oleh washere — September 4, 2011 @ 11:25 am

  49. @washere :

    yg merah2 biarken aja

    yg diedit :

    – $user
    – $password
    – $profile_id

    BTW, ini jalan di linux, gak tau kalau di windus jalan pa kagak

    Komentar oleh bimatampan — September 5, 2011 @ 4:16 am

  50. @bima
    pantesan,w coba” kga bsa

    Komentar oleh washere — September 5, 2011 @ 10:45 am

  51. gan , ane jalanin di perl kok gk bisa gan :bingungs:

    Komentar oleh Arpheoulus™Elderar — September 11, 2011 @ 3:37 pm

  52. gan bsa liat contoh yang dah jadi ga?
    mo d bedain yg mana yg harus di edit

    Komentar oleh was here — September 23, 2011 @ 2:30 pm

  53. good gan.. coba aja ada yang visual basic yah..

    Komentar oleh Fairuz — Oktober 16, 2011 @ 3:27 pm

  54. wah ane jadi tambah ngerti neh, meskipun dikit2. thanks sharingnya bro…

    Komentar oleh adipa — Februari 7, 2012 @ 8:30 am


RSS feed for comments on this post. TrackBack URI

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Buat situs web atau blog gratis di WordPress.com.

%d blogger menyukai ini: