My function

Тема в разделе "A-Poster 2 - форум поддержки", создана пользователем Support, 5 июн 2015.

  1. Support

    Support Administrator Команда форума A-Parser Enterprise

    1. Рандомный спам с рандомными никами, майлами, комментариями, рандомным количеством линков, рандомными анкорами(!) с поддержкой очереди
    Код:
    ####### Config #######
    my $spliter = "||"; #Чем разделён урл и кей
    my $firstadd = ""; #Что добавить перед урлом
    my $showversion = "123"; #1 - <a href="url">key</a>, 2 - [url="url"]key[/url], 3 - url key
    my $comma = ", "; #Чем разделять урлы
    my $addtrash = 1; #Добавлять между ссылками буквы, цифры, смайлики
    my $randnick = 0; #Рандомные ники(например Xkjfsjzz)
    my $randmail = 0; #Рандомные майла(например [email][email protected][/email])
    my $nickiskey = 0; #Вместо ника подставляется кей для ссылки в поле url
    ##### End Config #####
    
    my %mflocal;
    
    sub myfunc_init # $mfinit - hashref with configuration from New task
                    # 'comm' - contain Comment text
                    # 'name' - contain Name text
                    # 'link' - -||-
                    # 'mail' - -||-
    {
        $mfinit->{'comm'} =~ /^(.*?);(.*?);(.*?)$/;
        $mflocal{'config'} = {'file' => $1, 'start' => $2, 'end' => $3};
        $mflocal{'template'} = {
                                '1' => '<a href="_url_">_key_</a>',
                                '2' => '[url="_url_"]_key_[/url]',
                                '3' => '_url_ _key_',
                                };
        my $fp;
        foreach my $file ('nicks','mails','comments')
        {
            open $fp,'<:utf8',"./files/$file.txt";
            $mflocal{$file} = [];
            while(<$fp>)
            {
                s/\r?\n//g;
                push(@{$mflocal{$file}},$_);
            };
            close $fp;
        };
        open $fp,'<:utf8','./my_functions/'.$mflocal{'config'}->{'file'};
        $mflocal{'urls'} = [];
        while(<$fp>)
        {
                           s/\r|\n//g;
            if(/^(.*?)\Q$spliter\E(.*)$/)
            {
                push(@{$mflocal{'urls'}},[($1,split(/\Q$spliter\E/,$2))]);
            };
        };
        close $fp;
        $mflocal{'config'}->{'end'} = scalar(@{$mflocal{'urls'}}) if($mflocal{'config'}->{'end'} > scalar(@{$mflocal{'urls'}}));
        $mflocal{'config'}->{'start'} = $mflocal{'config'}->{'end'} if($mflocal{'config'}->{'start'} > $mflocal{'config'}->{'end'});
    };
    
    sub myfunc_getpost # $mfpostconfig - hashref with current post configuration
                        # 'url' - posting url
                        # 'activetype' - activelink type(html,bbcode,bbcode2,url,text), if simple base then undefined
                        # 'postnumber' - number of current post, start with 0
                    
                        # $mfpost - hashref for fill
                        # should be contain 'comm','link','mail','name' keys
    {
        my($tempurl,$tempkey,$temp);
    
        $a = int rand scalar @{$mflocal{'urls'}};
        $mfpost->{'link'} = $mflocal{'urls'}->[$a]->[0];
        $mfpost->{'name'} = ($nickiskey ? $mflocal{'urls'}->[$a]->[int(rand(scalar(@{$mflocal{'urls'}->[$a]})-1))+1]
                            : ($randnick ? ucfirst(rstr(8)) : $mflocal{'nicks'}->[int(rand(scalar(@{$mflocal{'nicks'}})))]));
        $mfpost->{'mail'} = ($randmail ? rstr(8).'@'.rstr(8).'.com' : $mflocal{'mails'}->[int(rand(scalar(@{$mflocal{'mails'}})))]);
        $mfpost->{'comm'} = $mflocal{'comments'}->[int(rand(scalar(@{$mflocal{'comments'}})))] . $comma;
    
    
        foreach(@{griarr($mflocal{'urls'},($mflocal{'config'}->{'start'}+int(rand($mflocal{'config'}->{'end'}-$mflocal{'config'}->{'start'}))))})
        {
            $tempurl = $firstadd . $mflocal{'urls'}->[$_]->[0];
            $tempkey = $mflocal{'urls'}->[$_]->[int(rand(scalar(@{$mflocal{'urls'}->[$_]})-1))+1];
            if($mfpostconfig->{'activetype'})
            {
                $mfpost->{'comm'} .= "<url>$tempurl|$tempkey</url>" . $comma;
            }
            else
            {
                foreach $temp (split(//,$showversion))
                {
                    $_ = $mflocal{'template'}->{$temp};
                    s/_url_/$tempurl/g;
                    s/_key_/$tempkey/g;
                    $mfpost->{'comm'} .= $_ . $comma;
                };
            };
        
            if($addtrash)
            {
                $mfpost->{'comm'} .= ' ';
                $_ = int(rand(3));
                if($_ == 1)
                {
                    $mfpost->{'comm'} .= chr(97+int(rand(26))) for(1..3+int(rand(4)));
                }
                elsif($_ == 2)
                {
                    $mfpost->{'comm'} .= chr(48+int(rand(10))) for(1..3+int(rand(4)));
                }
                else
                {
                    $mfpost->{'comm'} .= [':','8','=','%','>:']->[int(rand(5))] . (int(rand(2)) ? '-' : '') . [')','(',']','[','O','D','P']->[int(rand(7))] x (1+int(rand(3)));
                };
                $mfpost->{'comm'} .= $comma;
            };
        };
    
    };
    
    sub rstr { $_[1] .= chr(int(rand(26)+97)) for(1..$_[0]); return $_[1]; };
    sub griarr { my%h; for(1..$_[1]) { while((($a = int rand scalar @{$_[0]}) || 1) && (defined($h{$a}) || ($h{$a}++ && 0))){}; }; return [keys%h]; };
    
    Порядок использования функции
    1. Сохраняем код в файлик под именем my_function_random1.pl и заливаем в папку my_functions
    2. Заливаем базу доров формата http://dor.com/||key||key2||key3... в папку my_functions
    3. Заливаем ники, мыла и комменты в файлы files/nicks.txt, files/mails.txt и files/comments.txt
    4. Добавляем задание на спам My function, выбираем нашу функцию. В комментарии пишем doors.txt;10;15 где doors.txt это имя базы с дорами, 10 минимальное количество ссылок, 15 соответственно максимальное

    2. Аналог первой функции, только ссылки идут не рандомно а равномерно
    Код:
    ####### Config #######
    my $spliter = "||"; #Чем разделён урл и кей
    my $firstadd = ""; #Что добавить перед урлом
    my $showversion = "123"; #1 - <a href="url">key</a>, 2 - [url="url"]key[/url], 3 - url key
    my $comma = ", "; #Чем разделять урлы
    my $addtrash = 1; #Добавлять между ссылками буквы, цифры, смайлики
    my $randnick = 0; #Рандомные ники(например Xkjfsjzz)
    my $randmail = 0; #Рандомные майла(например [email][email protected][/email])
    my $nickiskey = 0; #Вместо ника подставляется кей для ссылки в поле url
    ##### End Config #####
    
    my %mflocal;
    
    sub myfunc_init # $mfinit - hashref with configuration from New task
                    # 'comm' - contain Comment text
                    # 'name' - contain Name text
                    # 'link' - -||-
                    # 'mail' - -||-
    {
        $mfinit->{'comm'} =~ /^(.*?);(.*?)$/;
        $mflocal{'config'} = {'file' => $1, 'part' => $2};
        $mflocal{'template'} = {
                                '1' => '<a href="_url_">_key_</a>',
                                '2' => '[url="_url_"]_key_[/url]',
                                '3' => '_url_ _key_',
                                };
        my $fp;
        foreach my $file ('nicks','mails','comments')
        {
            open $fp,'<:utf8',"./files/$file.txt";
            $mflocal{$file} = [];
            while(<$fp>)
            {
                s/\r?\n//g;
                push(@{$mflocal{$file}},$_);
            };
            close $fp;
        };
        open $fp,'<:utf8','./my_functions/'.$mflocal{'config'}->{'file'};
        $mflocal{'urls'} = [];
        while(<$fp>)
        {
            s/\r|\n//g;
            if(/^(.*?)\Q$spliter\E(.*)$/)
            {
                push(@{$mflocal{'urls'}},[($1,split(/\Q$spliter\E/,$2))]);
            };
        };
        close $fp;
        $mflocal{'config'}->{'part'} = scalar(@{$mflocal{'urls'}}) if($mflocal{'config'}->{'part'} > scalar(@{$mflocal{'urls'}}));
        $mflocal{'config'}->{'size'} = scalar(@{$mflocal{'urls'}});
        $mflocal{'config'}->{'curpart'} = -1;
    };
    
    sub myfunc_getpost # $mfpostconfig - hashref with current post configuration
                        # 'url' - posting url
                        # 'activetype' - activelink type(html,bbcode,bbcode2,url,text), if simple base then undefined
                        # 'postnumber' - number of current post, start with 0
                    
                        # $mfpost - hashref for fill
                        # should be contain 'comm','link','mail','name' keys
    {
        my($tempurl,$tempkey,$temp);
    
        $a = int rand scalar @{$mflocal{'urls'}};
        $mfpost->{'link'} = $mflocal{'urls'}->[$a]->[0];
        $mfpost->{'name'} = ($nickiskey ? $mflocal{'urls'}->[$a]->[int(rand(scalar(@{$mflocal{'urls'}->[$a]})-1))+1]
                            : ($randnick ? ucfirst(rstr(8)) : $mflocal{'nicks'}->[int(rand(scalar(@{$mflocal{'nicks'}})))]));
        $mfpost->{'mail'} = ($randmail ? rstr(8).'@'.rstr(8).'.com' : $mflocal{'mails'}->[int(rand(scalar(@{$mflocal{'mails'}})))]);
        $mfpost->{'comm'} = $mflocal{'comments'}->[int(rand(scalar(@{$mflocal{'comments'}})))] . $comma;
    
    
        foreach(@{griarr()})
        {
            $tempurl = $firstadd . $mflocal{'urls'}->[$_]->[0];
            $tempkey = $mflocal{'urls'}->[$_]->[int(rand(scalar(@{$mflocal{'urls'}->[$_]})-1))+1];
            if($mfpostconfig->{'activetype'})
            {
                $mfpost->{'comm'} .= "<url>$tempurl|$tempkey</url>" . $comma;
            }
            else
            {
                foreach $temp (split(//,$showversion))
                {
                    $_ = $mflocal{'template'}->{$temp};
                    s/_url_/$tempurl/g;
                    s/_key_/$tempkey/g;
                    $mfpost->{'comm'} .= $_ . $comma;
                };
            };
        
            if($addtrash)
            {
                $mfpost->{'comm'} .= ' ';
                $_ = int(rand(3));
                if($_ == 1)
                {
                    $mfpost->{'comm'} .= chr(97+int(rand(26))) for(1..3+int(rand(4)));
                }
                elsif($_ == 2)
                {
                    $mfpost->{'comm'} .= chr(48+int(rand(10))) for(1..3+int(rand(4)));
                }
                else
                {
                    $mfpost->{'comm'} .= [':','8','=','%','>:']->[int(rand(5))] . (int(rand(2)) ? '-' : '') . [')','(',']','[','O','D','P']->[int(rand(7))] x (1+int(rand(3)));
                };
                $mfpost->{'comm'} .= $comma;
            };
        };
    
    };
    
    sub rstr { $_[1] .= chr(int(rand(26)+97)) for(1..$_[0]); return $_[1]; };
    sub griarr
    {
        $mflocal{'config'}->{'curpart'}++;
        if($mflocal{'config'}->{'part'}*$mflocal{'config'}->{'curpart'} >= $mflocal{'config'}->{'size'})
        {
            $mflocal{'config'}->{'curpart'} = 0;
        };
        $a = $mflocal{'config'}->{'curpart'} * $mflocal{'config'}->{'part'};
        $b = $a + $mflocal{'config'}->{'part'};
        $b = $mflocal{'config'}->{'size'} if($b > $mflocal{'config'}->{'size'});
        $b--;
        return [$a..$b];
    };
    
    Порядок использования функции
    1. Сохраняем код в файлик под именем my_function_random2.pl и заливаем в папку my_functions
    2. Заливаем базу доров формата http://dor.com/||key||key2||key3... в папку my_functions
    3. Заливаем ники, мыла и комменты в файлы files/nicks.txt, files/mails.txt и files/comments.txt
    4. Добавляем задание на спам My function, выбираем нашу функцию. В комментарии пишем doors.txt;10 где doors.txt это имя базы с дорами, 10 - количество линков в посте
     
    Последнее редактирование: 5 июн 2015
  2. qazwsxedc

    qazwsxedc A-Parser Pro License A-Parser Pro

    Что надо исправить, чтоб брать базу для не в папке my_functions а по прямому пути к файлу, что то как не пробовал все никак.
     
  3. Forbidden

    Forbidden Administrator Команда форума A-Parser Enterprise

    необходимо поменять эту строчку:
    Код:
    open $fp,'<:utf8','./my_functions/'.$mflocal{'config'}->{'file'};
    примерно так:
    Код:
    open $fp,'<:utf8','/path/to/file';
     
    qazwsxedc нравится это.
  4. qazwsxedc

    qazwsxedc A-Parser Pro License A-Parser Pro

    Так делал, но что то не запустилось. Будем пробовать.
     

Поделиться этой страницей