[Архив] К теме социалок.

Тема в разделе "SEO Скрипты", создана пользователем Юрец, 7 май 2007.

Статус темы:
Закрыта.
  1. Юрец

    Юрец

    Регистр.:
    20 авг 2006
    Сообщения:
    152
    Симпатии:
    21
    Тема не нова, но все же очень актуальна.

    Мужики, вот скрипт перловый (добавлялка друзей на myspace:(
    PHP:
    #!/usr/bin/perl -w

    #  This code was developed by Eric Skiff (http://www.glitchnyc.com)
    #                 Copyright (C) 2006 Eric Skiff
    #
    #  This program is free software; you can redistribute it and/or
    #  modify it under the terms of the GNU General Public License
    #  as published by the Free Software Foundation; either version 2
    #  of the License, or (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program; if not, write to the Free Software
    #  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
    #  USA.

    # Purpose of GlitchCastFriendAdder : bulk-add friends to a myspace account
    #
    # History :
    #       . originally by Eric Skiff <GlitchCastFriendAdder a.t. Glitchnyc.com>
    #    . Version 1.3 by Eric Skiff incorporating patch from Matt at 
    #    . pumppanic.com
    #       . Version 1.2 by Eric Skiff, March 09, 2006
    #            fix syntax bug on line 79
    #            change submit22 to loginbutton
    #            .add support for firefox opening of captchas, proper
    #            .CSV files with linefeeds  

    use strict;
    use 
    WWW::Mechanize;
    use 
    HTML::TokeParser::Simple;
    use 
    Text::CSV;

    #########################################
    #Modify these values ####################

    my $username 'yourUserName';
    my $password 'yourPassword';
    #firefox location is simply firefox on mac + linux. Uncomment the c:/ 
    #to run on windows
    my $firefoxExecutable 'firefox'#comment this line on windows
    #my $firefoxExecutable = 'c:/progra~1/mozill~1/firefox.exe'; #uncomment this line on windows
    ####
    #########################################
    #Don't edit below this line unless you  #
    #know what you're doing                 #
    #########################################

    my $file 'friendPagesToScrape.txt';



    my $csv Text::CSV->new();

    open (CSV"<"$file) or die $!;
    open (textFile">scrapedFriendIDs.csv"); #the > means overwrite >> would be append
    my $agent WWW::Mechanize->new();
    my $tag;
    my $urlWithFriendID;
    my $friendIdToAdd;
    my $whereToSplit;
    my %array;
    my $key;
    my $value;
    my $i;
    my $sleepTime 7;
    my $openLink;


    ###############################
    print ("Open captchas in firefox?\n[y/N]");
    $_  = <STDIN>;
    if ( /[
    Yy]/ ){
        
    $openLink 1;
        print (
    "\nLinks will be opened in firefox");
    }
    else {
        
    $openLink 0;
        print (
    "\nLinks will not be opened");
    }
    ###############################
    print ("\n\nDEVELOPERS NOTE:I wrote this script to promote my podcast, The GlitchCast\n");
    print (
    "Adding friends will take a while, so you'll need some good music while you work.\n");
    print (
    "Okay if this script opens the GlitchCast page in firefox so you can listen to great\n");
    print (
    "new indie and underappreciated music while you add?\n[y/N]");
    $_  = <STDIN>;
    if ( /[
    Yy]/ ){
        
    system("$firefoxExecutable http://www.glitchnyc.com/GlitchCast &");
    }
    ############################
    #first we log in... hopefully this will store good stuff in the cookiejar
    ############################
    $agent->get("http://www.myspace.com/?Mytoken=13BFE4B7-55AE-AE67-415379F323B47CBA19243938");
    $agent->form_name("theForm");
    $agent->field"email"$username);
    $agent->field"password"$password );

    # this stopped working in 1.2 
    #$agent->click("loginbutton");

    # replacement string from matt at mail__REMOVE___@pumppanic.com
    $agent->click('ctl00$Main$SplashDisplay$login$loginbutton');

    print 
    textFile $agent->{content};
    #sleep 2000;
    ############################
    #now lets get some pages, and the friendIDs in them
    ############################

    while (<CSV>) {
        if (
    $csv->parse($_)) {
            
    my @columns $csv->fields();
            foreach (@
    columns){
                
    #print "Getting page: @columns[1]\n\n";
                #$agent->get("@columns[$i]");
                #there's only one field on each line
                
    $agent->get("@columns[0]");
                if (
    $agent->success()) {
                    
    #$agent->form(1);
                    #$agent->field("zip", @columns[1]);
                    
    print "\nGetting info for @columns[0]\n";
                    
    #$agent->click();
                    
                    #DEBUG - this prints out everything we get on the retrieved page.
                    #print $agent->{content};
                    ###########################
                    #now we want to scrape out all the friend IDs on the pages in the CSV file
                    
    my $stream HTML::TokeParser::Simple->new(\$agent->{content});
                    while (
    $tag $stream->get_tag("a")){
                        
    $_ $tag->get_attr("href");
                        if ( /
    friend[iI][dD]/ ){
                                                    
    $urlWithFriendID $_;
                            
    $whereToSplit rindex($urlWithFriendID"=") + 1;
                            
    $friendIdToAdd substr($urlWithFriendID$whereToSplit);
                            
    createPair($friendIdToAdd"0");
                        }
                    } 
    #done getting the friend IDs from that page
            
                    ###########################
                    #After scraping the friend IDs out into the array, we're going to add all the friends. 
                    #Here's an example of the syntax
                    #http://www.myspace.com/index.cfm?fuseaction=invite.addfriend_verify&friendID=6840420
                    
    while (($key$value) = each %array) {
                        
    $agent->get("http://www.myspace.com/index.cfm?fuseaction=invite.addfriend_verify&friendID=$key");
                        
    #print "http://www.myspace.com/index.cfm?fuseaction=invite.addfriend_verify&friendID=$key";
                        
    if ($agent->success()) {
                            print 
    "Adding friend $key...";
                            
    #print textFile $agent->{content};
                            ##############################
                            #should check for a captcha here 
                            
    $_ $agent->{content};
                            if ( /
    image.above/ ){
                                                            print 
    "captcha detected. Go add a friend manually.\n";
                                print 
    "Here's the current page:\n";
                                print 
    "http://www.myspace.com/index.cfm?fuseaction=invite.addfriend_verify&friendID=$key\n";
                                if(
    $openLink == 1){
                                    
    system("$firefoxExecutable http://www.myspace.com/index.cfm?fuseaction=invite.addfriend_verify\\\&friendID=$key");
                                }
                                print 
    "Enter + to speed up, - to slow down, or a new # of seconds to sleep. \nJust press enter to continue at this speed  \n";
                                
    $_  = <STDIN>;
                                if ( /\-/ ){
                                    
    #slow things down by adding more sleep time
                                    
    $sleepTime $sleepTime 1;
                                    print 
    "Slowing Down by 1 sec. sleepTime is now $sleepTime \n";
                                }
                                
    elsif ( /\+/ ){
                                    
    #speed things up by reducing the sleep time
                                    
    $sleepTime $sleepTime 1;
                                    print 
    "Speeding up by 1 sec. sleepTime is now $sleepTime \n";
                                }
                                
    elsif (/[0-9]+/){
                                    
    #we got a number, take that as the new value
                                    
    $sleepTime $_;
                                    print 
    "New sleepTime set. sleepTime is now $sleepTime \n";
                                }
                                
    #now that the captcha has been human-entered, try this friendID again
                                
    $agent->reload();
                            }
                            
    $agent->form("addFriend");
                            
    $agent->submit();
                            
                            
    ####################
                            #DEBUG
                            #print textFile $agent->{content};
                            ###############################
                            # report success here
                            
    $_ $agent->{content};
                            if ( /
    email.has.been.sent/ ){
                                print 
    "success\n";
                                
    sleep $sleepTime;
                            }
                            else{
                                print 
    "Not Added. (possibly already a friend, esp if addFriend form was not found above)\n ";
                            }
                        }
                        
    delete($array{$key}); #remove the friendID we just added
                    
    };
                } 
    #end of the page full of friends 
                
    else {
                    print 
    "$agent->{content};"
                
    }
                
    $i++;
            } 
    #Get next URL from CSV list
        
    }#no more comma separated values to parse
    }  #no more file to read

    sub createPair{
    ################
    #just a small function to make working with arrays easier
        
    my($key$value) = @;
        
    $array{$key} = $value;
    };
    вот объяснялка с камментами:
    http://209.85.129.104/search?q=cach...yspace+intext:script&hl=ru&ct=clnk&cd=3&gl=ru

    Вобщем кто в теме, протестируйте, плиз, и отпишитесь если не сложно.
    У меня ГОСы через месяц, вообще нет времени ни на что...
    А если это туфтовый скрипт, то можно будет потестить вот это:
    http://www.myspaceautomation.com/
    Но там разработчик 8 баксов просит.
    Думаю скинемся да купим если что, да выложим сюда.
     
Статус темы:
Закрыта.