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 - количество линков в посте
Что надо исправить, чтоб брать базу для не в папке my_functions а по прямому пути к файлу, что то как не пробовал все никак.
необходимо поменять эту строчку: Код: open $fp,'<:utf8','./my_functions/'.$mflocal{'config'}->{'file'}; примерно так: Код: open $fp,'<:utf8','/path/to/file';