Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Исходник пригласителя в группу VК (https://forum.antichat.xyz/showthread.php?t=186349)

lukmus 13.03.2010 04:40

Исходник пригласителя в группу VК
 
Уважаемые модераторы, я так посчитал, что эта тема больше относиться к кодингу, чем к соцсетям.
Короче, заказывали у меня скрипт способный приглашать друзей в группу, а так же вступать самим аккам в группу для VК, я скрипт написал, а заказчик забил на эту тему.

Код:

#made by lukmus 06.03.2010
#!/usr/bin/ruby
require 'lib_fs.rb'

#CONFIG=============================================
$togrp=15 #count of friends for one invite attemp
$wait_time=25 #time between invalid attemp
$log_f='log.log' #log file
#===================================================

help=<<EOF
<acc_file> <group_id> [-iaf]
acc_file        file with accounts, format: login:pass
group_id        group number, integer
iaf                invite all friends

made by lukmus 06.03.2010
EOF

if ARGV.size<2 or ARGV.size>3
        puts help
        exit
end

$acc_f=ARGV[0]
gr=ARGV[1].to_i
invite_a_f=false

if ARGV.size==3 and ARGV[2]=='-iaf' then invite_a_f=true end

$all_f_count=0
$all_if_count=0


def log(str)
        fl=File.new($log_f,'a')
        fl.puts str
        fl.close
end

def iaf(account,gr_id)
        friends=account.get_all_friends_ids
        suc_count=0
        good=0
        if friends==-1 then puts " get friends FAILED" else                       
                        print " \ninviting"
                        $all_f_count+=friends.size
                        STDOUT.flush
                        end_p=$togrp
                        start_p=0
                        while start_p<friends.size do
                                end_p=start_p+$togrp
                                if end_p>friends.size-1 then end_p=friends.size-1 end
                                if account.invite_f_in_group(gr_id,friends[start_p..end_p])==0 then
                                        print '.'
                                        $all_if_count+=end_p-start_p
                                        suc_count+=end_p-start_p
                                        good=1
                                else print '?' end
                                STDOUT.flush
                                               
                                start_p+=$togrp
                               
                               
                        end
        $all_if_count+=good
        print " [suc_count=#{suc_count+good}/f_count=#{friends.size}]"       
                STDOUT.flush                               
        end
end

fil=File.new($acc_f,"r")
while !fil.eof
        str=fil.gets
        str.chop!
        mail,pass=str.split(':')
        print "\n #{mail} "
        acc=Account.new(mail,pass)
        if acc.logon==0
                if acc.enter_in_group(gr)==0 then print " OK " else print " WARNING: Can't enter in group " end
                if invite_a_f==true then iaf(acc,gr) end
        else
                puts " ERROR: Invalid login or password "
                log("Invalid #{mail.gsub('%40','@')}:#{pass}")
                wait($wait_time,1)
        end
end
fil.close
puts "\n[all_f_count=#{$all_f_count}/all_invite_f_count=#{$all_if_count}]"

Как установить Ruby и как запустить скрипт
библиотека необходимая для скрипта
все файлы в одном архиве

О работе скрипта
Скрипт считывает из файла пару логин:пароль, каждая пара на новой строке. Далее логиниться и выполняет следующие действия:
-вступает в группу с номером <group_id>
-если указан параметр -iaf, то приглашает в группу всех своих друзей
Последняя функция работает не всегда, принцип по которому VК отсеивает выяснить не удалось т.к. зачастую эта функция не работает и через браузер.

Пару слов о библиотеке
В файле так называемой библиотеки содержиться class Account, который собственно и содержит методы, которые реализуют функции скрипта.

Для рубистов
Насколько я знаю, на этом форуме их очень не много.
Как я уже писал все самое интересное в библиотеке, в кратце опишу методы класса Account:
-enter_in_group(gr_id)
вступает в группу gr_id
-invite_f_in_group(gr_id,user_ids)
приглашает в группу gr_id, юзеров массива user_ids
-count_of_users_in_grp(gr_id)
возвращает количество акков в группе gr_id, данные берет с главной страницы группы, поэтому в случае быстрого инвайта запаздывает
-get_all_friends_ids()
возвращает массив с id друзей
-logon()
самая интересная функция, может пригодиться для брута, но только через прокси. логиниться.
-get_my_id()
возвращает id акка
-get_friends_count()
возвращает кол-во друзей акка
-get_hash_4_invite_2_group(prehash)
разгадывает загадку, по которой VК шифрует хэш для инвайта по prehash (якобы хэш выводящийся в явном виде)
-get_hash(path,id,n)
возвращает остальные бесхитростные хэши

К чему все это
Все методы библиотеки понятны далеко не только рубистам, основная фишка это конечно формирование нужного запроса. Так вот давайте развивать эту Open Source библиотеку на языке котором знаешь.


Время: 16:07