Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2007-02-14 22:24:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: 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 ]

Спаммеров надо убивать. Самым жестоким образом.
Ужасно пытать, а потом убивать.

Привет


(Читать комментарии)

Добавить комментарий:

Как:
(комментарий будет скрыт)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Имя пользователя:
Пароль:
Тема:
HTML нельзя использовать в теме сообщения
Сообщение:



Обратите внимание! Этот пользователь включил опцию сохранения IP-адресов пишущих комментарии к его дневнику.