Настроение: | sick |
Музыка: | Подорожный - АБВГДЭЙКА |
GD::SecurityImage::AC
В старый форум Imperium.lenin.ru ходят
дикими толпами ополоумевшие роботы и спамят в форум.
Все их сообщения сводятся к
``Your username/password combination was invalid, or you
do not have permission to post to this topic. You may
revise your username and password using the form at the
bottom of this page.''
но это их совершенно не останавливает. Очевидно,
роботами управляет какая-то программа, которая сломана.
Я провел весь вечер, изучая антиспамный софт.
Результат моих трудов видно вот тут
http://imperium.lenin.ru/DISCUS/test-capcha.cgi
это программа, которая показывает антиспамную
картинку, и если вы введете в формочку
правильные буковки, она вам скажет
``Your results: 1'', а в противном
случае ``-3''.
Потом я сел править форум, и даже прикрутил
машинку; но тут оказалось, что форумом получается
дико неудобно пользоваться. Можно было бы его
конечо убить, но кто-то им, кажется, все еще
пользуется, так что это неправильно.
В результате я просто переименовал поля
формы, куда роботы вбивают свое барахло;
хочется думать, что это их остановит.
Если кому нужно, вот антиспамный скриптец,
который дальше можно куда-нибудь привертеть.
#!/usr/bin/perl
use GD::SecurityImage::AC;
use CGI qw[header escapeHTML param];
my $public_folder= "/home/imperium/p/DISCUS/captcha-public/";
my $private_folder= "/home/imperium/discus-adm/captcha/";
my $captcha_url = "/DISCUS/captcha-public/";
my $self = bless {}, __PACKAGE__;
$self->{cgi} = CGI->new;
$self->{program} = $self->{cgi}->url;my @jp;($self->{program},@jp) = split /\?/, $self->{program};
$color = [15, 100, 75]; # HEX
my $captcha = Authen::Captcha->new;
$captcha->data_folder("$private_folder");
$captcha->output_folder("$public_folder");
my $number_of_characters=4;
$captcha -> gdsi (
new => {width => 380, thickness => 3,
height => 150,
lines => 10,
gd_font => 'Giant',
font => "/home/imperium/cgi/comic.ttf",
ptsize => 47,
scramble => 1,
},
create => [ ttf => 'ec', $color, $color],
particle => [165],
);
$code = param("captcha");
my $md5sum = "";
if ($code eq "")
{
$md5sum = $captcha->generate_code($number_of_characters);
print_form();
}
else
{
$md5sum_form = param("md5sum");
my $results = $captcha->check_code($code,$md5sum_form);
print "Content-type: text/html
Your code: $code, your md5sum: $md5sum_form
Your results: $results";
}
sub print_form
{
print <<EOF;
Content-type: text/html
<img src=$captcha_url/$md5sum.png>
<FORM ACTION="$self->{program}" method=post>
<INPUT TYPE=HIDDEN NAME="md5sum" value="$md5sum">
<INPUT NAME="captcha" SIZE=10><p>
</form>
EOF
}
а вот полезные ссылки
[ 1 | 2 ]
Спаммеров надо убивать. Самым жестоким образом.
Ужасно пытать, а потом убивать.
Привет