Нужна программа для рассылки запросов на дружбу в Вконтакте.
Именно для приглашения друзей к себе (к анкете отправляющего запросы) а не для приглашения друзей в группу.
Принцип работы:
В текстовой файл записываются логины;пароли к анкетам с которых будет высылаться приглашения.
Эти данные пользователь заполняет сам вручную.
В другой текстовый файл
Код:
id.txt
http://vkontakte.ru/id2925427
http://vkontakte.ru/id2863278
http://vkontakte.ru/id2848361
или просто
2925427
2863278
2848361
...
Скприпт (программа) при старте:
1. Логинится на vkontakte.ru под первым юзером из файла user.txt
2. Начинает брать линки из файла id.txt и добавлять к себе в друзья эти экаунты (из файла id.txt).
По сути скрипт переходит на страницу и нажимает кнопку добавить в друзья.
3. Ждем заданное количество секунд (скажем 3). Которое каким-то образом задается в настройках.
4. Берет следующий линк из файла id.txt и добавляет его в друзья.
5. Опять задержка в Х секунд.
6. И так далее аж до 40-вого линка или что лучше до получения ошибки: Ограничения лимита добавления друзей в сутки.
7. Выходит из экаунта.
8. Логинится на vkontakte.ru под Вторым юзером из файла user.txt
9. Продолжает добавлять друзей из файла id.txt начиная со следующего линка. Т. .е не с начала списка.
10. И так, пока не закончатся линки или в файле id.txt или эканту в файле user.txt.
Вот пример подобного скрипта:
Кто то написал в некоторой степени подобный скрипт, но он уже не работает из за нововведений Дурова. И он добавлял друзей по заданному диапазону id. А мне нужно что бы он добавлял по моему списку id. И что бы не нужно было вводить каждый раз логины и пароль вручную.
Но на основе этого скрипта можно написать то что нужно мне.
Вот этот скрипт:
1. Ставим Active Perl (
http://www.activestate.com/Products/...rl/index.mhtml).
2. Создаем файл run.bat в котором меняем "email" на ваше мыло и "password" на ваш пароль.
После "email" и "password" стоят циферки....Первая обозначает с какого id начать, вторая (которая после пробела) - та,чьим id закончить.
И далее идёт цифра,через скока секунд будет добавляться друг. Советую оставить 3, дабы не получилась петрушка.
3. Создаем файл vkontakte.pl
4. Запускаем файл run.bat
Вот сами файлы:
Код:
Run.bat
c:\Perl\bin\perl vkontakte.pl email password 15680 15700 3
pause
Код:
vkontakte.pl
use IO::Socket;
#use Switch;
#all questions to scksql[at]gmail.com
system('cls');
if(@ARGV <5) {
print "Arguments Required!\n";
print "Example: vkontakte.exe email\@mail.ru password idFrom idTo SleepTime(in_sec)\n";
system('pause');
exit();
}
$email = $ARGV[0];
$password = $ARGV[1];
$from = $ARGV[2];
$to = $ARGV[3];
$sleep = $ARGV[4];
$logging = $ARGV[5];
$added = 0;
$error = 0;
print "---------------------------------------------\n";
print "- -=Vkontakte Friend Flooder=- -\n";
print "---------------------------------------------\n";
print "- -=Script by Hard (c) 2008=- -\n";
print "---------------------------------------------\n";
if($cookie = auth($email, $password)) {
if($logging) {logging($logging, "<pre>","clear_file");}
print "[+] Auth succesfull...\n";
print "[-] Now working...\n";
print "---------------------------------------------\n";
do {
$answer = search($cookie, $from, $link);
#if($logging) {logging($logging, $answer);}
if($answer=~/h=([0-9A-z][0-9A-z][0-9A-z][0-9A-z][0-9A-z][0-9A-z][0-9A-z][0-9A-z])/) {
$searched = $1;
}
else {
$searched = 0;
}
if($searched) {
$AddAnswer = AddFriend($cookie, $from, $searched);
if($logging) {logging($error."-".$logging, $AddAnswer);}
if($AddAnswer == 1) {
print "ID: ".$from." - friend added!\n";
$added++;
}
else {
print "ID: ".$from." - error! (".ErrorAdd($AddAnswer).")\n";
$error++;
}
}
else {
print "ID: ".$from." - error! (".ErrorSearch($answer).")\n";
$error++;
}
$from++;
sleep($sleep);
} while($from <= $to);
logout($cookie);
}
else {
print "Login Error!\n";
system('pause');
exit();
}
print "---------------------------------------------\n";
print "[+] Finished!\n";
print "---------------------------------------------\n";
print "Added Total: ".$added."\n";
print "Total Errors: ".$error."\n";
print "---------------------------------------------\n";
print "- -=Script by Hard (c) 2008=- -\n";
print "---------------------------------------------\n";
system('pause');
#########################
########FUNCTIONS#########
#########################
sub logout {
($cookie)=@_;
#"http://vkontakte.ru/login.php?op=logout";
$header = "GET /login.php??op=logout HTTP/1.1\r\n";
$header .= "Host: vkontakte.ru\r\n";
$header .= "User-Agent: Antidurov 2.0\r\n";
$header .= "Cookie: ".$cookie."\r\n";
$header .= "Connection: Close\r\n";
$header .= "Content-Type:text/xml; charset=windows-1251\r\n\r\n";
}
sub auth {
($email, $password) = @_;
print "[-] Connecting to the server...\n";
$socket = IO::Socket::INET->new(Proto => "tcp",PeerAddr => "vkontakte.ru",PeerPort => "80", Timeout=> 10) || die "$socket";
print "[+] Connected!\n";
print "[-] Auth...\n";
$header = "GET /login.php?email=".$email."&pass=".$password." HTTP/1.1\r\n";
$header .= "Host: vkontakte.ru\r\n";
$header .= "User-Agent: Antidurov 2.0\r\n";
$header .= "Cookie: income=1\r\n";
$header .= "Connection: Close\r\n";
$header .= "Content-Type:text/xml; charset=windows-1251\r\n\r\n";
print $socket $header;
$ResAnswer = "";
while($answer = <$socket>){
$ResAnswer .= $answer;
}
close($socket);
if($ResAnswer=~/302 Moved/si || $ResAnswer=~/302 FOUND/si) {
$return = "remixlang=0;remixchk=5;remixchk=5;";
$ResAnswer=~/remixmid=(.*?;)/;
$return .= "remixmid=".$1;
$ResAnswer=~/remixemail=(.*?;)/;
$return .= "remixemail=".$1;
$ResAnswer=~/remixpass=(.*?;)/;
$return .= "remixpass=".$1."remixcookietest=deleted;";
return $return;
}
else {
return 0;
}
}
sub search {
($cookie, $id, $link)=@_;
$socket = IO::Socket::INET->new(Proto => "tcp",PeerAddr => "vkontakte.ru",PeerPort => "80", Timeout=> 10) || die "$socket";
$header = "GET /search.php?id=$id HTTP/1.1\r\n";
$header .= "Host: vkontakte.ru\r\n";
$header .= "User-Agent: Antidurov 2.0\r\n";
$header .= "Cookie: ".$cookie."\r\n";
$header .= "Connection: close\r\n";
$header .= "Content-Type:text/xml; charset=windows-1251\r\n\r\n";
print $socket $header;
$ranswer = "";
while($answer = <$socket>) {
$ranswer .= $answer;
}
close($socket);
return $ranswer;
}
sub logging{
($logging, $data, $clear=0)=@_;
#open(file, ">".(!$clear?">":"").$logging);
#print file $data;
#close(file);
}
sub AddFriend {
($cookie, $id, $h) = @_;
$socket = IO::Socket::INET->new(Proto => "tcp",PeerAddr => "vkontakte.ru",PeerPort => "80", Timeout=> 10) || die "$socket";
$header = "POST /friend.php?act=addFriend HTTP/1.1\r\n";
$header .= "Host: vkontakte.ru\r\n";
$header .= "User-Agent: DurovSuka\r\n";
$header .= "Cookie: ".$cookie."\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Connection: Close\r\n";
$header .= "Content-Length: ".length("fid=".$id."&h=".$h)."\r\n\r\n";
$header .= "fid=".$id."&h=".$h."\r\n\r\n";
print $socket $header;
$ranswer = "";
while($answer = <$socket>) {
$ranswer .= $answer;
}
#for($i=0;$i<11;$i++) {
# $ranswer .= <$socket>;
#}
#print $ranswer;
#if($logging) {logging($logging, $answer);}
#$_=$ranswer;
#logging($logging, $_);
#if($ranswer=~/Set-Cookie: remixdeffriendgroups=deleted/) {
if($ranswer=~/получил уведомление и подтвердит, что Вы его друг/) {
return 1;
}
else {
return $ranswer;
}
}
sub ErrorSearch{
($answer)=@_;
if($answer=~/Страница удалена/) {
return "Page is deleted";
}
if($answer=~/К сожалению, по Вашему запросу ничего не найдено/) {
return "Page is not created";
}
if($answer=~/Location: blank.php\r\n/) {
return "Flood protect in search";
}
if($answer=~/Убрать из друзей/) {
return "Already Friend";
}
}
sub ErrorAdd{
($answer)=@_;
$_=$answer;
#switch($answer) {
if($answer=~/Заявка уже была отправлена. Повторно заявка отправлена не будет/) {return "Invite was already send";}
if($answer=~/Location: blank.php\r\n/) {return "Flood protect in add";}
if($answer=~/code=6/) {return "Added in black list";}
#}
if($answer=~/code=11/) {return "Friend add limit reached";}
}